0
maslov_ilya
02.11.23
✎
10:11
|
Часто в правилах обмена в обработчике ПКО "После загрузки" встречаю конструкции типа:
Если Объект.Проведен Тогда
Попытка
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
Объект.Проведен = Ложь;
КонецПопытки;
КонецЕсли;
Хочется разобраться нормально ли для целей попытки проведения использовать конструкцию Попытка/Исключение?
Вопрос возник на фоне текущей ситуации:
Выгружается документ и при попытке проведения возникает ошибка, которая останавливает весь обмен с ошибкой:
Ошибка выполнения запроса
по причине:
В данной транзакции уже происходили ошибки!
Если убираю проведение в "После загрузки" - ошибка уходит, но пытаться перепроводить документы надо. Единственным решением пока вижу, добавлять документы в отложенное проведение и потом уже проводить регламентом.
Уже не первый раз сталкиваюсь с проблемой что Попытка/исключение не всегда работает как надо, но регулярно вижу как в уроках по КД говорят так делать и делают люди...может я чего не понимаю?
|
|
1
MaxS
02.11.23
✎
10:32
|
>Выгружается документ и при попытке проведения возникает ошибка
Загружается, может быть? Пользователю допустимо так выражаться, но не программисту. )
>Единственным решением пока вижу, добавлять документы в отложенное проведение и потом уже проводить регламентом.
Вроде так и работает... в универсальном формате обмена. И специально программисту не нужно писать код для проведения, это есть в типовых механизмах БСП.
Всё записывается, потом работает отложенное проведение и там теоретически возможно "В данной транзакции уже происходили ошибки!" но данные записаны и пмсм обмен критически не прерывается после этого. База источник получает информацию, что пакет доставлен.
|
|