Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Нужна помощь в настрйоке правил конвертации (http://forums.kuban.ru/f1040/nuzhna_pomosh-_v_nastrjoke_pravil_konvertacii-7196829.html)

JohnBerrimor 22.09.2015 15:23

Нужна помощь в настрйоке правил конвертации
 
В конвертации новичок. Потому сильно не пинать за глупые вопросы.

У сути, необходитмо реализовать выгрузку из УТ 10.3 в БП документ "Поступление NVW@? причем, при определнных условиях (если поставщик строго определенный контрагент) постпление должно конвертироваться в Перемещение ТМЦ, в противном случае в обычном порядке.
Рассматриваю два варианта:
1 - два правила обмена для одного вида документа где фильтровать источник по реквизиту и выбирать по какому ПКО выгружить приходную.
2 - в ПКО в процедуре "Перед выгрузкой" ,если контрагент нужный, использовать функцией ВыгрузитьПоПравилу предварительно создав структуру для выгрзки Перемещения на основе Поступления.

Посоветуйте ка проще/правильнее поступить

JohnBerrimor 22.09.2015 15:24

Соори за корявки в тексте - Punto Switcher постарался :) там имелось ввиду Поступление ТМЦ :)

JohnBerrimor 22.09.2015 15:30

Ну и остальные корявки это просто кривые руки... одним словом жду помощи по теме

angro 22.09.2015 16:00

делаешь двое правил, перед выгрузкой определяешь какие использовать передаёшь ссылку В ВыгрузитьПоПравилу , структуру формировать не надо

VZ 22.09.2015 16:29

Правильно - две выгрузки.

JohnBerrimor 22.09.2015 16:57

Если два ПКО то срабатывают всегда оба? и каждом из них свой фильтр? и для каждого свое ПВД? Все верно?

JohnBerrimor 22.09.2015 17:01

В одном ПКО Приходная->Приходная а во втором Приходная->Перемещение все верно? и не нужно тогда никаких ВыгрузитьПоПравилу, просто настроить согласование реквизитов и все?

angro 22.09.2015 20:01

тогда тебе надо фильтр делать будет в правиле, делай через выгрузитьпопрравилу

JohnBerrimor 22.09.2015 20:57

Все получилось, всем спасибо. Воспользовался ВыгрузитьПоПравилу

SergeyY 22.09.2015 21:52

А можно я тут спрошу :)? Надо переделать типовой обмен УТ10-БП2 чтоб из всей выгружаемой кучи одного вида документов (перемещения) получился 1 общий документ другого вида.
Из перемещений в реализацию я переделал. Но получается куча перемещений преобразуется в такуюже кучу реализаций. А надо в 1 общую.

SergeyY 22.09.2015 21:54

По сути у меня есть подобный обмен уже. Правила работают через универсальный обмен. Там список доков выбирается в форме. Как мне отловить список доков которые зарегистрированы для обмена по плану обмена?

angro 22.09.2015 22:43

выбрать
*
из
Документы.ХХХ.изменения

делаешь свой запрос в правиле выгрузки, формируешь структуру данных и передаёшь в выгрузитьпопрравилу

JohnBerrimor 23.09.2015 14:34

Дальше еще один затык. Задача следующая: в УТ есть приходный кассовый ордер на розничную выгрузку, хотелось бы при загрузке принять его и сделать еще два дока: расходник в дебет 57.01 и приходник с кредита 57.01 (переместить розничную выгрузку в основную кассу из магазинов - обособленных подразделений). Пытался создавать нужные документы в ПКО в обработчике "После загрузки", выдается ошибка "Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных" при вызове ЗаписатьОбъектВИБ для вновь созданных документов.

Климов Сергей 23.09.2015 15:43

2(12) Делай ещё два ПКО

JohnBerrimor 23.09.2015 16:26

Была такая мысль, но смутил регистр "Соответствие объектов" - получается что один к многим, значит будет 3 записи где собственный объект это 3 разные ссылки и один GUID базы источника. При одностороннем обмене все гуд, а что будет при изменении любого из трех в базе получателе?

JohnBerrimor 23.09.2015 16:27

В случае двустороннего обмена.

angro 23.09.2015 17:04

(14) при изменении в получателе, если в правилах обмена прописан обмен, то надо исправлять обратные правила.

регистр "Соответствие объектов" - для поиска

JohnBerrimor 23.09.2015 17:39

Все получилось, спасибо

JohnBerrimor 24.09.2015 13:53

Погорячился со "ВСЕ ПОЛУЧИЛОСЬ!" Выгружаю один приходник из УТ в три документа на стороне БП - два приходника и один расходник. Сделал три ПКО для каждого документа в БП. При первом обмене все ОК - получаем три документа в БП, но! если изменить приходник в УТ и повторно выгрузить, то сам документ ложится нормально, расходник нормально, а вот второй, искусственно порожденный приходник, создается каждый раз новый. Подозреваю что проблема в отключенном поиске по вн.идентификатору для второго ПКО, т.е. не нашелся - создаются новый, логично! Но как выйти из положения? думки в сторону замены GUID перед выгрузкой, например заменить при выгрузке первые 5 символов GUID на 55555. Какие советы от бывалых?

JohnBerrimor 24.09.2015 13:55

Да, можно было бы попытаться искать по другим ключевым полям, но подобных не предвидется - время сдвигаю при выгрузке на секунду, номер - делаю новый.... по какому полю искать кроме фиктивного GUID мылей нет, да чтобы было понятно: обмен односторонний

Климов Сергей 24.09.2015 14:21

2(19) Всю необходимую для идентификации информацию пихай в комментарий при выгрузке. По нему и синхронизируй.

JohnBerrimor 24.09.2015 14:25

А комментарий даст использовать как поле поиска!?

JohnBerrimor 24.09.2015 14:26

Неоптимально, однако, с точки зрения скорости, но, имхо, такого даже и представить не мог!!! А что с заменой GUID на лету? геморой? ведь так точно будет работать!

JohnBerrimor 24.09.2015 16:21

Победил! Может кому поможет:
1. передаем УИД источника в параметр
2. В ПКО в обработчик при загрузке пишем:
// Найти загружаемый документ по GUID - заменим в исходном GUID первые 5 символов на 55555
Приходник57УИД = Новый УникальныйИдентификатор("55555"+Сред(ПараметрыОбъекта["УникальныйИдентификаторДокумента"], 6));
СсылкаНаОбъект = Документы.ПриходныйКассовыйОрдер.ПолучитьСсылку(Приходник57УИД);

Если СсылкаНаОбъект.Пустая() Тогда
Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
Иначе
Объект = СсылкаНаОбъект.ПолучитьОбъект();
КонецЕсли;


Текущее время: 02:34. Часовой пояс GMT +3.