Непонятное поведение платформы при использовании режима транзакции для записи журнала регистрации

1. azhilichev 214 11.01.21 10:47 Сейчас в теме
Коллеги, здравствуйте.

Столкнулся с непонятным поведением платформы. Проверял на 8.3.11 и 8.3.17.
Есть константа ДатаЗапретаИзмененияДанных. В модуль менеджера записи добавил следующий код:

#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ)
	
	ПредыдущееЗначение = ПолучитьТекущееЗначениеКонстанты();
	ДополнительныеСвойства.Вставить("ПредыдущееЗначение", ПредыдущееЗначение);
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	ЗаписатьСобытиеИзмененияВЖурналРегистрации();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура ЗаписатьСобытиеИзмененияВЖурналРегистрации()
	
	ТекстКомментария = СтрШаблон("Предыдущее значение: %1
		|Новое значение: %2", ДополнительныеСвойства.ПредыдущееЗначение, Формат(Значение, "ДП='не задано'"));
	                                                    
	ЗаписьЖурналаРегистрации("Константы.Изменение",
		УровеньЖурналаРегистрации.Предупреждение, 
		Метаданные(), ,
		ТекстКомментария,
		РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
	
КонецПроцедуры

Функция ПолучитьТекущееЗначениеКонстанты()
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ДатаЗапретаИзмененияДанных.Значение КАК Значение
	|ИЗ
	|	Константа.ДатаЗапретаИзмененияДанных КАК ДатаЗапретаИзмененияДанных";
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	Возврат Выборка.Значение;
	
КонецФункции

#КонецОбласти

#КонецЕсли
Показать


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


Если включить регистрацию ошибок, предупреждений и информации, то запись попадает с признаком завершенной транзакции:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 11.01.21 12:12 Сейчас в теме
Интересное наблюдение. Действительно, статус транзакции пишет некорректно. Проверил на минимальном примере:
&НаСервереБезКонтекста
Процедура Команда1НаСервере()
	
	НачатьТранзакцию();
	
	ЗаписьЖурналаРегистрации("Тест", УровеньЖурналаРегистрации.Предупреждение,,,,РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
	
	ЗафиксироватьТранзакцию();
	
КонецПроцедуры
Показать
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот