![]() |
![]() |
![]() |
|
Конвертация одного документа в несколько. Очень нужна помощь. | ☑ | ||
---|---|---|---|---|
0
Ataulf
06.09.06
✎
01:51
|
Вопрос к спецам по Конвертации Данных 2.0.
Использую Конвертацию 2.0.13.1. Перенос одной самописной конфы в другую самописную. Обе на v8. Так вот ситуация: Существуют некие ДокПриемник и ДокИсточник. В ДокИсточнике есть табличная часть, а в ДокПриемнике её нет. Нужно, чтобы для каждой строки табчасти ДокИсточника создавался новый ДокПриекник. Возможно ли это сделать? Первое, что я придумал - это создать глобальный параметр - таблицу значений, заполнять её во время выгрузки, а при загрузке формировать новый ДокПриемник для каждой строки. Но это не получилось, т.к. собственные параметры в события загрузки не передаются (флажок "использовать при загрузке" на закладке параметров не работает, имхо). Дальше пытался извращаться с ПКО с входящими и выходящими данными, но это всё не то. Кто нибудь сталкивался? Есть идеи? |
|||
2
DF_Slayer
06.09.06
✎
05:08
|
(0) Один раз видел КД2. Но идея такая: при выполнении правила (неважно какого), может быть задано действие (скрипт), которое вполне может решить эту проблему. Делал на 77, поэотому за результат не ручаюсь.
|
|||
3
StranNik1С
06.09.06
✎
10:26
|
Используй процедуру ВыгрузитьПоПравилу в обработчике ПередВыгрузкой группы свойств (табличной части). Параметр ОбъектКоллекции этого обработчика - строка табличной части. Его передаешь например в качестве параметра ИсходящиеДанные процедуры.
При вызове процедуры будет запускаться ПКО документа-приемника. Источник для ПКО пустой, реквизиты документа заполняешь из исходящих данных. Примерно так. |
|||
4
Ajeksa
06.09.06
✎
10:40
|
//Цикл по строкам докумена источника
Источник.ВыбратьСтроки(); Пока Источник.ПолучитьСтроку()=1 Цикл ... СписокПолей.Установить("ТипПриемника2", ТипПриемника2); СписокПолей.Установить("ИмяПКО2", ИмяПКО2); СписокПолей.Установить("СуммаДокумента", Источник.Сумма); ... // Табличную часть оформим в виде табл. и передадим в реквизит. СписокПолей.Установить("РасшифровкаПлатежа", ТЗ); ... // Функция ВыгрузитьПоПравилу(Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО = "", УзелСсылки = "", ТолькоПолучитьУзелСсылки = 0, НомерПКО = 0) // Источник передадим только чтобы корректно прописалось время документа ВыгрузитьПоПравилу(Источник,,СписокПолей,,"ПлатежноеПоручениеИсходящее");//Источник ... |
|||
5
Ataulf
08.09.06
✎
16:13
|
В ПКО: источник пустой, приемник - ДокПриемник(Без Таб части). Выбираем нужные поля и ставим галку "Получить из входящих данных". Я выбрал все поля (даже дату и номер). На всякий случай указываем правила конвертации для реквизитов (склад там какой-нить или номенклатура). Имя ПКО = "Приемка";
Делаем ПВД для ДокИсточника (ПриемкаТМЦ, с табчастью); В событии ПередВыгрузкой пишем: Для Каждого Строка Из Объект.Номенклатура Цикл ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Номер",Объект.Номер); ВходящиеДанные.Вставить("Дата",Объект.Дата); ВходящиеДанные.Вставить("Склад",Объект.СкладПриемник); ВходящиеДанные.Вставить("ВидТовара",Строка.Номенклатура); ВходящиеДанные.Вставить("Количество",Строка.Количество); ВходящиеДанные.Вставить("СуммаПолучения",Строка.Сумма); ВыгрузитьПоПравилу(,,ВходящиеДанные,,"Приемка"); КонецЦикла; Всё просто и красиво:) чего я тормозил... Рекомендую в книгу заний, т.к. кроме всяких полезностей такого приема там не описано, а он может пригодиться. p.s. Насчет v7 в названии темы - я ошибся при создании. Тема - v8. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |