Структура и соответствие 1с отличия

Соответствие и структура очень близкие по сути коллекции.
Соответствие – это коллекция пар ключ и значение.
Структура – это коллекция пар ключ и значение.

Как видите, из определений объектов не отличишь структуру от соответствия, а разница между ними есть и находится в свойстве Ключ. Ключ в структуре может быть только строкой, а в соответствии может быть любым типом.

Что понимается под словом «Ключ»? Ключ – это ключевое поле которое не может иметь двух одинаковых значений – является уникальным в пределах коллекции. Т.е. если мы попытаемя в структуру имеющую ключ "Номенклатура" и значение "Диван" поместить такой же ключ, но с значением "Кресло", то программа просто заменит старое значение "Диван" на новое "Кресло", а не добавит ещё один ключ "Номенклатура" со значением "Кресло".

Основное использование объекта типа "Структура":

Этот объект часто используется в качестве способа передачи параметров в процедуры и функции.

Основное использование объекта типа "Соответствие":

Имя типа объекта оправдывает свое название, соответственно можно связывать два разных объекта системы, что позволяет избежать ипользования ТЗ с двумя колонками.

У этих объектов одинаковые методы для добавления и удаления элементов, но разные для получения.

У структуры имеется метод "Свойство" который проверяет есть ли такой ключ в коллекции и возвращает в переменную полученное значение. Если ключа нет, то возвращается Неопределено. При этом метод является функцией и возвращает Булево( Истина или Ложь )

В Соответствии для этого есть метод "Получить" в параметрах которого передается ключ парное значение которого мы ищем. Т.е. нет отдельной функции для проверки, но если ключ не найден, то возвращается Неопределено, что и можно использовать для этой же цели(текст изменен, благодаря замечаниям в комментариях).

Комментарии

Скажите, пожалуйста, как в ключ Соответствия засунуть список значений (массив), и потом искать этот ключ, сравнивая ключ как сам список значений, а не какой-то адрес (хэш). Какую структуру данных использовать для ключа?

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

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Соответствие

Описание:

Представляет доступ к соответствию. Не используется в данных формы.

Элементы коллекции: КлючИЗначение

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы соответствия. Возможно обращение к значению элемента посредством оператора [. ]. В качестве аргумента передается значение ключа элемента.

Методы:

Новый Соответствие (ФиксированноеСоответствие) Создаваемое соответствие заполняется элементами из исходного фиксированного соответствия.
Новый Соответствие () Создает пустое соответствие (без элементов).

Тип Соответствие в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Соответствие в языке программирования 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С в месте с моей книги «Программировать в 1С за 11 шагов»

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

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

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

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Оцените статью
ПК Знаток
Добавить комментарий

Adblock detector