Имя: Пароль:
1C
 
Выгрузка по ссылке (План обмена, правила обмена)
0 vi0
 
07.04.15
18:53
Есть банальная задача выгрузки из одной конфигурации в другую. Делаю на основе типового обмена MES-УПП. Нужно выгружать документы. Справочники должны выгружаться по ссылкам за документами. В плане обмена для документов делаем авторегистрацию.

Многочисленные обсуждения в сети сводятся к двум рецептам
1. В ПКО справочников установить флаг "Выгружать объект полностью, только при наличии на него ссылки"
2. В ПКО справочника в событии Перед выгрузкой установить ТолькоПолучитьУзелСсылки = Ложь

Оба метода не дают результата:
1. просто не отрабатывает, не переносит элемент справочника за документом
2. Возникает ошибка или переполнения стека или, создается второе COM соединение, которое конфликтует с первым "ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелДляОбмена); причине: удалось заблокировать запись."
Думаю, что тут тоже причина в рекурсивном переполнении.
ТЖ не анализировал.

Коллеги, поделитесь, у кого какой метод работает? Какие условия еще обязательны, чтобы метод работал? В каких именно типовых обменах это работает?
1 MaxS
 
07.04.15
20:17
В типовом обмене в коде замечена конструкция:
ОбработкаОбменаДанными.НеВыгружатьОбъектыПоСсылкам = Истина;
Потом эта переменная используется в функции ВыгрузитьПоПравилу...
Т.е. то, что зарегистрировано в узле, то и выгружается.
2 Naumov
 
07.04.15
20:26
(0) Я в подобной ситуации менял правила регистрации, которые при регистрации документа заодно и справочники регистрировали в плане обмена.
3 MadJhey
 
07.04.15
20:33
Обработчики "Правила конвертации свойств"
При выгрузке


ВыгрузитьОбъект - Булево - Если Истина, то объект выгружается целиком. Если Ложь, то выгружается только ссылка.
4 vi0
 
08.04.15
09:08
(1) это да
на этот случай и есть способ ТолькоПолучитьУзелСсылки=Ложь, только где-то у меня из-за него процесс валится из-за рекурсии
5 vi0
 
08.04.15
18:20
пишу решение, может кому будет полезно
нужно использовать реквизиты плана обмена типа  Перечисление.РежимыВыгрузкиОбъектовОбмена, которые нужно указывать в правилах регистрации обмена в "Переключателе режима"
все это есть в демо базе БСП
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший