Колизия при обмене РИБ. Как устранить? #420692


#0 by danver
Вообщем тут такое дело. Имеется РИБ -центральный и подчиненный узел. Ошибка выпадает при чтении сообщения подчиненным узлом. Дело в следующем-есть документ Путевой лист. В центральном узле его пометили на удаление, а в периферии заполнили табличную часть. у документа есть обработчик события ПередЗаписью который запрещает ставить отметку удаления на документы с заполненной ТЧ. В сообщении об ошибке просто пишется типа "Ошибка чтения". Нужно отследить номер документа при котором наступает ошибка. XML просмотреть не удается, потому что уже поставлено 5 обновлений и его размер стал больше 500Мб. Сможет помочь кто-нибудь?
#1 by ТелепатБот
#2 by Serg_1960
Это кто такой тут хитрый решил, что нельзя помечать на удаление документы, имеющие записи в ТЧ? Вы? Вам и карты в руки :)) Проверку сделайте при получении сообщения обмена и игнорируйте изменение если нарушается Ваше "особое" правило. Если у Вас приоритет действий за центральным узлом - тогда Ваше "особое" правило надо оформить так: Если Не Объект.ОбменДанными.Загрузка Тогда
#3 by Serg_1960
Как решить Вашу проблему: сделайте вышеуказанные изменения в конфе. Или не выполняйте проверку при загрузке обмена данными. Или игнорируйте такие изменения и регистрируйте изменение для этого объекта - произойдет отмена пометки на удаление. Проведите сеанс обмена данными. Подчиненный узел получит и обновит свою конфу и приступит к обработке изменений  - но уже по новым правилам и без ошибок.
#4 by danver
Благодарю за совет! Завтра попробую! Потом отпишусь.
#5 by danver
Вообщем все заработало у меня. Но нарисовался еще вопросик: как продолжить работу оператора ПрочитатьИзменения, ведь если он один раз споткнулся о что либо то все чтение xml-файла останавливается. И еще как удалить регистрацию изменений конфы?
#6 by mikecool
+2 обычно в типовых в перед записью стоит если загрузка тогда возврат
#7 by danver
Именно так! Дописал где не было для всех документов и справочников в обработчики ПередЗаписью и ПриЗаписи.
#8 by Serg_1960
- через попытку принять в подчиненном узле сообщение с изменениями конфы; - вывалиться по ошибке - проанализировать необходимость обновления конфы; - запусть скрипт на обновление конфы ИБ; - повторить заново прием сообщения; - сформировать сообщение обмена в подчиненном узле для корневого узла и отправить его; - принять в корневом узле сообщение от подчиненного узла. Регистрация изменения конфы после этих действий сама-собой "удалится".
#9 by mikecool
"- повторить заново прием сообщения; " - можно не повторять, если данные не нужны
#10 by Serg_1960
Лучше повторить :) Если этого не делать - потребуется "вручную" увеличивать счетчик принятых сообщений - без этого действия двухнаправленный обмен данными "накроется".
#11 by danver
Опять косяк вылез, блин!!! А все-таки существует ли способ продолжить работу процедуры ПрочитатьИзменения при возникновении ошибки??? Сейчас выскакивает ошибка: ошибка при вызове метода контекста ПрочитатьИзменения бла бла бла:Не задан номер документа! И не пишет какой документ!!!! Т.Е  нет ни номера, ни названия документа.(
#12 by Serg_1960
Продолжить? Не надо "продолжить" :( Лучше в транзакции через попытку и заново, если по ошибке вылетали... Для чтения и разбора(анализа) файла сообщения много уже обработок написано. Ищите, да обрящите:)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С