Соответствие 1с- это коллекция объектов типа Ключ-Значение. Порядок обхода элементов соответствует порядку добавления элементов в соответствие. Соответствие позволяет хранить элементы произвольных типов.
Описывает коллекцию значений, каждое из которых имеет уникальный идентификатор (а рамках коллекции). Соответствие относится к универсальным коллекциям значений 1с.
Создание и работа с коллекцией «Соответствие» в 1С 8.3
Создать новую универсальную коллекцию «Соответствие», можно сделать, воспользовавшись конструктором «Новый», как показано ниже:
НовоеСоотвестветствие= Новый Соответствие;
Добавление значения в коллекцию “Соответствие” выполняется с помощью ключевого слова “Вставить”. Синтаксис:
НовоеСоотвестветствие.Вставить(Ключ, Значение);
Пример.
НовоеСоотвестветствие.Вставить(1,"Понедельник");
Так как значение типа ключа абсолютно любое, то коллекция «Соответствие» обеспечивает проставление связей между любыми объектами.
Структура | Соответствие |
Структура1.Ключ1 | Соответствие1[“Ключ1”] |
Соответствие можно создать на всех видах клиентов и в любом контексте. Сериализируется, т.е. можно передать переменную с типом структура с клиентского контекста на серверный. Хоть и в ключ и значение соответствия можно записать переменные любого типа, использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском задать в ключ или значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>)
Метод Соответствия «Вставить»
Метод Вставить для Соответствия работает точно так же, как для Структуры.
Он имеет следующий синтаксис:
Вставить(<Ключ>, <Значение>
Выполните следующий пример: установите соответствие с ключами трех типов: строка,
число и дата. И выведите значения этих ключей на экран. Для наглядности переформулируем задачу. В Соответствие добавьте 3 значения:
- Фамилию Имя Отчество
- ДатуРождения
- Возраст
&НаКлиенте
Процедура СоответствиеМетодВставить(Команда)
Возраст=20;
ДатаРождения=Дата("20000101");
Соответствие1 = Новый Соответствие;
Соответствие1.Вставить("Фамилию Имя Отчество", "Умный Умник Умникович");
Соответствие1.Вставить(1,Возраст);
Соответствие1.Вставить(Дата(2017,12,10), ДатаРождения);
Сообщить(Соответствие1["Ключ1"]);
Сообщить(Соответствие1[1]);
Сообщить(Соответствие1[Дата(2017,12,10)]);
КонецПроцедуры
Обход Соответствия 1с
Обходить наше соответствие с помощью цикла Для каждого…Цикл.
Создадим новую команду, обработчик команды на клиенте, скопируем в этот обработчик код
создания соответствия и выполним обход:
&НаКлиенте
Процедура СоответствиеОбход(Команда)
Соответствие1 = Новый Соответствие;
Для Каждого ЭлементСоответствия из Соответствие1 цикл
Сообщить("Соответствие1 [" +
Строка(ЭлементСоответствия.Ключ) + "] = " +
ЭлементСоответствия.Значение);
КонецЦикла;
КонецПроцедуры