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

СергейТ 29 5

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

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

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

Рекомендации

См. также

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

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

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

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

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

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

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

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

СкопироватьПрисоединенныеФайлы (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз

Комментарии

Модератору