diff --git a/GitConverter/src/CommonModules/ОбщегоНазначения/Module.bsl b/GitConverter/src/CommonModules/ОбщегоНазначения/Module.bsl index 80497fc..0a69570 100644 --- a/GitConverter/src/CommonModules/ОбщегоНазначения/Module.bsl +++ b/GitConverter/src/CommonModules/ОбщегоНазначения/Module.bsl @@ -369,5 +369,44 @@ КонецФункции +// Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно, +// с учетом типов дочерних элементов. При этом содержимое значений объектных типов +// (СправочникОбъект, ДокументОбъект и т.п.) не копируются, а возвращаются ссылки на исходный объект. +// +// Параметры: +// Источник - Структура +// - ФиксированнаяСтруктура +// - Соответствие +// - ФиксированноеСоответствие +// - Массив +// - ФиксированныйМассив +// - СписокЗначений - объект, который необходимо скопировать. +// ФиксироватьДанные - Булево +// - Неопределено - если Истина - фиксировать, +// если Ложь - снять фиксацию, если Неопределено - не изменять. +// +// Возвращаемое значение: +// Структура - , ФиксированнаяСтруктура, +// Соответствие +// ФиксированноеСоответствие +// Массив +// ФиксированныйМассив +// СписокЗначений - копия объекта, переданного в параметре Источник. +// +Функция СкопироватьРекурсивно(Источник, ФиксироватьДанные = Неопределено) Экспорт + + Перем Приемник; + + ТипИсточника = ТипЗнч(Источник); + + Если ТипИсточника = Тип("ТаблицаЗначений") Тогда + Приемник = Источник.Скопировать(); + Иначе + Приемник = ОбщегоНазначенияКлиентСервер.СкопироватьРекурсивно(Источник, ФиксироватьДанные); + КонецЕсли; + + Возврат Приемник; + +КонецФункции #КонецОбласти diff --git a/GitConverter/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl b/GitConverter/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl index d074607..c0fb75b 100644 --- a/GitConverter/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl +++ b/GitConverter/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl @@ -282,9 +282,7 @@ ТипИсточника = ТипЗнч(Источник); - Если ТипИсточника = Тип("ТаблицаЗначений") Тогда - Приемник = Источник.Скопировать(); - ИначеЕсли ТипИсточника = Тип("Структура") + Если ТипИсточника = Тип("Структура") Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда Приемник = СкопироватьСтруктуру(Источник, ФиксироватьДанные); ИначеЕсли ТипИсточника = Тип("Соответствие")