БП КОРП МСФО. После обновления на 3.2.3.33 ошибка "Поле объекта не обнаружено (КлючВариантаПредопределенный)" при формировании ОСВ МСФО
Задачи пользователя - Адаптация типовых решений
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Всем привет.
Раз в пару лет после обновления БП КОРП МСФО натыкаюсь на такую ошибку, не хочет формироваться ОСВ МСФО. Ошибка плавающая, бывает вылетает даже на демо конфигурации, а бывает так, что обновляют две БП базы с похожими конфигурациями, в одной сломалось, а в другой нет.

После N часов поисков наткнулся на регистр, который хранит в себе варианты отчетов. Как оказалось, нашей ОСВ МСФО там просто нет.
Ошибка случается в момент открытия формы отчета, вот тут, когда не получается найти отчет и не формируются настройки, ну а далее следует непредсказуемое поведение:

Поиск отчета осуществляется в РС.ПараметрыРаботыПрограммы, модуль менеджера, процедура ХранимыеДанныеПараметраРаботыПрограммы:

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