Почему не применяются изменения в макете СКД внешнего отчета и как настроить отладку в 1С?

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

При разработке и отладке внешних отчетов на схеме компоновки данных (СКД) в современных конфигурациях 1С (таких как ЗУП 3, ERP, УТ 11, БП 3) программисты часто сталкиваются со странным поведением платформы. Вы вносите изменения в макет компоновки или меняете код в модуле объекта, но при повторном запуске отчет упорно выводит старые данные, а точка останова в процедуре ПриКомпоновкеРезультата перестает срабатывать. Обычная очистка кэша платформы или настроек пользователя в режиме Предприятия не приносит желаемого результата.

Давайте подробно разберем причины возникновения этой проблемы и рассмотрим все возможные способы ее решения — от штатных инструментов Библиотеки стандартных подсистем (БСП) до тонких настроек конфигуратора.

---

Выясняем причину: почему кэшируется макет и «слетает» отладка?

Прежде чем переходить к устранению проблемы, проанализируем ситуацию и поймем, почему система ведет себя подобным образом. Здесь работают два независимых механизма:

  1. Кэширование данных в БСП. Современные конфигурации построены на базе БСП. Когда вы запускаете внешний отчет, БСП регистрирует его структуру во внутренних кэширующих регистрах сведений (например, в регистре Параметры работы программы или служебных хранилищах версий расширений). При повторном открытии файла система считывает настройки не из вашего файла .erf, а из своего внутреннего кэша, считая, что структура отчета не менялась.
  2. Асинхронное (фоновое) формирование отчетов. Чтобы интерфейс программы не зависал во время построения сложных отчетов, БСП выполняет процедуру компоновки в фоновом задании. Поскольку фоновое задание запускается в отдельном системном сеансе, ваш стандартный отладчик в конфигураторе просто «не видит» этот процесс и проходит мимо точки останова в процедуре ПриКомпоновкеРезультата модулей объектов.

Ниже мы подробно разберем по шагам, как победить эти механизмы и сделать процесс разработки комфортным.

---

Способ 1. Использование встроенной обработки БСП «Обновление вспомогательных данных»

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

Выполним следующие шаги для запуска обработки:

  1. Перейдем в каталог шаблонов конфигураций на вашем компьютере. По умолчанию шаблоны БСП (SSL) устанавливаются по следующему пути:
    c:\Users\[ИмяПользователя]\AppData\Roaming\1C\1cv8\tmplts\1c\SSL\[ВерсияБСП]\ExtFiles\Инструменты разработчика\
  2. Найдем в этой папке файл под названием ОбновлениеВспомогательныхДанных.epf.
  3. Запустим нашу базу 1С в режиме «1С:Предприятие» под пользователем с полными правами (Администратор).
  4. Через главное меню откроем файл найденной обработки (Файл -> Открыть).
  5. В открывшемся окне обработки нажмем кнопку Обновить.

Обработка выполнит полную инициализацию и сброс служебного кэша БСП. После этого закройте отчет, откройте его заново — все изменения в макете СКД сразу же отобразятся на экране.

---

Способ 2. Быстрый обход кэша через переименование объекта

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

Рассмотрим этот алгоритм подробнее:

  1. Откроем внешний отчет в конфигураторе.
  2. В окне свойств отчета найдем поле Имя (не путать с Синонимом).
  3. Добавим к имени любой символ или цифру (например, было РеестрДокументов, сделаем РеестрДокументов1).
  4. Сохраним файл отчета.

Поскольку имя изменилось, БСП воспримет его как совершенно новый объект, проигнорирует старый кэш и считает структуру макета СКД напрямую из файла.

---

Способ 3. Включение отладки фоновых заданий в конфигураторе

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

Выполним по шагам настройку автоматического подключения:

  1. В конфигураторе откроем меню Отладка и выберем пункт Подключение...
  2. В появившемся окне «Подключение» нажмем кнопку Автоматическое подключение.
  3. В списке доступных типов проектов установим флажок напротив пункта Фоновые задания.
  4. Нажмем ОК во всех окнах, чтобы сохранить настройки.

Теперь при нажатии кнопки «Сформировать» в режиме Предприятия конфигуратор автоматически поймает фоновый поток, в котором выполняется построение СКД, и остановит выполнение на вашей точке останова в процедуре ПриКомпоновкеРезультата.

---

Способ 4. Создание собственной формы отчета для обхода фонового режима

Если у внешнего отчета нет собственной основной формы, БСП открывает его в своей универсальной форме. Именно эта форма принудительно отправляет формирование отчета на сервер в фоновом режиме.

Чтобы обойти это поведение без изменения настроек отладки, мы можем создать простую форму по умолчанию:

  1. В окне метаданных внешнего отчета в конфигураторе перейдем к ветке Формы.
  2. Добавим новую форму, выберем тип Форма отчета и нажмем Готово (менять элементы на форме не требуется).
  3. Убедимся, что созданная форма назначена в качестве Основной формы отчета.

С этого момента отчет будет открываться в своей локальной форме и выполняться непосредственно в текущем сеансе пользователя (синхронно). Точка останова сработает гарантированно.

---

Способ 5. Штатный механизм отладки внешних отчетов в БСП

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

Проанализируем, как использовать эту возможность:

  1. Запустим базу в режиме Предприятия и перейдем в раздел Администрирование -> Печатные формы, отчеты и обработки -> Дополнительные отчеты и обработки.
  2. Найдем наш зарегистрированный отчет и откроем его карточку.
  3. В верхней панели карточки нажмем кнопку Настройка отладки.
  4. Установим флажок «Использовать отладку для этого отчета» и в поле ввода укажем точный путь к файлу .erf на вашем локальном диске.
  5. Сохраним настройки.

Теперь при запуске отчета из любого интерфейса программы система будет обращаться не к бинарным данным, сохраненным в справочнике базы данных, а считывать актуальный файл напрямую с вашего жесткого диска. Любые изменения кода и макета будут применяться мгновенно.

---

Способ 6. Параметр запуска для обновления информационной базы

Если у вас нет под рукой обработки ОбновлениеВспомогательныхДанных.epf, можно инициировать процедуру обновления вспомогательных данных БСП с помощью специального параметра запуска платформы.

Для этого выполним следующие действия:

  1. В стартере 1С выделим нашу информационную базу и нажмем кнопку Изменить.
  2. Перейдем на последнюю страницу настроек, где находится поле Дополнительные параметры запуска.
  3. Вставим в это поле следующий ключ:

/C ЗапуститьОбновлениеИнформационнойБазы
  1. Запустим базу в режиме Предприятия.

При запуске система выполнит все процедуры обновления вспомогательных данных, перезапишет справочники идентификаторов объектов метаданных и полностью сбросит кэш вариантов отчетов. После завершения обновления не забудьте удалить этот параметр запуска, чтобы база при каждом входе не тратила время на пересчет кэша.

---

Способ 7. Сброс настроек варианта отчета пользователем

Иногда проблема кроется не в глобальном кэше БСП, а в сохраненных настройках конкретного пользователя. Платформа может запоминать старую структуру колонок и группировок макета СКД в хранилище системных настроек.

Чтобы сбросить эти настройки в режиме Предприятия, выполним простую последовательность действий:

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

Этот шаг заставит СКД полностью перечитать структуру полей, группировок и макетов оформления непосредственно из текущего файла отчета.

← На главную