Каталог решений - Организация вложенных транзакций в 1С на примере трассировки ошибок при записи, проведении или отмене проведения документа

Организация вложенных транзакций в 1С на примере трассировки ошибок при записи, проведении или отмене проведения документа

Организация вложенных транзакций в 1С на примере трассировки ошибок при записи, проведении или отмене проведения документа

В наличии

В статье рассматривается вариант решения задачи создания вложенной транзакции на примере трассировки ошибок при записи, проведении или отмены проведения документа.

Категория:

Описание

Введение:

В статье рассматривается вариант решения задачи создания вложенной транзакции на примере трассировки ошибок при записи, проведении или отмены проведения документа в конструкции:

  НачатьТранзакцию();
  Попытка
  	ДокОбъект.Записать(пРежимЗаписиДокумента);
  	ЗафиксироватьТранзакцию();
  Исключение
  	ОтменитьТранзакцию();
  	Сообщить(мояфункция_ПолучитьИнформациюТрассировкиОтмененнойТранзакции());
  КонецПопытки;
  
  

В процессе записи/проведения/отката ДокОбъект выполняется множество функций и проверок, возможно возникновение ошибок, которые в режимах работы пользователя отображаются у него на экране в виде сообщений, а сам документ не проводится (Отказ = Истина).

Когда то же самое происходит (запись/проведение/откат проведения ДокОбъект)  через WebService, то все сопутствующие, проясняющие причину ошибки операции утеряны и в итоге видна только ошибка совершения операции записи/проведения/отката документа.

Для того, чтобы получить эти пояснения можно создать, например, регистр сведений, в который добавлять все эти сообщения для объекта.

К сожалению, система 1С не позволяет реализовать такой функционал в лоб, так как для этого необходимо использовать "вложенную транзакцию", которая будет записывать данные в регистр.  В противном случае команда "ОтменитьТранзакцию();" отменит и записи в наш регистр сведений. Если же попытаться обратиться к регистру до отмены транзакции, то появится сообщение об ошибке "в данной транзакции уже происходили ошибки".

Решение:

Создадим РегистрыСведений: "ТекстОшибокИнтеграции" с измерениями"ВнешнийИдентификатор", "Индекс" и реквизитом "ТекстОшибки".

Для решения задачи предлагается использовать WebService.

Для этого необходимо создать WebService и функцию, которая будет производить запись информации в наш регистр сведений.

 

has been added to your cart:
Оформление заказа