Имя: Пароль:
1C
1С v8
КД: Добавление табличных частей в документ из других документов (того же типа)
0 trancer
 
02.03.12
17:41
Всем привет.

Использую КД 2.0.28.1. Из одной УПП в другую УПП выгружаю Поступление товаров и услуг. Для некоторых документов мне нужно добавлять содержимое табличных частей из других документов, отобранных некоторым образом. Например, добавлять ТЧ Оборудование или дополнять ТЧ Товары содержимым ТЧ Товары другого документа. И т.д. "Сливающихся" документов может быть произвольное количество. Хотя, как я понимаю, это не принципиальный вопрос.

Буду признателен, если подскажете, хотя бы в общих словах, какие ПКО/ПКС можно создать в КД, чтобы получилось ТЧ доков.

Спасибо.

PS ПКО для документа Поступление взято из типовых примеров КД.
1 trancer
 
02.03.12
17:44
*чтобы получилось объединять ТЧ доков
2 КМ155
 
02.03.12
18:17
(0) в типовых правилах это делается запросами
3 trancer
 
02.03.12
18:20
(2) то есть предлагается переделать правило выгрузки данных для поступления со Стандартная выборка на Произвольный алгоритм? Это имеется ввиду? Пример есть какой-нибудь? Хотя бы ключевые слова какие-нибудь.
4 КМ155
 
02.03.12
18:30
(3) угу
да любые правило загрузки в УПП
5 trancer
 
06.03.12
19:58
В общем сделал так. На примере ТЧ Оборудование:

1. Для ПКГС Оборудование выставил галку "Получить из входящих данных".
2. В ПВД, в событии Перед выгрузкой:


КоллекцияОбъектов = Объект.Оборудование.Выгрузить();

// добавим ТЧ Оборудование из других поступлений, если есть с тем же входящим номером
// и другими реквизитами
Если ЗначениеЗаполнено(Объект.НомерВходящегоДокумента) Тогда
   Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
                         | ПоступлениеТоваровУслуг.Ссылка
                         |ИЗ
                         | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
                         |ГДЕ
                         | ПоступлениеТоваровУслуг.ДатаВходящегоДокумента = &ДатаВходящегоДокумента
                         | И ПоступлениеТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента
                         | И ПоступлениеТоваровУслуг.Контрагент = &Контрагент
                         | И ПоступлениеТоваровУслуг.НомерВходящегоДокумента = &НомерВходящегоДокумента
                         | И ПоступлениеТоваровУслуг.Ссылка <> &Ссылка");
   Запрос.УстановитьПараметр("ДатаВходящегоДокумента", Объект.ДатаВходящегоДокумента);
   Запрос.УстановитьПараметр("ДоговорКонтрагента", Объект.ДоговорКонтрагента);
   Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
   Запрос.УстановитьПараметр("НомерВходящегоДокумента", Объект.НомерВходящегоДокумента);
   Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();
   Если Выборка.Количество() > 0 Тогда
       Пока Выборка.Следующий() Цикл
           ТЗ = Выборка.Ссылка.Оборудование.Выгрузить();
           ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТЗ, КоллекцияОбъектов);
       КонецЦикла;
   КонецЕсли;
КонецЕсли;

ИсходящиеДанные = Новый Структура("Оборудование", КоллекцияОбъектов);
ВыгрузитьПоПравилу(Объект,, ИсходящиеДанные,, "ПоступлениеТоваровУслуг");