Отмена прикладной транзакции не обязана удалять диагностику. В собственной базе задаём Независимая явно и проверяем одно событие после отмены, не записывая прикладные объекты.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ отдельную пустую файловую базу на 8.5.1.1343. Корневое имя конфигурации УчебныйЖурнал85. Рабочий журнал УТ/КА2/УНФ/БП не используйте.
Запускайте серверный ВыполнитьПример() Экспорт собственного учебного модуля с правом просмотра журнала. Для уроков записи в настройках журнала собственной базы должен быть разрешён уровень Информация.
Фрагмент вставьте в тело процедуры; каждый урок запускайте отдельно. Код НЕ включает регистрацию автоматически и НЕ меняет настройки журнала.
Уроки с ЗаписьЖурналаРегистрации оставляют собственные события в журнале учебной базы. Это реальная диагностическая запись, не запись прикладного документа. Очистка/сокращение журнала не выполняются.
В тексты/Данные не добавляйте токены, пароли, персональные сведения или полные ответы сервисов. Выгрузка ограничена собственным случайным именем события и безопасными колонками, XML-файл не создаётся.
Уровни = ПолучитьИспользованиеЖурналаРегистрации();
Если Уровни.Найти(УровеньЖурналаРегистрации.Информация) = Неопределено Тогда
ВызватьИсключение "В собственной учебной базе уровень Информация не разрешён. Настройки кодом не менялись";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Запускайте урок без внешней активной транзакции";
КонецЕсли;
ИмяСобытия = "УчебныйЖурнал85.Отмена." + Строка(Новый УникальныйИдентификатор);
НачатьТранзакцию();
Попытка
ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , ,
"Независимая учебная диагностика до отмены", РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда ОтменитьТранзакцию(); КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Сообщить(Не ТранзакцияАктивна());
События = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(События, Новый Структура("Событие", ИмяСобытия), "Событие,Комментарий", , 1);
Сообщить(События.Количество() = 1);
Если События.Количество() = 1 Тогда
Сообщить(События[0].Комментарий = "Независимая учебная диагностика до отмены");
КонецЕсли;Разбор по шагам
Проверяем отсутствие внешней транзакции, чтобы не отменить чужую работу.
Начинаем собственную транзакцию, но не записываем документы/регистры.
У записи журнала явно задан режим Независимая: её сохранение не связано с отменой прикладной транзакции.
Отменяем собственную транзакцию на обычном пути и при исключении; фиксации нет.
После отмены выгружаем максимум одно событие только своего UUID и проверяем комментарий.
Как проверить результат
Три логические проверки дают Истина при разрешённом уровне и доступном журнале.
Транзакция завершена, независимая диагностическая запись осталась в учебном журнале. Прикладные объекты не создавались.
Ожидаемый результат
На отдельном событии разобрана граница между отменой транзакции и жизнью независимой диагностики.
На что обратить внимание
Отмена транзакции не является очисткой журнала и не откатывает внешние HTTP-вызовы/файлы.
Не переносите вывод на другие режимы записи журнала без отдельной проверки.
Если уровень выключен или журнал недоступен, отсутствие строки не доказывает её удаление отменой.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.