Заполнение табличной части документа из нескольких документов

1. PavelZnaikin 175 18.05.18 20:14 Сейчас в теме
Сделал обработку "Создание связных объектов" и если выбрать в качестве основания один документа то все работает.
А вот если выбрать два и более документов то уже не получается заполнить табличную часть документа товарами и ценами из нескольких документов.
Как мне из нескольких документов собрать одну большую табличную часть, не описывая при это заполнения каждого отдельного реквизита табличной части?

Работаю с типом объекта "ДанныеФормыКоллекция"
По теме из базы знаний
Найденные решения
2. SlavaKron 19.05.18 03:18 Сейчас в теме
Не очень понятно в чем именно у вас проблема. Сначала вы говорите, что не можете создать документ, когда оснований несколько, но потом обращаете внимание на метод заполнения реквизитов, хотя это не принципиально в решении вышеуказанной проблемы.
Вот небольшой пример обработки, которая создает документ ПоступлениеТоваровУслуг на основании одного или нескольких документов ПоступлениеТоваровУслуг.
В модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
	ТекущаяВерсияБП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ТекущаяВерсияБП);
	ПараметрыРегистрации.Наименование = "Создание связанных объектов (пример)";
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиСозданиеСвязанныхОбъектов();
	
	ПараметрыРегистрации.Назначение.Добавить("Документ.ПоступлениеТоваровУслуг");
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();	
	НоваяКоманда.Представление = "Создать новый документ на основании";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	НоваяКоманда.Идентификатор = "СоздатьНаОсновании";
	
	Возврат ПараметрыРегистрации;
КонецФункции
Показать

В модуле формы обработки:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт
	ФормаНовогоДокумента = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары");
	ДанныеФормы = ФормаНовогоДокумента.Объект;
	СоздатьДокументНаОсновании(ОбъектыНазначенияМассив, ДанныеФормы);
	КопироватьДанныеФормы(ДанныеФормы, ФормаНовогоДокумента.Объект);
	ФормаНовогоДокумента.Модифицированность = Истина;
	ФормаНовогоДокумента.Открыть();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СоздатьДокументНаОсновании(ОбъектыНазначенияМассив, ДанныеФормы)
	ДокументОбъект = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеТоваровУслуг"));
	ЗаполнитьЗначенияСвойств(ДокументОбъект, ОбъектыНазначенияМассив[0], , "Номер,Дата");
	Для Каждого Основание Из ОбъектыНазначенияМассив Цикл
		ОснованиеОбъект = Основание.ПолучитьОбъект();
		Для Каждого Стр Из ОснованиеОбъект.Товары Цикл
			НоваяСтрока = ДокументОбъект.Товары.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
		КонецЦикла;
	КонецЦикла;
	ЗначениеВДанныеФормы(ДокументОбъект, ДанныеФормы);
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 19.05.18 03:18 Сейчас в теме
Не очень понятно в чем именно у вас проблема. Сначала вы говорите, что не можете создать документ, когда оснований несколько, но потом обращаете внимание на метод заполнения реквизитов, хотя это не принципиально в решении вышеуказанной проблемы.
Вот небольшой пример обработки, которая создает документ ПоступлениеТоваровУслуг на основании одного или нескольких документов ПоступлениеТоваровУслуг.
В модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
	ТекущаяВерсияБП = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ТекущаяВерсияБП);
	ПараметрыРегистрации.Наименование = "Создание связанных объектов (пример)";
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиСозданиеСвязанныхОбъектов();
	
	ПараметрыРегистрации.Назначение.Добавить("Документ.ПоступлениеТоваровУслуг");
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();	
	НоваяКоманда.Представление = "Создать новый документ на основании";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	НоваяКоманда.Идентификатор = "СоздатьНаОсновании";
	
	Возврат ПараметрыРегистрации;
КонецФункции
Показать

В модуле формы обработки:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт
	ФормаНовогоДокумента = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаДокументаТовары");
	ДанныеФормы = ФормаНовогоДокумента.Объект;
	СоздатьДокументНаОсновании(ОбъектыНазначенияМассив, ДанныеФормы);
	КопироватьДанныеФормы(ДанныеФормы, ФормаНовогоДокумента.Объект);
	ФормаНовогоДокумента.Модифицированность = Истина;
	ФормаНовогоДокумента.Открыть();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СоздатьДокументНаОсновании(ОбъектыНазначенияМассив, ДанныеФормы)
	ДокументОбъект = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеТоваровУслуг"));
	ЗаполнитьЗначенияСвойств(ДокументОбъект, ОбъектыНазначенияМассив[0], , "Номер,Дата");
	Для Каждого Основание Из ОбъектыНазначенияМассив Цикл
		ОснованиеОбъект = Основание.ПолучитьОбъект();
		Для Каждого Стр Из ОснованиеОбъект.Товары Цикл
			НоваяСтрока = ДокументОбъект.Товары.Добавить();
			ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
		КонецЦикла;
	КонецЦикла;
	ЗначениеВДанныеФормы(ДокументОбъект, ДанныеФормы);
КонецПроцедуры
Показать
3. PavelZnaikin 175 19.05.18 16:09 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот