Скопировать рекурсивно. Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно,
// Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно,
// с учетом типов дочерних элементов. При этом содержимое значений объектных типов
// (СправочникОбъект, ДокументОбъект и т.п.) не копируются, а возвращаются ссылки на исходный объект.
//
// Параметры:
// Источник - Структура, ФиксированнаяСтруктура,
// Соответствие, ФиксированноеСоответствие,
// Массив, ФиксированныйМассив,
// СписокЗначений - объект, который необходимо скопировать.
// ФиксироватьДанные - Булево, Неопределено - если Истина - фиксировать,
// если Ложь - снять фиксацию, если Неопределено - не изменять.
//
// Возвращаемое значение:
// Структура, ФиксированнаяСтруктура,
// Соответствие, ФиксированноеСоответствие,
// Массив, ФиксированныйМассив,
// СписокЗначений - копия объекта, переданного в параметре Источник.
//
Функция СкопироватьРекурсивно(Источник, ФиксироватьДанные = Неопределено) Экспорт
Перем Приемник;
ТипИсточника = ТипЗнч(Источник);
Если ТипИсточника = Тип("ТаблицаЗначений") Тогда
Возврат Источник.Скопировать();
КонецЕсли;
Если ТипИсточника = Тип("Структура")
Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда
Приемник = СкопироватьСтруктуру(Источник, ФиксироватьДанные);
ИначеЕсли ТипИсточника = Тип("Соответствие")
Или ТипИсточника = Тип("ФиксированноеСоответствие") Тогда
Приемник = СкопироватьСоответствие(Источник, ФиксироватьДанные);
ИначеЕсли ТипИсточника = Тип("Массив")
Или ТипИсточника = Тип("ФиксированныйМассив") Тогда
Приемник = СкопироватьМассив(Источник, ФиксироватьДанные);
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
Приемник = СкопироватьСписокЗначений(Источник, ФиксироватьДанные);
Иначе
Приемник = Источник;
КонецЕсли;
Возврат Приемник;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////