Конструктор берёт имена полей из ключей коллекции, а значения — из её значений. Для собственных числа и строки проверяем независимость от последующей правки источника.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная база 8.5.1.1343; фрагмент без директив выполняйте внутри серверной ВыполнитьПример() Экспорт собственного общего модуля УчебныеЗадачи.
Два значения составного ключа — собственный номер 1 и категория Канцелярия. Ни запись товаров, ни открытие форм конфигурации не выполняются.
Получить у этого типа принимает строковый путь ключевого поля, не числовой индекс. Количество показывает число полей ключа, не число строк списка.
Источник = Новый Структура("УчебныйНомер,Категория", 1, "Канцелярия");
ИзСтруктуры = Новый КлючСтрокиДинамическогоСписка(Источник);
Сопоставление = Новый Соответствие;
Сопоставление.Вставить("Категория", "Канцелярия");
Сопоставление.Вставить("УчебныйНомер", 1);
ИзСоответствия = Новый КлючСтрокиДинамическогоСписка(Сопоставление);
Сообщить(ИзСтруктуры.Количество() = 2);
Сообщить(ИзСоответствия.Количество() = 2);
Сообщить(ИзСтруктуры.Получить("УчебныйНомер") = ИзСоответствия.Получить("УчебныйНомер"));
Сообщить(ИзСтруктуры.Получить("Категория") = ИзСоответствия.Получить("Категория"));
Источник.УчебныйНомер = 99;
Источник.Категория = "Изменён только источник";
Сопоставление.Вставить("Категория", "Изменён только источник");
Сообщить(ИзСтруктуры.Получить("УчебныйНомер") = 1);
Сообщить(ИзСтруктуры.Получить("Категория") = "Канцелярия");
Сообщить(ИзСоответствия.Получить("Категория") = "Канцелярия");Разбор по шагам
Структура удобна для простых имён полей. Соответствие также принимается конструктором; его ключи используются как пути ключевых полей.
Создаём ключи из двух источников и сравниваем составляющие по именам, не по порядку обхода соответствия.
После создания меняем собственные скалярные значения источников. Уже созданные ключи сохраняют номер 1 и строку Канцелярия.
Как проверить результат
Семь проверок дают Истина.
Источник после правки содержит 99, но ИзСтруктуры.Получить("УчебныйНомер") по-прежнему 1.
Ожидаемый результат
Создание ключа по именованной коллекции с проверкой скалярных значений.
На что обратить внимание
Это не обещание глубокой копии всех возможных вложенных изменяемых объектов; здесь только число и строка.
Произвольное соответствие не является готовым отбором динамического списка.
Имена путей должны соответствовать полям реального списка при использовании ключа в таблице.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.