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

Правила обмена, изменился порядок загрузки

Правила обмена, изменился порядок загрузки
Я
   Pro1001C
 
06.06.19 - 11:45
Добрый день
КД знаю плохо, подскажите по следующей ситуации:

Есть УТ и БП, типовой обмен. УТ выгружает в БП определенный документ (назовем ДОК1) и регистр сведений ( назовем РЕГ1), в измерении которого есть этот документ.
При загрузке в БП на РЕГ1 добавлена подписка при записи, по которой берется ДОК1 и заполняется другой регистр сведений РЕГ2. Там еще куча данных в РЕГ1 которые пихаются в РЕГ2, но пока не суть.

Долгое время все работало как надо. При загрузке в БП срабатывала подписка на РЕГ1 и заполнялся регистр РЕГ2. Но недавно что-то пошло не так. При загрузке в БП, когда срабатывает подписка на РЕГ1 почему-то документ ДОК1 перестал передаваться, стал <объект не найдет>. И поскольку для заполнения РЕГ2 использовались реквизиты ДОК1, то регистр стал заполнятся криво.
Если сделать повторно загрузку в БП, то все встает нормально, ДОК1 уже есть в БП и все заполняется правильно.

Для меня, как плохо знающего КД, это выглядит так:
- раньше работало все хорошо, как будто из-за того, что сперва в БП загружался ДОК1, а уже потом регистр сведений РЕГ1. Поэтому при срабатывании подписки на РЕГ1 другой регистр РЕГ2 заполнятся корректно
- теперь по какой-то причине, как будто в БП первым стал загружаться регистр РЕГ1, а только потом ДОК1. И при срабатывании подписки на РЕГ1, документа ДОК1 еще нет в базе <объект не найден> и соответственно РЕГ2 заполняется криво.

Сравнил правила конвертации и правила регистрации, ничего не менялось, абсолютно идентичны. Единственное что подходит по времени, это снятие замочка с УТ и добавление нового регистра сведений.

Подскажите, куда капать и как это исправить?
 
 
   Rema Dan
 
1 - 06.06.19 - 12:23
(0) Можно начать с того, чтобы описать версии конфигураций, описать вариант конвертации (КД2? КД3?) и приоткрыть завесу тайны над тем что кроется под терминами "ДОК1", "РЕГ1" и "РЕГ2".
   Pro1001C
 
2 - 06.06.19 - 12:48
КД2, нет сейчас под рукой версий конфигураций
   Pro1001C
 
3 - 06.06.19 - 13:28
Когда сравнивал файлы выгрузки xml, то в них видно, что в старых файлах сперва идет ДОК1, потом РЕГ1. А в новых файлах, сперва идет РЕГ1, а потом ДОК1.
Причем сравнил файлы правил конвертации и регистрации, они идентичные.
Где еще может задаваться порядок выгрузки объектов?
   Rema Dan
 
4 - 06.06.19 - 13:52
(3) Порядок попадания объектов в файл зависит от порядка выборки данных из планнов обмена. А порядок выборки из планов обмена нигде не регламентируется. Следовательно все типовые правила и конфигурации должны быть написаны так, чтобы работать в независимости от порядка прихода данных. Тот факт что это вызвало проблему говорит о том, что тут наверняка что-то не типовое. От сюда и вопрос про "ДОК1", "РЕГ1" и "РЕГ2". Скорей всего это нетиповые объекты, которые написаны без учёта особенностей типового обмена.
   Pro1001C
 
5 - 06.06.19 - 14:07
Сейчас, к сожалению, нет возможности это проверить. Но конфигурация была типовая, как я понял в РЕГ1 есть измерение любого типа и туда засунули ДОК1. Все это пошло по обмену. Все работало, пока не сняли замочек и не добавили новый регистр. Новый регистр никак не связан с темой вопроса, не участвует в обмене, но похоже как то сбил
"Порядок попадания объектов в файл зависит от порядка выборки данных из планнов обмена. А порядок выборки из планов обмена нигде не регламентируется"

Тогда вопрос - возможно как-то задать порядок выгрузки?
Казалось бы простая штука, документы должны выгружаться раньше регистров, но почему-то нет
   Rema Dan
 
6 - 06.06.19 - 14:17
(5) Планы обмена ничего не знают про "документы раньше регистров". В РИБе могут сначала приехать движения документов, а потом уже приехать сами документы и там это вполне рабочая ситуация. Единственное, что может влиять на порядок выгрузки при обмене по планам обмена - это правила обмена. Можно дописать в ПКО для РЕГ1 принудительную выгрузку ДОК1 перед выгрузкой самого РЕГ1.
Это кстати наглядный пример почему подписка на событие записи регистра сведений пишущая в другой регистр - это плохая идея.
   Pro1001C
 
7 - 06.06.19 - 14:49
Спасибо, теперь стало понятно.
"Можно дописать в ПКО для РЕГ1 принудительную выгрузку ДОК1 перед выгрузкой самого РЕГ1"

Можно ткнуть в пример подобной конструкции, может в типовой где встречали. По аналогии сделаю, а вот с нуля, не зная КД...
   Rema Dan
 
8 - 06.06.19 - 14:55
(7) Не помню похожей проблемы в типовых. В ПКО для РЕГ1 в событии Перед выгрузкой нужно проверить необходимость выгрузки и выгрузить ДОК1 использую процедуру ВыгрузитьПоПравилу(СсылкаНаДОК1,,,, "ПКОДляДОК1").
   Pro1001C
 
9 - 06.06.19 - 15:01
спасибо, буду пробовать
   Вафель
 
10 - 06.06.19 - 15:02
в правилах можно принудительно выгружать по ссылке
   Вафель
 
11 - 06.06.19 - 15:02
ТолькоПолучитьУзелСсылки = Ложь;
   Pro1001C
 
12 - 06.06.19 - 15:06
(10) у меня ссылка выгружается, но она выгружается после нужного регистра. И получается, что сперва загружается регистр РЕГ1, а только потом ссылка ДОК1. И во время загрузки РЕГ1 ссылки на ДОК1 еще нет
   Pro1001C
 
13 - 06.06.19 - 15:15
(8) все получилось, спасибо!

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