Дополняет коллекцию КлючИЗначение Приемник (Структура, Соответствие) из коллекции Источник. Можно использовать при копировании Структура или Соответствие.
// Процедура - перенести коллекцию КлючИЗначение
//
// Параметры:
// Приемник - Структура, Соответствие
// Источник - Структура, Соответствие
// Заменять - Булево - Заменять [Значение] при наличии [Ключ] в [Приемник], иначе пропустить
Процедура ПеренестиКлючиИЗначения(Приемник, Источник, Заменять = Истина) Экспорт
ТипПриемника = ТипЗнч(Приемник);
Для каждого Элемент из Источник Цикл
ЕстьКлюч = Ложь;
Если ТипПриемника = Тип("Соответствие") Тогда
ЕстьКлюч = Приемник.Получить(Элемент.Ключ) <> Неопределено;
ИначеЕсли ТипПриемника = Тип("Структура") Тогда
ЕстьКлюч = Приемник.Свойство(Элемент.Ключ);
КонецЕсли;
Если ЕстьКлюч И Заменять тогда
Приемник[Элемент.Ключ] = Элемент.Значение
Иначе
Приемник.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Общее предложение к FastCode - обязательно к функциям прикладывать модульные тесты
(1) Дмитрий Титов, вы можете в комментарии добавить свою версию шаблона и пользователи смогут выбрать какой им больше подходит.
// Процедура - перенести коллекцию КлючИЗначение
//
// Параметры:
// Приемник - Структура, Соответствие
// Источник - Структура, Соответствие
// Заменять - Булево - При наличии переносимого свойства в Приемнике, заменить значение. По умолчанию Истина
Процедура ПеренестиКлючиИЗначения(Приемник, Источник, Заменять = Истина)
Для каждого Элемент из Источник Цикл
Если Заменять И Приемник.Свойство(Элемент.Ключ) Тогда
Приемник[Элемент.Ключ] = Элемент.Значение
Иначе
Приемник.Вставить(Элемент.Ключ, Элемент.Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
(1) Дмитрий Титов, спасибо за конструктивную критику. Справедливые замечания.