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

Содержание[Убрать]

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

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

 


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

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

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


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

ВыбраннаяНоменклатура = Новый Структура;

ВыбраннаяНоменклатура.Вставить(«Шифр», Номенклатура.Шифр);
ВыбраннаяНоменклатура.Вставить(«НоменклатурнаяГруппа», Номенклатура.НоменклатуaрнаяГруппа);
ДобавитьНоменклатуруВТЧТовары(ВыбраннаяНоменклатура);

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


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

СоответствиеНоменклатур = Новый Соответствие;

СоответствиеНоменклатур.Вставить(НашаНоменклатура, НоменклатураКонтрагента);


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

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

НоменклатурнаяГруппа = Неопределено;

КлючСуществует = ВыбраннаяНоменклатура.Свойство("НоменклатурнаяГруппа", НоменклатурнаяГруппа);

 

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

 

НоменклатураКонтрагента = СоответствиеНоменклатур.Получить(НашаНоменклатура);