From dbc1a08dfc329a62682cf478163ef5fd6d41a159 Mon Sep 17 00:00:00 2001 From: KovAlexey Date: Thu, 19 Dec 2024 11:44:58 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=B5=D0=BD=D1=82-=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=82=D0=BE=D0=BD=D0=BA=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommonModules/ОбщегоНазначения/Module.bsl | 39 +++++++++++++++++++ .../ОбщегоНазначенияКлиентСервер/Module.bsl | 4 +- 2 files changed, 40 insertions(+), 3 deletions(-) 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 @@ ТипИсточника = ТипЗнч(Источник); - Если ТипИсточника = Тип("ТаблицаЗначений") Тогда - Приемник = Источник.Скопировать(); - ИначеЕсли ТипИсточника = Тип("Структура") + Если ТипИсточника = Тип("Структура") Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда Приемник = СкопироватьСтруктуру(Источник, ФиксироватьДанные); ИначеЕсли ТипИсточника = Тип("Соответствие")