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

6.13 Ключ может быть произвольного типа

Опубликовано: Обновлено:

Telegram → Просто о платформе 1С


❓ 6.13 Ключ может быть произвольного типа у


❓ 6.13 Ключ может быть произвольного типа

В платформе существуют универсальные коллекции значений: Массив, Структура, Соответствие, ТаблицаЗначений, ДеревоЗначений и другие.

Они позволяют хранить наборы значений

Рассмотрим три часто используемые коллекции.

Массив — упорядоченная коллекция элементов.

Каждый элемент имеет индекс, причем нумерация начинается с 0.

Числа = Новый Массив;
Числа.Добавить(10);
Числа.Добавить(20);
Числа.Добавить(30);
ВтороеЧисло = Числа[1]; // 20

Здесь 1 — это индекс элемента, а не ключ.

При удалении элемента следующие элементы сдвигаются, и их индексы изменяются. Поэтому при удалении элементов массива необходимо идти с конца к началу:

Индекс = Числа.ВГраница();
Пока Индекс >= 0 Цикл
Если Числа[Индекс] < 10 Тогда
Числа.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;

Структура хранит пары:

ключ → значение

Параметры = Новый Структура;
Параметры.Вставить("Количество", 10);
Параметры.Вставить("Активен", Истина);

Ключ структуры — строка, содержащая имя элемента структуры.

Получить значение можно двумя способами:

Количество = Параметры["Количество"];

или через точку:

Количество = Параметры.Количество;

Именно возможность обращаться к элементам как к свойствам (через точку) делает Структуру удобной для хранения именованных параметров.

Соответствие также хранит пары:

ключ → значение

Но в отличие от Структуры, ключ здесь не является именем свойства.

Например:

Цены = Новый Соответствие;
Цены.Вставить("Хлеб", 70);
Цены.Вставить("Молоко", 100);
Цена = Цены["Хлеб"];

В качестве ключа можно использовать не только строку.

Например, число:

Данные = Новый Соответствие;
Данные.Вставить(1001, "Первый");
Данные.Вставить(1002, "Второй");
Значение = Данные[1001];

Или ссылку на объект информационной базы:

ДанныеПоКонтрагентам.Вставить(
Контрагент,
ДанныеКонтрагента
);

Именно эти коллекции чаще всего сравнивают между собой.

СтруктураСоответствие
Хранит пары ключ → значениеДаДа
КлючСтроковое имя элементаЗначение произвольного типа
Доступ через []ДаДа
Доступ через точкуДаНет

Структура удобна, когда нужно передать набор именованных параметров:

Параметры.ДатаНачала
Параметры.Количество
Параметры.Организация

Соответствие удобно, когда необходимо связать одно значение с другим:

Контрагент → Договор
Номенклатура → Цена
Код → Значение

Массив обращается к элементам по числовому индексу.

Структура хранит элементы с именованными строковыми ключами, к которым можно обращаться через точку.

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