Какие универсальные коллекции нельзя передавать между клиентом и сервером при работе в 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-интеграция МассивЗначений / Массив
--- ---

Рекомендации

  1. Не перегружайте Структуру большим объёмом данных — для этого лучше ТаблицаЗначений или Соответствие.

  2. Используйте СписокЗначений для передачи массивов в SQL-запросах через параметр IN.

  3. Кешируйте результаты в ОбщихМодулях с помощью Соответствия для повторного быстрого доступа.

  4. Промежуточные результаты отчётов формируйте в ТаблицеЗначений, а для отображения в UI используйте ОтчетПоСписку или управляемые формы.

Знание каждой из этих коллекций и понимание их особенностей позволяет строить чистый, эффективный и легко поддерживаемый код на платформе 1С.