Коллекции значений 1С
Что такое универсальные коллекции
Универсальные коллекции значений живут в памяти сеанса. Они не описываются в метаданных и не хранятся в базе сами по себе. Создаются оператором Новый и уничтожаются при завершении контекста (процедуры, модуля, формы).
| Коллекция | Ключ доступа | Порядок |
|---|---|---|
Массив | Индекс с 0 | Да |
Структура | Имя свойства | Нет |
Соответствие | Произвольный ключ | Нет |
СписокЗначений | Индекс + представление | Да |
Подробнее про Массив и сводку операций — в 114.md. Табличные данные с колонками — 125.md. Логичный порядок изучения — сначала коллекции, затем таблицы.
Массив
МассивИмен = Новый Массив;
МассивИмен.Добавить("Анна");
МассивИмен.Вставить(0, "Борис"); // теперь Борис первый
Для Индекс = 0 По МассивИмен.ВГраница() Цикл
Сообщить(МассивИмен[Индекс]);
КонецЦикла;
Для Каждого Имя Из МассивИмен Цикл
Сообщить(Имя);
КонецЦикла;
Операции Массив:
| Действие | Метод |
|---|---|
| Добавить в конец | Добавить(Значение) |
| Вставить | Вставить(Индекс, Значение) |
| Прочитать | [Индекс] или Получить(Индекс) |
| Заменить | Установить(Индекс, Значение) |
| Удалить | Удалить(Индекс) |
| Очистить | Очистить() |
| Найти значение | Найти(Значение) |
Многомерный массив — элементом может быть другой массив: Строка = Матрица[2][0];
Структура
Структура хранит именованные поля произвольных типов. Удобна для параметров и возврата нескольких значений из функции.
Параметры = Новый Структура;
Параметры.Вставить("Склад", СсылкаНаСклад);
Параметры.Вставить("Дата", ТекущаяДата());
// или при создании
Параметры = Новый Структура("Склад, Дата", СсылкаНаСклад, ТекущаяДата());
Если Параметры.Свойство("Склад") Тогда
Сообщить(Параметры.Склад);
КонецЕсли;
Операции Структура:
| Действие | Метод / синтаксис |
|---|---|
| Добавить / заменить | Вставить(Имя, Значение) |
| Прочитать | Структура.Имя |
| Проверить наличие | Свойство(Имя, Переменная) |
| Удалить | Удалить(Имя) |
| Обход | Для Каждого КлючИЗначение Из Структура Цикл |
| Очистить | Очистить() |
Безопасное чтение — всегда проверяйте Свойство или используйте значение по умолчанию, если ключ мог не передаться.
Соответствие
Соответствие — словарь: ключ любого сравнимого типа, значение любого типа. Быстрее структуры при большом числе произвольных ключей.
КэшЦен = Новый Соответствие;
КэшЦен.Вставить(НоменклатураСсылка, 1250.50);
Цена = КэшЦен.Получить(НоменклатураСсылка);
Если Цена = Неопределено Тогда
Цена = 0;
КонецЕсли;
| Действие | Метод |
|---|---|
| Добавить / заменить | Вставить(Ключ, Значение) |
| Прочитать | Получить(Ключ) → Неопределено, если нет |
| Удалить | Удалить(Ключ) |
| Обход | Для Каждого Элемент Из Соответствие Цикл |
| Очистить | Очистить() |
СписокЗначений
СписокЗначений — упорядоченный список с значением и представлением (то, что видит пользователь в выпадающем списке).
Список = Новый СписокЗначений;
Список.Добавить(Справочники.Склады.Основной, "Основной склад");
Список.Добавить(Склад2, "Филиал");
Выбранный = Список.НайтиПоЗначению(Склад2);
Если Выбранный <> Неопределено Тогда
Сообщить(Выбранный.Представление);
КонецЕсли;
| Действие | Метод |
|---|---|
| Добавить | Добавить(Значение, Представление, Пометка) |
| Вставить | Вставить(Индекс, …) |
| Загрузить массив | ЗагрузитьЗначения(Массив) |
| Выгрузить | ВыгрузитьЗначения() |
| Сортировка | СортироватьПоЗначению(), СортироватьПоПредставлению() |
| Сдвиг | Сдвинуть(Индекс, Смещение) |
На формах список значений часто привязывают к полю выбора с множественным отбором.
Какую коллекцию выбрать
| Задача | Коллекция |
|---|---|
| Список однотипных значений по порядку | Массив |
| Именованные параметры процедуры | Структура |
| Кэш «ссылка → значение» | Соответствие |
| UI-список с подписями | СписокЗначений |
| Таблица с колонками и тысячами строк | ТаблицаЗначений |
Лаборатория — 45 минут
- Функция
РазбитьСтрокуCSV(Строка)возвращаетМассивчастей черезСтрРазделить(или цикл сНайти). - Функция
ПараметрыОтчета()возвращаетСтруктурас датами и складом. - Процедура заполняет
Соответствиецен по 5 элементам номенклатуры и читает цену по ссылке. - Заполните
СписокЗначенийскладами и отсортируйте по представлению.
Проверка себя
- Почему индекс массива начинается с нуля?
- Когда
Получитьсоответствия вернётНеопределено? - Чем
Структураотличается отСоответствиепри передаче вОткрытьФорму?
Связанные материалы
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Платформа 1С - архитектура среды исполнения, назначение и место в автоматизации бизнес-процессов. История 1С - развитие платформы, ключевые этапы роста и влияние на цифровизацию бизнеса и госсектора. Экосистема 1С - продукты платформы, инструменты разработки, внедрение и сопровождение корпоративных решений. Архитектура платформы 1С, объекты метаданных, регистры, модули и исполнение прикладного кода. Пошаговое создание учебной конфигурации: справочники, документ, регистры, проведение, подсистемы и роли. Синтаксис и пунктуация 1С - базовые правила записи кода, операторы и структура выражений. Типизация, набор правил определения типа данных значений языка. Управление потоком выполнения в 1С - последовательность операций, ветвления и контроль выполнения сценариев. Функции и процедуры 1С - различия, правила использования и организация переиспользуемой бизнес-логики. Объекты и классы 1С - модель метаданных, экземпляры объектов и работа с прикладными сущностями. Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок в 1С - перехват исключений, диагностика сбоев и устойчивые сценарии обработки.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Конфигурирование — мини-склад
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Функции и процедуры 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С