Перейти к основному содержимому

Коллекции значений 1С

Разработчику
Загрузка эмулятора 1С…

Что такое универсальные коллекции

Универсальные коллекции значений живут в памяти сеанса. Они не описываются в метаданных и не хранятся в базе сами по себе. Создаются оператором Новый и уничтожаются при завершении контекста (процедуры, модуля, формы).

КоллекцияКлюч доступаПорядок
МассивИндекс с 0Да
СтруктураИмя свойстваНет
СоответствиеПроизвольный ключНет
СписокЗначенийИндекс + представлениеДа

Подробнее про Массив и сводку операций — в 114.md. Табличные данные с колонками — 125.md. Логичный порядок изучения — сначала коллекции, затем таблицы.


Массив

МассивИмен = Новый Массив;
МассивИмен.Добавить("Анна");
МассивИмен.Вставить(0, "Борис"); // теперь Борис первый

Для Индекс = 0 По МассивИмен.ВГраница() Цикл
Сообщить(МассивИмен[Индекс]);
КонецЦикла;

Для Каждого Имя Из МассивИмен Цикл
Сообщить(Имя);
КонецЦикла;

Операции Массив:

ДействиеМетод
Добавить в конецДобавить(Значение)
ВставитьВставить(Индекс, Значение)
Прочитать[Индекс] или Получить(Индекс)
ЗаменитьУстановить(Индекс, Значение)
УдалитьУдалить(Индекс)
ОчиститьОчистить()
Найти значениеНайти(Значение)

Многомерный массив — элементом может быть другой массив: Строка = Матрица[2][0];


Структура

Структура хранит именованные поля произвольных типов. Удобна для параметров и возврата нескольких значений из функции.

Параметры = Новый Структура;
Параметры.Вставить("Склад", СсылкаНаСклад);
Параметры.Вставить("Дата", ТекущаяДата());

// или при создании
Параметры = Новый Структура("Склад, Дата", СсылкаНаСклад, ТекущаяДата());

Если Параметры.Свойство("Склад") Тогда
Сообщить(Параметры.Склад);
КонецЕсли;

Операции Структура:

ДействиеМетод / синтаксис
Добавить / заменитьВставить(Имя, Значение)
ПрочитатьСтруктура.Имя
Проверить наличиеСвойство(Имя, Переменная)
УдалитьУдалить(Имя)
ОбходДля Каждого КлючИЗначение Из Структура Цикл
ОчиститьОчистить()

Безопасное чтение — всегда проверяйте Свойство или используйте значение по умолчанию, если ключ мог не передаться.


Соответствие

Соответствие — словарь: ключ любого сравнимого типа, значение любого типа. Быстрее структуры при большом числе произвольных ключей.

КэшЦен = Новый Соответствие;
КэшЦен.Вставить(НоменклатураСсылка, 1250.50);

Цена = КэшЦен.Получить(НоменклатураСсылка);
Если Цена = Неопределено Тогда
Цена = 0;
КонецЕсли;
ДействиеМетод
Добавить / заменитьВставить(Ключ, Значение)
ПрочитатьПолучить(Ключ)Неопределено, если нет
УдалитьУдалить(Ключ)
ОбходДля Каждого Элемент Из Соответствие Цикл
ОчиститьОчистить()

СписокЗначений

СписокЗначений — упорядоченный список с значением и представлением (то, что видит пользователь в выпадающем списке).

Список = Новый СписокЗначений;
Список.Добавить(Справочники.Склады.Основной, "Основной склад");
Список.Добавить(Склад2, "Филиал");

Выбранный = Список.НайтиПоЗначению(Склад2);
Если Выбранный <> Неопределено Тогда
Сообщить(Выбранный.Представление);
КонецЕсли;
ДействиеМетод
ДобавитьДобавить(Значение, Представление, Пометка)
ВставитьВставить(Индекс, …)
Загрузить массивЗагрузитьЗначения(Массив)
ВыгрузитьВыгрузитьЗначения()
СортировкаСортироватьПоЗначению(), СортироватьПоПредставлению()
СдвигСдвинуть(Индекс, Смещение)

На формах список значений часто привязывают к полю выбора с множественным отбором.


Какую коллекцию выбрать

ЗадачаКоллекция
Список однотипных значений по порядкуМассив
Именованные параметры процедурыСтруктура
Кэш «ссылка → значение»Соответствие
UI-список с подписямиСписокЗначений
Таблица с колонками и тысячами строкТаблицаЗначений

Лаборатория — 45 минут

  1. Функция РазбитьСтрокуCSV(Строка) возвращает Массив частей через СтрРазделить (или цикл с Найти).
  2. Функция ПараметрыОтчета() возвращает Структура с датами и складом.
  3. Процедура заполняет Соответствие цен по 5 элементам номенклатуры и читает цену по ссылке.
  4. Заполните СписокЗначений складами и отсортируйте по представлению.

Проверка себя

  • Почему индекс массива начинается с нуля?
  • Когда Получить соответствия вернёт Неопределено?
  • Чем Структура отличается от Соответствие при передаче в ОткрытьФорму?

Связанные материалы

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").