Учимся работать с соответствием в 1С 8.3

Соответствие в языке программирования 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 = Новый Соответствие;
Соответствие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С

Список значений в 1С

Таблица значений в 1С

Более подробно о работе с соответствиями и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 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

One Reply to “Учимся работать с соответствием в 1С 8.3”

  1. В статье упущен важный момент.
    Цитирую: «Но в отличие от Структуры, в Соответствие, чтобы получить значение по определенному ключу, нужно обращаться не как к свойству объекта, а через квадратные скобки, и в качестве ключа можно использовать значение любого типа.»

    В чем ошибка. Обращение к значению соответствия через [ ] возможно и для структуры: МояСтруктура[«Ключ1»] — тоже можно использовать. Поэтому в отличие от Структуры, чтобы получить значение по определенному ключу, можно обращаться только через квадратные скобки или используя метод «Получить», в то время как в Структуре к значению по определенному ключу можно обратиться еще и по имени свойства через точку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *