Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация данных - один в несколько

Конвертация данных - один в несколько
Я
   Gangar
 
20.12.18 - 21:38
Вечер добрый, уважаемые.
Имею вопрос и прошу помощи в решении.
Дано:
-некий документ в источнике, например "ВозвратОтПокупателя";
-у этого документа есть некий реквизит, например "ДокументОтгрузки", который находится в табличной части;
-в приемнике есть такой же документ, но у него реквизит "ДокументОтгрузки" не в табличной части, а в реквизитах самого документа;
-в конвертации данных, в ПВД, в обработчике ПередВыгрузкой запросом формируются структуры, которые передаются в ПКО через ВыгрузитьПоПравилу;

Вопрос:
как можно в ПКО, в обработчике ПриЗагрузке получить информацию из структуры, которая сформировалась в ПВД?

Пока нашел решение через чтение файла выгрузки, но, по моему мнению, оно не очень красивое.
 
 
   Черный маклер
 
1 - 20.12.18 - 21:51
двигайся в направлении
-в конвертации данных, в ПВД, в обработчике ПередВыгрузкой запросом формируются структуры, которые передаются в ПКО через ВыгрузитьПоПравилу;

т.е. в одном ПВД можно
ВыгрузитьПоПравилу(Выборка.Ссылка, ,ВходящиеДанные1 , , "Документ1")
ВыгрузитьПоПравилу(Выборка.Ссылка, ,ВходящиеДанные2 , , "Документ2")
   Gangar
 
2 - 20.12.18 - 21:59
(1) и зачем? тип источника - один, приемника - тоже один.
в ПВД у меня:
Пока ВыборкаПоДокументу.Следующий() Цикл
 ..//тут формируется структура ИсходящиеДанные

 ВыггрузитьПоПравилу(,,ИсходящиеДанные,,"ДокументПриемник");
КонецЦикла;
   Fragster
 
3 - 20.12.18 - 22:01
самый простой вариант сделать при выгрузке
   Gangar
 
4 - 20.12.18 - 22:04
(3) есть нужда в приемнике перед загрузкой проверять наличие записей в Регистре сведений, на предмет загруженных ранее документов, по связке УИДИсточкика + УИДДокументОтгрузки
   Черный маклер
 
5 - 21.12.18 - 00:12
(0) ...как можно в ПКО, в обработчике ПриЗагрузке получить информацию из структуры, которая сформировалась в ПВД?

можно получать параметр, который мб массивом
   Gangar
 
6 - 21.12.18 - 00:24
(5) я в КД не силен, но СП читать умею

Обработчики "Правила конвертации объектов"
При загрузке

Параметры:
ОбъектНайден - Булево.
Объект - Произвольный.
НеЗамещатьОбъект - Булево.
ОбъектМодифицирован – Булево.

КАК?!
   Черный маклер
 
7 - 21.12.18 - 09:32
(6) в ПВД
ВыгрузитьПоПравилу(Выборка.Ссылка, ,ВходящиеДанные1 , , "Документ1")

в структуру ВходящиеДанные1 что-то кладешь
а в ПКО это что-то передаешь в свой Параметр
   Gangar
 
8 - 21.12.18 - 09:53
(7) я же в (2) об этом писал, а в (4) написано зачем мне это надо
   Optan
 
9 - 21.12.18 - 09:58
(0) В ПКС заводишь параметр. В нем в событии перед выгрузкой его заполняешь по Источнику (ПКО которое получило данные из ПВД)
Например:
Если НЕ Источник.ОКАТО="" тогда
    
СтруктураДляИФНС = Новый Структура("СсылкаНаРодителя,ДатаПостановкиНаУчет,Владелец,КодПоОКАТО,КодПоОКТМО,КПП,Код,Наименование,НаименованиеИФНС,НаименованиеОбособленногоПодразделения");
    
СтруктураДляИФНС.ДатаПостановкиНаУчет=?(ЗначениеЗаполнено(Источник.ДатаПостановкиНаУчет),Источник.ДатаПостановкиНаУчет,Дата(2000,01,01));
    СтруктураДляИФНС.КодПоОКАТО = Источник.ОКАТО;
    СтруктураДляИФНС.КодПоОКТМО = Источник.ОКТМО;
    СтруктураДляИФНС.КПП = Источник.КПП;
    СтруктураДляИФНС.Код = Источник.КодИМНС;
    СтруктураДляИФНС.Наименование = Источник.Наименование;
    СтруктураДляИФНС.НаименованиеИФНС = Источник.РегистрацияВИФНС;
    СтруктураДляИФНС.НаименованиеОбособленногоПодразделения = Источник.МестоРасположения;
    
КонецЕсли;

Значение=ЗначениеВСтрокуВнутр(СтруктураДляИФНС);//обязательно - сложные типы не передадутся, хотя ошибки не будет - секрет конвертации)


А в событии ПКО при загрузке разбираешь:
Параметры=ЗначениеИзСтрокиВнутр(ПараметрыОбъекта["СтруктураДляИФНС"]);

   Gangar
 
10 - 21.12.18 - 10:10
(9) в событии ПриЗагрузке в ПКО ПараметрыОбъекта недоступно (6)
   Optan
 
11 - 21.12.18 - 10:17
(10) Ошибся - ПослеЗагрузки конечно же.
   Gangar
 
12 - 21.12.18 - 10:22
(11) зачем мне это надо я писал в (4). ПослеЗагрузки не подходит
   Optan
 
13 - 21.12.18 - 10:30
(12) Отказ же там еще срабатывает. Не хочешь не записываешь или записываешь как тебе надо.
   Черный маклер
 
14 - 21.12.18 - 10:35
(10) видимо мы про разные параметры говорим
открой любое ПКС и смотри
- ПолучитьЗначениеИзВходящихДанных 
- ПередаватьДанныеВПараметр
   Gangar
 
15 - 21.12.18 - 11:07
(14) В базе приемнике есть РС, с измерениями GUIDИсточкика (где хранится GUID документа из источника), УИДИсточника_расш (где хранится дополнительный GUID документа из источника, в данном случае это GUID ДокументаОтгрузки), СсылкаНаОбъект (где хранится ссылка на созданный документ).

В источнике документ один, а в приемнике их должно быть столько, сколько в источнике различных значений ДокументОтгрузки в табличной части.

Если выгружается документ, уже раннее выгруженный, то надо найти в приемнике созданные документы и обновить их.

Логично?
   Optan
 
16 - 21.12.18 - 11:29
(15) Не пойму в чем проблема. Выгружаешь что тебе надо параметром. В приемнике ПриЗагрузке анализируешь обновлять/создавать/не трогать свои записи РС и управляешь записью (например, обходишь в событии ПриЗагрузке все ДокументыОтгрузки из ТЧ документа-источника и записываешь свой РС).
   Gangar
 
17 - 21.12.18 - 12:08
(16) Возможно, я неправильно подошел к вопросу и решил его не так, как надо.

В целом ситуация такая:
- в базе упр. учета Возврат от покупателя делается один по нескольким Реализациям, в разрезе одного контрагента/договора, т.е. реквизит Реализация находится в табличной части;
- в базе бух. учета на каждую Реализацию делается свой Возврат;
- как синхронизировать данные, с учетом того, что они должны, в случае надобности, в бух. учете обновляться из упр. учета?
   Optan
 
18 - 21.12.18 - 12:20
(17) Из базы Упр.Учета (УУ) ты выгружаешь документ Возврат вместе с ТЧ (т.е., по сути, список доков для базы БУ). Если нужно, то впридачу передаешь параметром дополнительные данные (массив GUIDов и т.д.).

В приемнике, в событии ПриЗагрузке ты обходишь табличную часть. По каждой строке принимаешь решение и записываешь/не записываешь. При этом, сам исходный объект можно и не записывать, проставив Отказ = Истина.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.