Коллеги, у меня иногда фискализация в рознице зависает вот на этом коде:
&Вместо("ОбработкаОповещенияСообщенийФискализации")
Процедура дор_ОбработкаОповещенияСообщенийФискализации(Сообщение, ДополнительныеПараметры)
//Боремся с зацикливанием очереди сообщений
Если СтрНачинаетсяС(Сообщение.Текст, НСтр("ru='Фискализация чека'")) Тогда
Если глПодключаемоеОборудование.Свойство("дор_ИдентификаторОбработанногоСообщенияФискализации")
И глПодключаемоеОборудование.дор_ИдентификаторОбработанногоСообщенияФискализации = Сообщение.Идентификатор Тогда
Попытка
дор_Сервер.УдалитьСообщениеСистемыВзаимодействияПоИдентификатору(Сообщение.Идентификатор);
Исключение
//Уже удалено
КонецПопытки;
Возврат;
КонецЕсли;
Я написал защиту от обработки одного и того же сообщения, но оно валится и валится и не удаляется, что показательно.
Как с этим бороться? Кто генерит это сообщение системы взаимодействия (в коде не нашел), почему оно циклится? Почему не удаляется? Розница 2.3, актуальная.
Возможно, надо было удалять в привелигированном режиме, посмотрю.
Описание:
Удаляет указанное сообщение из обсуждения.
Вызов метода возможен только в привилегированном режиме.
Процедура УдалитьСообщениеСистемыВзаимодействияПоИдентификатору(Идентификатор) Экспорт
//Удаляет сообщение только в привелигированном режиме
УстановитьПривилегированныйРежим(Истина);
СистемаВзаимодействия.УдалитьСообщение(Идентификатор);
КонецПроцедуры
Ну и поставил протоколироание:
&Вместо("ОбработкаОповещенияСообщенийФискализации")
Процедура дор_ОбработкаОповещенияСообщенийФискализации(Сообщение, ДополнительныеПараметры)
//Боремся с зацикливанием очереди сообщений
Если СтрНачинаетсяС(Сообщение.Текст, НСтр("ru='Фискализация чека'")) Тогда
Если глПодключаемоеОборудование.Свойство("дор_ИдентификаторОбработанногоСообщенияФискализации")
И глПодключаемоеОборудование.дор_ИдентификаторОбработанногоСообщенияФискализации = Сообщение.Идентификатор Тогда
Попытка
дор_Сервер.УдалитьСообщениеСистемыВзаимодействияПоИдентификатору(Сообщение.Идентификатор);
Исключение
//Уже удалено
дор_Сервер.ЗаписьЖурналаРегистрацииНаСервере("Отладка.НеУдалосьУдалитьСообщение", ,,,
"Идентификатор: " + Сообщение.Идентификатор + " Ошибка: " + ОписаниеОшибки());
КонецПопытки;
Возврат;
КонецЕсли;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой