Как очистить старые настройки СКД в отчете 1С:УТ 11 после внесения изменений?

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

Разработка отчетов на базе Системы компоновки данных (СКД) в современных конфигурациях, таких как 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация, часто преподносит сюрпризы. Одна из самых распространенных проблем — ситуация, когда программист вносит изменения в схему компоновки (добавляет новые поля, меняет группировки или ресурсы) в конфигураторе, но при запуске отчета в пользовательском режиме система упорно продолжает отображать старую структуру. Рассмотрим подробнее, почему это происходит и как гарантированно обновить настройки отчета.

Почему 1С «запоминает» старую форму отчета?

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

  1. Схема компоновки данных (внутри конфигурации или внешнего файла): Это эталонная структура, которую мы правим.
  2. Справочник «Варианты отчетов»: При первом запуске отчета система копирует настройки из схемы в этот справочник. Если вы изменили схему, запись в справочнике может остаться старой.
  3. Хранилище общих настроек (SystemSettingsStorage): Здесь сохраняются персональные настройки конкретного пользователя (отборы, ширина колонок, состав выбранных полей).
  4. Кэш метаданных: Локальные файлы на компьютере пользователя, которые ускоряют работу интерфейса, но могут мешать обновлению форм.

Проанализируем основные способы принудительного обновления отчета от самых простых к более сложным.

Способ 1: Использование стандартной команды сброса

Первое, что необходимо сделать — попробовать сбросить настройки через стандартный интерфейс управляемой формы. Разберем по шагам, как это реализовано в УТ 11:

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

Способ 2: Глубокая очистка через изменение варианта

Если первый способ не помог, воспользуемся более глубоким методом сброса через редактор настроек компоновки. Этот метод позволяет достучаться до внутренних XML-описаний текущего варианта.

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

После этого нажмем Завершить редактирование. Как показывает практика, именно это действие часто «проталкивает» изменения из конфигуратора в текущий сеанс пользователя, так как заставляет систему перечитать Settings из объекта метаданных.

Способ 3: Обновление через «Конструктор настроек»

Рассмотрим метод, который помог автору обсуждаемой темы. Иногда даже ручной сброс варианта не помогает, если структура СКД изменилась радикально. В этом случае помогает принудительная перезапись настроек через встроенный конструктор.

  1. Откроем отчет и перейдем в Изменить вариант.
  2. В окне настроек найдем кнопку (или пункт меню) Конструктор настроек.
  3. Просто пройдем по шагам конструктора (выбор типа отчета, полей, группировок) и нажмем ОК.

Почему это работает? При использовании конструктора система заново генерирует объект настроек и принудительно записывает его в хранилище, заменяя «битый» или устаревший кэш новыми данными. Это действие синхронизирует визуальное представление с программной логикой СКД.

Способ 4: Работа со справочником «Варианты отчетов» (для БСП)

В типовых решениях (УТ 11, ERP) за настройки отвечает подсистема «Варианты отчетов». Если мы имеем дело с внешним отчетом или добавленным в расширение, 1С создает запись в специальном справочнике. Выясним причину «залипания» через этот механизм:

Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Отчеты — Варианты отчетов. Найдем в списке наш проблемный отчет. Если мы видим там старое наименование или старые настройки, попробуем просто удалить этот вариант (или пометить на удаление). При следующем открытии отчета система не найдет сохраненных настроек в базе и будет вынуждена создать их с нуля на основе вашей новой схемы из файла или конфигурации.

Способ 5: Особенности внешних отчетов и кэш сеанса

Если вы отлаживаете внешний отчет через Файл — Открыть, помните, что 1С кэширует структуру формы в рамках текущего сеанса. Посмотрим на алгоритм действий для гарантированного обновления:

  1. Закроем все окна отчета.
  2. Внесем изменения в конфигураторе и обязательно сохраним файл.
  3. Если отчет зарегистрирован в справочнике «Дополнительные отчеты и обработки», необходимо зайти в карточку этого отчета и нажать Обновить из файла.
  4. Перезапустим сеанс 1С (полный выход и вход), чтобы очистить оперативную память сервера приложений и клиента от старых определений формы.

Способ 6: Программный сброс настроек (для разработчиков)

Если вы хотите, чтобы при каждом обновлении версии отчета у пользователей автоматически сбрасывались настройки, можно использовать программный метод в модуле объекта отчета. Разберем пример использования обработчика ПриКомпоновкеРезультата.


Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Если нужно принудительно установить настройки из схемы
    // Внимание: это удалит пользовательские отборы!
    Если ПараметрыСеанса.НужноОбновитьНастройкиОтчета Тогда 
        КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    КонецЕсли;

КонецПроцедуры

Более мягкий способ — проверить соответствие версии настроек. Мы можем добавить в параметры СКД скрытый параметр ВерсияНастроек. При открытии отчета в коде модуля формы мы можем сравнить текущую версию в сохраненных настройках с версией в схеме, и если они различаются — вызвать метод ЗагрузитьНастройки().

Резюме

Проблема «старой формы» в 1С:УТ 11 — это почти всегда проблема кэширования настроек в базе данных (справочник «Варианты отчетов») или в системном хранилище. Чтобы решить её быстро:

Использование этих методов позволит вам избежать траты времени на борьбу с «призраками» старого кода и сосредоточиться на качественной разработке бизнес-логики отчетов.

← На главную