Связать своё событие расчёта с собственной транзакцией

Учебные задачи

Транзакционный режим передаётся шестым аргументом записи журнала. Код не меняет глобальную настройку журнала.

Где и как запускать

Тело отдельной собственной серверной учебной команды вне внешней транзакции.

Подготовка

  1. Своя отдельная учебная база; пользователь с правом записи собственного события и просмотра журнала. Уровень Информация должен входить в текущую регистрацию журнала, иначе событие может не записаться.

  2. Код — тело отдельной серверной процедуры своей обработки. Он начинает и завершает только свою транзакцию; прикладные записи в базу не добавляются.

  3. Ручной запуск создаёт только собственное событие УчебныйСинтаксис.ТранзакцияКниг. Не выполняйте его в рабочей обработке записи документов.

Если ТранзакцияАктивна() Тогда
    ВызватьИсключение "Запустите отдельную учебную команду вне чужой транзакции";
КонецЕсли;
НачатьТранзакцию();
Попытка
    Сумма = 3 * 250;
    ЗаписьЖурналаРегистрации("УчебныйСинтаксис.ТранзакцияКниг", УровеньЖурналаРегистрации.Информация,
        , , "Своя сумма: " + Строка(Сумма), РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
КонецПопытки;
Сообщить("Собственная транзакция завершена; проверяйте событие по его имени");

Разбор по шагам

  1. Начните отдельную собственную транзакцию.

  2. Запишите учебную сумму с явным Транзакционная в шестом аргументе.

  3. Завершите свою транзакцию и откройте журнал с отбором только по имени события.

Как проверить результат

  1. Транзакционная связывает запись с текущей транзакцией; Независимая является другим режимом. Код не путает этот режим с уровнем важности события.

  2. Сообщение после ЗафиксироватьТранзакцию не доказывает видимость события при выключенном уровне регистрации. BSL и журнал при сборке HTML не исполнялись.

Ожидаемый результат

Показан обычный явный транзакционный контекст без изменения чужих объектов.

На что обратить внимание

  1. Не фиксируйте транзакцию вызывающего кода. Именно поэтому самостоятельный драйвер проверяет, что чужая транзакция не активна.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.