При обновлении типовых конфигураций, таких как 1С:Управление нашей фирмой (УНФ), Зарплата и управление персоналом (ЗУП) или Розница, разработчики часто сталкиваются с неприятной ситуацией: добавленные ранее пользовательские отчеты перестают открываться. Вместо привычного интерфейса система выдает критическую ошибку: «Несуществующий вариант отчета Основной... Необходимо выполнить обновление информационной базы или очистить настройки отчета». Проблема локализуется в общем модуле при попытке системы найти настройки варианта в справочнике ВариантыОтчетов.
В этой статье мы подробно разберем, почему возникает эта ошибка в современных версиях Библиотеки стандартных подсистем (БСП), и рассмотрим несколько способов её решения — от простых настроек в конфигураторе до программного управления регистрацией метаданных.
Рассмотрим механизм работы подсистемы «Варианты отчетов». В свежих редакциях БСП (начиная с версий, используемых в УНФ 1.6.27 и выше) значительно ужесточились требования к регистрации объектов метаданных. Если раньше отчет мог открываться «на лету» через общую форму, то теперь система требует, чтобы каждый вариант отчета был физически зарегистрирован в справочнике ВариантыОтчетов. Если записи в справочнике нет, общая форма отчета (ФормаОтчета) не может инициализировать настройки и выбрасывает исключение.
Проанализируем основные факторы, приводящие к сбою:
ИдентификаторыОбъектовМетаданных и реальным составом конфигурации.Это самое частое и эффективное решение. Проанализируем свойства вашего отчета в конфигураторе. Для того чтобы отчет корректно интегрировался с механизмами БСП, он должен использовать системное хранилище настроек.
Выполним следующие шаги:
ХранилищеВариантовОтчетов. Это стандартный объект БСП, который отвечает за связь метаданных со справочником вариантов.ХранилищеОбщихНастроек или специализированное хранилище БСП).Важное замечание для отчетов в расширениях: Если ваш отчет находится в расширении, вам необходимо сначала заимствовать объект ХранилищеВариантовОтчетов из основной конфигурации в это расширение, и только после этого выбирать его в свойствах отчета.
Если свойства заполнены верно, но ошибка сохраняется, значит, система «не видит» ваш отчет в реестре вариантов. Выясним, как заставить БСП пересканировать метаданные.
Рассмотрим вариант с использованием параметров запуска. Закроем сеанс «1С:Предприятие» и запустим его снова, добавив в строку запуска (или в поле «Дополнительные параметры запуска» в окне выбора баз) следующий ключ:
/C ЗапуститьОбновлениеИнформационнойБазы
После запуска системы начнется процесс выполнения процедур обновления. БСП должна обнаружить новые отчеты и создать для них записи в справочнике ВариантыОтчетов. Если это не помогло, воспользуемся специализированной обработкой из состава БСП — «ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf». В ней нужно выбрать пункт, связанный с обновлением вариантов отчетов, и запустить выполнение.
В некоторых случаях автоматического сканирования недостаточно, особенно если отчет имеет сложную структуру или должен появляться в специфических разделах интерфейса. Проанализируем программный способ регистрации через модуль объекта отчета.
Добавим в модуль объекта вашего отчета экспортную процедуру, которую вызывает БСП при обновлении:
Процедура НастроитьВариантыОтчета(Настройки) Экспорт
// Описание настроек варианта для регистрации в справочнике
ВариантНастроек = ВариантыОтчетов.ОписаниеВарианта(Настройки, "Основной");
ВариантНастроек.Описание = НСтр("ru = 'Основной вариант нашего отчета'");
ВариантНастроек.НастройкиПоУмолчанию = Истина;
КонецПроцедуры
Также полезно использовать точечное обновление конкретного отчета через консоль кода (обработку «Групповая обработка справочников и документов» или аналоги), выполнив следующий фрагмент:
// Принудительное обновление конкретного отчета
МетаданныеОтчета = Метаданные.Отчеты.ИмяВашегоОтчета;
ВариантыОтчетов.ОбновитьОтчет(МетаданныеОтчета);
Разберем ситуацию, когда отчет в расширении физически существует, но не привязан ни к одной подсистеме, которую «знает» механизм вариантов отчетов. Чтобы варианты появились в интерфейсе и справочниках, необходимо явно указать разделы, в которых они должны отображаться.
Для этого в общем модуле ВариантыОтчетовПереопределяемый (который также нужно заимствовать в расширение) найдем процедуру ОпределитьРазделыСВариантамиОтчетов и добавим в неё вашу подсистему:
&После("ОпределитьРазделыСВариантамиОтчетов")
Процедура Расш_ОпределитьРазделыСВариантамиОтчетов(Разделы)
// Добавляем вашу подсистему из расширения в список разделов с отчетами
Разделы.Добавить(Метаданные.Подсистемы.НашаСобственнаяПодсистема);
КонецПроцедуры
Иногда корень проблемы кроется в самой Схеме компоновки данных (СКД). Проанализируем настройки схемы:
Если вы используете платформу версии 8.3.18 и выше, обратите внимание на режим совместимости. В новых версиях платформы работа с расширениями стала более строгой, и отсутствие заполненного свойства Хранилище вариантов почти всегда приводит к невозможности использовать стандартную форму отчета БСП.
Подведем итог: Для исправления ошибки чаще всего достаточно установить ХранилищеВариантовОтчетов в свойствах и запустить базу с ключом /C ЗапуститьОбновлениеИнформационнойБазы. Если же отчет находится в расширении, не забудьте заимствовать хранилище и проверить привязку к подсистемам в переопределяемом модуле.