Как восстановить настройки Универсального отчета при переходе с БСП 2 на БСП 3

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход между мажорными версиями Библиотеки стандартных подсистем (БСП) — это всегда серьезный процесс, затрагивающий фундаментальные механизмы работы конфигурации. Одной из наиболее частых проблем при обновлении с версии 2.х на 3.х является некорректная работа или полная потеря настроек Универсального отчета. Пользователи сталкиваются с тем, что сохраненные варианты перестают отображать данные, не находят объекты метаданных или вовсе пропадают из интерфейса. В рамках этой статьи мы подробно разберем причины этой проблемы и изучим несколько способов ее решения — от стандартных процедур обновления до программных «костылей».

Почему «слетают» настройки: анализируем причины

Для начала выясним причину такого поведения системы. В БСП 3.х архитектура подсистемы «Варианты отчетов» и самого Универсального отчета претерпела значительные изменения. Основные факторы, влияющие на совместимость:

  1. Изменение структуры параметров. В старых версиях параметры выбора типа и имени объекта метаданных могли храниться в упрощенном виде. В новых версиях БСП эти параметры жестко привязаны к механизму пользовательских настроек компоновки данных.
  2. Идентификаторы настроек. Если у параметра ИмяОбъектаМетаданных отсутствует ИдентификаторПользовательскойНастройки, форма отчета в БСП 3.х не может связать сохраненное значение с элементом управления на форме.
  3. Фоновые обработчики. Многие данные в БСП обновляются не мгновенно в момент обновления конфигурации, а через процедуры отложенного обновления информационной базы.

Способ 1. Принудительный запуск процедур обновления данных

Рассмотрим стандартный механизм, заложенный разработчиками БСП для миграции данных. Часто проблема заключается в том, что регламентные задания по обновлению еще не отработали или завершились с ошибкой. Мы можем запустить процесс обработки данных для перехода на новую версию вручную. Для этого проанализируем следующий код, который позволяет зарегистрировать данные и выполнить их обработку:


&НаСервереБезКонтекста
Процедура ЗапуститьОбновлениеДанных()
    // Регистрируем данные справочника ВариантыОтчетов для обработки
    Параметры = ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке();
    Параметры.Очередь = 1;
    Справочники.ВариантыОтчетов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры);
    
    // Запускаем процедуру непосредственной обработки
    ПараметрыОбработки = ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке();
    ПараметрыОбработки.Очередь = 1;
    ПараметрыОбработки.Вставить("ОбработкаЗавершена", Ложь);
    Справочники.ВариантыОтчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию(ПараметрыОбработки);
КонецПроцедуры

При выполнении этого кода система попытается сконвертировать старые настройки в новый формат. Важно: перед запуском убедитесь, что в справочнике Идентификаторы объектов метаданных актуализированы все записи, так как Универсальный отчет опирается на них при поиске таблиц (справочников, регистров).

Способ 2. Интерфейсный нюанс с возвратом к стандартным настройкам

Разберем ситуацию, когда настройки вроде бы загружены, но командная панель отчета работает некорректно (например, не видна кнопка загрузки настроек). В версиях БСП, соответствующих актуальным типовым конфигурациям, существует особенность: доступ к некоторым функциям Универсального отчета открывается только после инициализации схемы. Попробуем выполнить следующие действия:

  1. Откройте проблемный Универсальный отчет.
  2. Выполните команду «Установить стандартные настройки» (через меню «Еще»).
  3. После этого проверьте появление кнопок управления настройками.

Этот простой шаг часто «оживляет» динамический интерфейс формы, так как при сбросе настроек вызывается полная переинициализация компоновщика и программное перестроение командной панели.

Способ 3. Программная коррекция (исправление «потерянных» идентификаторов)

Если стандартные методы не помогают, проанализируем ситуацию на уровне кода СКД. Основная проблема часто кроется в том, что при обновлении был потерян ИдентификаторПользовательскойНастройки для ключевых параметров Универсального отчета. Мы можем внедрить небольшой фрагмент кода в процедуру ПередЗагрузкойНастроекВКомпоновщик, чтобы восстановить эту связь «на лету».

Посмотрим на пример реализации такого исправления:


Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, Настройки, ПользовательскиеНастройки) Экспорт
    // Если настройки не переданы, берем их из компоновщика
    Если Настройки = Неопределено Тогда 
        Настройки = КомпоновщикНастроек.Настройки;
    КонецЕсли;

    // Поиск параметра ИмяОбъектаМетаданных в настройках
    ПараметрыДанныхИмяОбъектаМетаданных = Настройки.ПараметрыДанных.Элементы.Найти("ИмяОбъектаМетаданных"); 
    
    // Если параметр найден, но у него отсутствует идентификатор пользовательской настройки
    Если ПараметрыДанныхИмяОбъектаМетаданных <> Неопределено 
        И ПустаяСтрока(ПараметрыДанныхИмяОбъектаМетаданных.ИдентификаторПользовательскойНастройки) Тогда
        
        // Генерируем новый уникальный идентификатор для связи с интерфейсом
        ПараметрыДанныхИмяОбъектаМетаданных.ИдентификаторПользовательскойНастройки = "ID_" + СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");    
    КонецЕсли;
КонецПроцедуры

Этот код проверяет, назначен ли параметру ИмяОбъектаМетаданных уникальный идентификатор. Без него платформа 1С не понимает, что значение этого параметра нужно отображать в соответствующем поле на форме отчета. Принудительная генерация УникальныйИдентификатор позволяет системе корректно подтянуть объект метаданных из сохраненных настроек.

Дополнительные рекомендации

Выясним еще несколько важных моментов, которые стоит проверить при потере настроек:

Проверка журнала регистрации. Часто ошибки при загрузке настроек в БСП 3.х не выводятся на экран пользователю, но фиксируются в журнале регистрации. Рекомендуется отфильтровать события по подсистеме «Варианты отчетов» и проверить наличие исключений типа «Ошибка преобразования XML».

Очистка кэша настроек. Иногда старый кэш в ХранилищеОбщихНастроек конфликтует с новой структурой формы. Если конкретный вариант отчета не открывается, попробуйте воспользоваться обработкой «Управление настройками пользователей» и очистить настройки именно для Универсального отчета для данного пользователя.

Итог: Проблема «слетевших» настроек при переходе с БСП 2 на 3 чаще всего носит технический характер и связана с незавершенными обработчиками обновления или отсутствием уникальных идентификаторов в структуре параметров СКД. Использование приведенного выше программного решения («костыля») позволяет быстро восстановить работоспособность отчетов, не дожидаясь завершения длительных фоновых процессов.

← На главную