Всем привет.
Раз в пару лет после обновления БП КОРП МСФО натыкаюсь на такую ошибку, не хочет формироваться ОСВ МСФО. Ошибка плавающая, бывает вылетает даже на демо конфигурации, а бывает так, что обновляют две БП базы с похожими конфигурациями, в одной сломалось, а в другой нет.
После N часов поисков наткнулся на регистр, который хранит в себе варианты отчетов. Как оказалось, нашей ОСВ МСФО там просто нет.
Ошибка случается в момент открытия формы отчета, вот тут, когда не получается найти отчет и не формируются настройки, ну а далее следует непредсказуемое поведение:
Поиск отчета осуществляется в РС.ПараметрыРаботыПрограммы, модуль менеджера, процедура ХранимыеДанныеПараметраРаботыПрограммы:
Для исправления проблемы принял решение не лезть в регистр, а просто добавить этот отчет в массив отчетов, вот так:
&ИзменениеИКонтроль("ХранимыеДанныеПараметраРаботыПрограммы")
Функция лнт_ХранимыеДанныеПараметраРаботыПрограммы(ИмяПараметра)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИмяПараметра", ИмяПараметра);
Запрос.Текст =
"ВЫБРАТЬ
| ПараметрыРаботыПрограммы.ХранилищеПараметра
|ИЗ
| РегистрСведений.ПараметрыРаботыПрограммы КАК ПараметрыРаботыПрограммы
|ГДЕ
| ПараметрыРаботыПрограммы.ИмяПараметра = &ИмяПараметра";
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
#Удаление
Возврат Выборка.ХранилищеПараметра.Получить();
#КонецУдаления
#Вставка
//++ Консист Гурин С.А. 02.02.2023 бт.24174
Если ИмяПараметра = "СтандартныеПодсистемы.ВариантыОтчетов" Тогда
лнт_Данные = Выборка.ХранилищеПараметра.Получить();
лнт_ОтчетОСВ = Справочники.ИдентификаторыОбъектовМетаданных.НайтиПоРеквизиту("Имя","ОСВМСФО");
Если ТипЗнч(лнт_Данные.Значение) = Тип("Структура")
И лнт_Данные.Значение.Свойство("ОтчетыСНастройками")
И лнт_Данные.Значение.ОтчетыСНастройками.Найти(лнт_ОтчетОСВ) = Неопределено Тогда
лнт_Данные.Значение.ОтчетыСНастройками.Добавить(лнт_ОтчетОСВ);
Возврат лнт_Данные;
КонецЕсли;
КонецЕсли;
Возврат Выборка.ХранилищеПараметра.Получить();
//-- Консист Гурин С.А. 02.02.2023 бт.24174
#КонецВставки
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
УстановитьОтключениеБезопасногоРежима(Ложь);
Возврат Неопределено;
КонецФункции
Надеюсь, писал не зря и хоть кому-то, да помог.