Организация вложенных транзакций в 1С на примере трассировки ошибок при записи, проведении или отмене проведения документа
В статье рассматривается вариант решения задачи создания вложенной транзакции на примере трассировки ошибок при записи, проведении или отмены проведения документа.
- Описание
- Подробнее
Описание
Введение:
В статье рассматривается вариант решения задачи создания вложенной транзакции на примере трассировки ошибок при записи, проведении или отмены проведения документа в конструкции:
НачатьТранзакцию();
Попытка
ДокОбъект.Записать(пРежимЗаписиДокумента);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщить(мояфункция_ПолучитьИнформациюТрассировкиОтмененнойТранзакции());
КонецПопытки;
В процессе записи/проведения/отката ДокОбъект выполняется множество функций и проверок, возможно возникновение ошибок, которые в режимах работы пользователя отображаются у него на экране в виде сообщений, а сам документ не проводится (Отказ = Истина).
Когда то же самое происходит (запись/проведение/откат проведения ДокОбъект) через WebService, то все сопутствующие, проясняющие причину ошибки операции утеряны и в итоге видна только ошибка совершения операции записи/проведения/отката документа.
Для того, чтобы получить эти пояснения можно создать, например, регистр сведений, в который добавлять все эти сообщения для объекта.
К сожалению, система 1С не позволяет реализовать такой функционал в лоб, так как для этого необходимо использовать "вложенную транзакцию", которая будет записывать данные в регистр. В противном случае команда "ОтменитьТранзакцию();" отменит и записи в наш регистр сведений. Если же попытаться обратиться к регистру до отмены транзакции, то появится сообщение об ошибке "в данной транзакции уже происходили ошибки".
Решение:
Создадим РегистрыСведений: "ТекстОшибокИнтеграции" с измерениями"ВнешнийИдентификатор", "Индекс" и реквизитом "ТекстОшибки".
Для решения задачи предлагается использовать WebService.
Для этого необходимо создать WebService и функцию, которая будет производить запись информации в наш регистр сведений.

