Скопировать содержимое документа из Источник в Приемник

СергейТ 104 4 9

Если есть спецы по стандартам кода, с удовольствием "выслушаю" критику и внесу исправления

&НаСервере
Процедура СкопироватьСодержимоеДокумента(Приемник, Источник, Исключения="")
	Попытка
		МетаданныеДокумента = Источник.Метаданные();
	Исключение
		МетаданныеДокумента = Приемник.Метаданные();
	КонецПопытки;
	//: Приемник = Документы.ЧекККМ.СоздатьДокумент();
	
	// Удалим из строки исключений наименования свойств, которые отсутствуют в реквизитах документа
	Исключения_ = ОбработатьСтрокуРеквизитов(Исключения, МетаданныеДокумента.Реквизиты);
	
	ЗаполнитьЗначенияСвойств(Приемник, Источник, , Исключения_);
	
	Для Каждого ТекТЧ Из МетаданныеДокумента.ТабличныеЧасти Цикл
		ТекТЧИмя = ТекТЧ.Имя;
		
		// Удалим из строки исключений наименования свойств, которые отсутствуют в реквизитах табличной части
		Исключения_ = ОбработатьСтрокуРеквизитов(Исключения, МетаданныеДокумента.ТабличныеЧасти[ТекТЧИмя].Реквизиты);
		
		Приемник[ТекТЧИмя].Очистить();
		Для Каждого ТекСтрИсточника Из Источник[ТекТЧИмя] Цикл
			НоваяСтрокаПриемника = Приемник[ТекТЧИмя].Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрокаПриемника, ТекСтрИсточника, , Исключения_)
		КонецЦикла
	КонецЦикла
КонецПроцедуры

Функция ОбработатьСтрокуРеквизитов(СтрокаРеквизитов, РеквизитыМетаданные)
	
	Результат = Новый Массив;
	МассивРеквизитов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(СтрокаРеквизитов, ",");
	Для Каждого ТекРеквизит ИЗ МассивРеквизитов Цикл
		Если РеквизитыМетаданные.Найти(ТекРеквизит) = Неопределено Тогда Продолжить КонецЕсли;
		Результат.Добавить(ТекРеквизит)
	КонецЦикла;
	Результат = ?(Результат.Количество()>0, СтрСоединить(Результат, ","), "");
	
	Возврат Результат
	
КонецФункции
0

См. также

СкопироватьГруппыПользователя (БСП)

СкопироватьНастройкиПользователя (БСП)

СкопироватьДокумент, Копирование документа

ДополнитьТаблицу (БСП)

Дополнить массив МассивПриемник значениями из массива МассивИсточник

Дополнить таблицу значений - приемника данными из таблицы значений - источника

ЗаполнитьМассивУникальнымиЗначениями

СкопироватьСодержимоеКаталогаПослеОтветаНаВопрос (БСП)

ПеренестиСодержимоеРабочегоКаталогаПослеОтменыИОчисткиПриемника (БСП)

Модератору