Какие универсальные коллекции нельзя передавать между клиентом и сервером при работе в 1с?
1. Структуры (Структура)
-
Описание. Упорядоченный набор пар «ключ → значение».
-
Когда использовать. Параметры процедуры/запроса, настройки, однородные свойства объекта.
**Синтаксис создания:
<br/>**Параметры = Новый Структура("Имя, Возраст, Активен", "Амин", 30, Истина);
**Доступ к элементам:
<br/>**Знач = Параметры.Имя; // через точку
Знач = Параметры\["Возраст"\]; // через индекс
-
**Методы:
**-
Вставить(Ключ, Значение) — добавить/заменить;
-
Удалить(Ключ) — убрать элемент;
-
Ключи() — массив ключей;
-
Копировать() — глубокое клонирование.
-
-
**Особенности.
**-
Сохраняет порядок добавления.
-
При обращении к несуществующему ключу через точку — ошибка.
-
2. Соответствия (Соответствие)
-
Описание. Неупорядоченный словарь «ключ → значение» с быстрым поиском.
-
Когда использовать. Кэш, хранилище настроек на лету, сопоставления справочников или регистров.
**Синтаксис создания:
<br/>**Маппинг = Новый Соответствие;
Маппинг.Вставить("A", 100);
**Доступ:
<br/>**Есть = Маппинг.СодержитКлюч("A");
Знач = Маппинг\["A"\]; // вернёт Неопределено, если нет
-
**Методы:
**- Вставить, Удалить, Ключи(), Значения(), Количество().
-
**Особенности.
**-
Нет гарантии порядка при итерации.
-
Быстрее при большом количестве элементов (> 500).
-
3. СписокЗначений (СписокЗначений)
-
Описание. Одномерный упорядоченный список произвольных значений.
-
Когда использовать. Передача набора параметров в запрос (IN-условия), аккумулирование результатов.
**Синтаксис создания:
<br/>**Список = Новый СписокЗначений;
Список.Добавить(1);
Список.Добавить("ABC");
-
**Методы:
**-
Добавить(Значение);
-
Получить(i) — по индексу (от 0);
-
Количество(), Очистить().
-
-
**Особенности.
**
Позволяет передавать список прямо в параметр запроса:
<br/>Запрос.Параметры.Вставить("СписокКодов", Список);
4. МассивЗначений (МассивЗначений)
-
Описание. Более «сырой» коллекция, похожая на СписокЗначений, но без проверок типов.
-
Когда использовать. В сценариях низкоуровневой работы с COM/OLE, когда нужно быстро накапливать данные.
-
Синтаксис и методы: аналогичны СпискуЗначений (Добавить, Получить, Количество).
5. ТаблицаЗначений (ТаблицаЗначений)
-
Описание. Двумерная таблица строк и колонок, где колонки имеют свои имена и типы.
-
Когда использовать. Временные табличные данные, промежуточные результаты расчётов, формирование выводимых отчётов.
**Синтаксис создания:
<br/>**Табл = Новый ТаблицаЗначений;
Табл.Колонки.Добавить("Код", Тип("Число"));
Табл.Колонки.Добавить("Наименование", Тип("Строка", 50));
**Работа с данными:
<br/>**Стр = Табл.Добавить();
Стр.Код = 1;
Стр.Наименование = "Товар";
Для Каждого СтрИзп Из Табл Цикл
// обработка строки
КонецЦикла;
-
**Методы:
**- Добавить(), УдалитьСтроку(Индекс), НайтиСтроки(Условие), ОтборПоЗначению, Скопировать(), Сортировать(Колонки, Порядок).
-
**Особенности.
**-
Можно сохранять в регистр или выгружать в XML/JSON.
-
Поддерживает отбор и сортировку по составным условиям.
-
6. Обобщённые коллекции
Кроме перечисленных, в платформе есть ещё:
-
Массив (низкоуровневый Массив, иногда используется для системных вызовов).
-
**Запрос-объекты** и **НаборЗаписей** (обёртки над ТаблицаЗначений`).
-
Итераторы — специальные объекты для построчной обработки больших выборок без загрузки всего набора.
7. Выбор коллекции по задаче
Задача | Коллекция |
---|---|
Передать список параметров в запрос | СписокЗначений |
--- | --- |
Словарь «ключ → значение», быстрая выборка | Соответствие |
--- | --- |
Упорядоченный набор параметров | Структура |
--- | --- |
Табличный результат расчётов/отчётов | ТаблицаЗначений |
--- | --- |
Низкоуровневые массивы и COM-интеграция | МассивЗначений / Массив |
--- | --- |
Рекомендации
-
Не перегружайте Структуру большим объёмом данных — для этого лучше ТаблицаЗначений или Соответствие.
-
Используйте СписокЗначений для передачи массивов в SQL-запросах через параметр IN.
-
Кешируйте результаты в ОбщихМодулях с помощью Соответствия для повторного быстрого доступа.
-
Промежуточные результаты отчётов формируйте в ТаблицеЗначений, а для отображения в UI используйте ОтчетПоСписку или управляемые формы.
Знание каждой из этих коллекций и понимание их особенностей позволяет строить чистый, эффективный и легко поддерживаемый код на платформе 1С.