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