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

Структура и соответствие — типы данных которые предназначены для хранения временных наборов коллекций значений в течении сеанса работы пользователя. Объекты этих типов не хранятся непосредственно в базе данных, а создаются в процессе работы разработчиком алгоритмов на встроенном языке и используются для накопления, структурирования, анализа, передачи и обработки информации.

Каждый элемент коллекции типа структура или соответствие представляет из себя пару из ключа и установленного соответствующего ключу значения. Основное функциональное различие между этими типами данных заключается в типе значения ключа. В типе данных Соответствие, ключ может быть любого типа, а в структуре только строкового. Рассмотрим и проанализируем основные различия типов данных в виде таблицы составленной на основе справки из синтаксис помощника.

СтруктураСоответствие
Элементы коллекций:
КлючИЗначениеКлючИЗначение
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.
Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается значение ключа элемента.Возможно обращение к значению элемента посредством оператора […]. В качестве аргумента передается значение ключа элемента.
Свойства:
<Имя ключа> (<Key name>)
Методы:
Вставить (Insert)
Количество (Count)
Очистить (Clear)
Свойство (Property)
Удалить (Delete)
Вставить (Insert)
Количество (Count)
Очистить (Clear)
Получить (Get)
Удалить (Delete)
Конструкторы:
На основании фиксированной структуры
По ключам и значениям
На основании фиксированного соответствия
По умолчанию
Описание:
Представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым и должен удовлетворять требованиям, предъявляемым к именованию переменных встроенного языка. 
К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.
Структура используется обычно для хранения небольшого количества значений, каждое из которых имеет некоторое имя.
Представляет доступ к соответствию.
Не используется в данных формы.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер). 
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Structure.
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер). 
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: Map.

Как можно видеть из таблицы сравнения оба типа очень похожи и имеют аналогичный способ работы с экземплярами этих типов. Основное отличие заключается в способе получения элемента из коллекции. В структуре получение значения выполняется аналогично работе со свойством или чтением реквизита объекта метаданных т.е. через точку. Например:

Структура = Новый Структура;
Структура.Вставить("Цвет","Зеленый");
Сообщить(Структура.Цвет); //Зеленый

Получение значения в соответствии происходит иначе. Для того чтобы прочитать значение соответствия нужно использовать конструкцию с квадратными скобками Соответствие.[«<ИмяКлюча>»]. Например:

Соответствие = Новый Соответствие;
Соответствие.Вставить("Цвет","Синий");
Сообщить(Соответствие["Цвет"]); // Синий

Для обоих типов доступен обход коллекции с использованием цикла по обходу коллекции. Например:

Структура = Новый Структура;
Структура.Вставить("Цвет","Зеленый");
Структура.Вставить("Размер",40);
Структура.Вставить("Материал","Пластик");

Для Каждого ЭлементКоллекции Из Структура Цикл
    Сообщить(ЭлементКоллекции.Ключ+" "+ЭлементКоллекции.Значение); 
//-----Результат вывода------
// Цвет Зеленый
// Размер 40
// Материал Пластик
КонецЦикла;

Соответствие = Новый Соответствие;
Соответствие.Вставить("Цвет","Синий");
Соответствие.Вставить(40,150);
Соответствие.Вставить("Вес",90);

Для Каждого ЭлементКоллекции Из Соответствие Цикл
    Сообщить(ЭлементКоллекции.Ключ+" "+ЭлементКоллекции.Значение);
//-----Результат вывода------
// Цвет Синий
//  150 <--- Обратите внимание ключ 40 выведен не будет так как это не строка, чтобы его вывести нужно Ключ полученного элемента коллекции преобразовать к строке Строка(ЭлементКоллекции.Ключ)
// Вес 90
КонецЦикла;

Кроме того структура при добавлении в нее элемента, автоматически упорядочивает элементы по ключу, а соответствие нет.