Соответствие в языке программирования 1С чем-то похоже на Структуру, это тоже коллекция пар Ключ и значение. Но в отличие от Структуры, в Соответствие, чтобы получить значение по определенному ключу, нужно обращаться не как к свойству объекта, а через квадратные скобки, и в качестве ключа можно использовать значение любого типа.
Структура: Структура1.Ключ1
Соответствие: Соответствие1[«Ключ1»]
Соответствие можно создать на всех видах клиентов и в любом контексте. Сериализируется, т.е. можно передать переменную с типом соответствие с клиентского контекста на серверный.
Хоть и в ключ и значение соответствия можно записать переменные любого типа, использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском задать в ключ или значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>).
Новое соответствие создается при помощи конструктора Новый.
Соответствие1 = Новый Соответствие;
Для того, чтобы добавить новый элемент соответствия, необходимо использовать метод Вставить, который имеет следующий синтаксис:
Вставить(<Ключ>, <Значение>)
Параметр «Ключ» может иметь любой тип! Это очень важное свойство, таким образом, с помощью коллекции Соответствие можно в процессе работы устанавливать соответствие любых объектов с любыми объектами.
Простой пример работы с соответствием:
Соответствие1 = Новый Соответствие; Соответствие1.Вставить("Ключ1","Ключ тип строка"); Соответствие1.Вставить(1,"Ключ тип число"); Соответствие1.Вставить(Дата(2017,12,10),"Ключ тип дата"); //Выведем значения ключей Сообщить(Соответствие1["Ключ1"]); Сообщить(Соответствие1[1]); Сообщить(Соответствие1[Дата(2017,12,10)]);
Для того чтобы поменять значение какого-нибудь элемента, который соответствует определенному ключу, достаточно для этого ключа присвоить новое значение.
Соответствие1.Вставить(1,"Ключ тип ""число""");
Поменять имеющееся значение можно, также используя квадратные скобки.
Соответствие1[1] = "Ключ тип ""число""";
Обход соответствия 1С
Обходить соответствие можно с помощью цикла Для каждого…Цикл.
Соответствие1 = Новый Соответствие; Соответствие1.Вставить("Ключ1","Ключ тип строка"); Соответствие1.Вставить(1,"Ключ тип число"); Соответствие1.Вставить(Дата(2017,12,10),"Ключ тип дата"); Для Каждого ЭлементСоответствия из Соответствие1 цикл Сообщить("Соответствие1 [" + Строка(ЭлементСоответствия.Ключ) + "] = " + ЭлементСоответствия.Значение); КонецЦикла;
Безошибочное получении значения соответствия 1С
Как Вы уже поняли, для того чтобы получить значение элемента соответствия, мы используем квадратные скобки. Но иногда возможны ситуации, когда применение квадратных скобок неосуществимо. В таких случаях мы можем использовать метод Получить, который возвращает любое значение, соответствующее ключу. Если такого ключа нет, то вернется значение Неопределено
Рассмотрим работу данного метода на соответствии с датами в качестве ключей.
Соответствие1 = Новый Соответствие; Соответствие1.Вставить(Дата(2017,12,1), "Число 2"); Соответствие1.Вставить(Дата(2017,12,2), "Число 3"); Соответствие1.Вставить(Дата(2017,12,3), "Число 1"); Соответствие1.Вставить(Дата(2017,12,4), "Число 6"); //Используем метод Получить ЭлСоотвествия1 = Соответствие1.Получить(Дата(2017,12,4)); ЭлСоотвествия2 = Соответствие1.Получить(Дата(2017,12,5)); //выведем в сообщения полученные значения Сообщить(?(ЗначениеЗаполнено(ЭлСоотвествия1),ЭлСоотвествия1,"Неопределено")); Сообщить(?(ЗначениеЗаполнено(ЭлСоотвествия2),ЭлСоотвествия2,"Неопределено"));
Статьи о других универсальных коллекциях значений в 1С
Более подробно о работе с соответствиями и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
В статье упущен важный момент.
Цитирую: «Но в отличие от Структуры, в Соответствие, чтобы получить значение по определенному ключу, нужно обращаться не как к свойству объекта, а через квадратные скобки, и в качестве ключа можно использовать значение любого типа.»
В чем ошибка. Обращение к значению соответствия через [ ] возможно и для структуры: МояСтруктура[«Ключ1»] — тоже можно использовать. Поэтому в отличие от Структуры, чтобы получить значение по определенному ключу, можно обращаться только через квадратные скобки или используя метод «Получить», в то время как в Структуре к значению по определенному ключу можно обратиться еще и по имени свойства через точку.