При разработке и отладке внешних отчетов на схеме компоновки данных (СКД) в современных конфигурациях 1С (таких как ЗУП 3, ERP, УТ 11, БП 3) программисты часто сталкиваются со странным поведением платформы. Вы вносите изменения в макет компоновки или меняете код в модуле объекта, но при повторном запуске отчет упорно выводит старые данные, а точка останова в процедуре ПриКомпоновкеРезультата перестает срабатывать. Обычная очистка кэша платформы или настроек пользователя в режиме Предприятия не приносит желаемого результата.
Давайте подробно разберем причины возникновения этой проблемы и рассмотрим все возможные способы ее решения — от штатных инструментов Библиотеки стандартных подсистем (БСП) до тонких настроек конфигуратора.
---
Прежде чем переходить к устранению проблемы, проанализируем ситуацию и поймем, почему система ведет себя подобным образом. Здесь работают два независимых механизма:
Параметры работы программы или служебных хранилищах версий расширений). При повторном открытии файла система считывает настройки не из вашего файла .erf, а из своего внутреннего кэша, считая, что структура отчета не менялась.ПриКомпоновкеРезультата модулей объектов.Ниже мы подробно разберем по шагам, как победить эти механизмы и сделать процесс разработки комфортным.
---
Это классическое и самое надежное решение проблемы кэширования метаданных. В составе дистрибутива БСП поставляется специальный инструмент для разработчиков, который принудительно обновляет все внутренние структуры данных в информационной базе.
Выполним следующие шаги для запуска обработки:
c:\Users\[ИмяПользователя]\AppData\Roaming\1C\1cv8\tmplts\1c\SSL\[ВерсияБСП]\ExtFiles\Инструменты разработчика\
Обработка выполнит полную инициализацию и сброс служебного кэша БСП. После этого закройте отчет, откройте его заново — все изменения в макете СКД сразу же отобразятся на экране.
---
Если вам нужно быстро проверить небольшое изменение в макете, а искать и запускать обработку нет времени, можно применить простой трюк с переименованием. БСП идентифицирует внешний отчет по его внутреннему имени метаданных.
Рассмотрим этот алгоритм подробнее:
РеестрДокументов, сделаем РеестрДокументов1).Поскольку имя изменилось, БСП воспримет его как совершенно новый объект, проигнорирует старый кэш и считает структуру макета СКД напрямую из файла.
---
Если изменения в макете уже применились, но точка останова в модуле объекта по-прежнему игнорируется, нам необходимо настроить отладчик конфигуратора на перехват фоновых сеансов.
Выполним по шагам настройку автоматического подключения:
Теперь при нажатии кнопки «Сформировать» в режиме Предприятия конфигуратор автоматически поймает фоновый поток, в котором выполняется построение СКД, и остановит выполнение на вашей точке останова в процедуре ПриКомпоновкеРезультата.
---
Если у внешнего отчета нет собственной основной формы, БСП открывает его в своей универсальной форме. Именно эта форма принудительно отправляет формирование отчета на сервер в фоновом режиме.
Чтобы обойти это поведение без изменения настроек отладки, мы можем создать простую форму по умолчанию:
С этого момента отчет будет открываться в своей локальной форме и выполняться непосредственно в текущем сеансе пользователя (синхронно). Точка останова сработает гарантированно.
---
В актуальных версиях БСП разработчики предусмотрели великолепный встроенный механизм отладки, который позволяет не загружать каждый раз файл отчета заново в справочник «Дополнительные отчеты и обработки».
Проанализируем, как использовать эту возможность:
Теперь при запуске отчета из любого интерфейса программы система будет обращаться не к бинарным данным, сохраненным в справочнике базы данных, а считывать актуальный файл напрямую с вашего жесткого диска. Любые изменения кода и макета будут применяться мгновенно.
---
Если у вас нет под рукой обработки ОбновлениеВспомогательныхДанных.epf, можно инициировать процедуру обновления вспомогательных данных БСП с помощью специального параметра запуска платформы.
Для этого выполним следующие действия:
/C ЗапуститьОбновлениеИнформационнойБазы
При запуске система выполнит все процедуры обновления вспомогательных данных, перезапишет справочники идентификаторов объектов метаданных и полностью сбросит кэш вариантов отчетов. После завершения обновления не забудьте удалить этот параметр запуска, чтобы база при каждом входе не тратила время на пересчет кэша.
---
Иногда проблема кроется не в глобальном кэше БСП, а в сохраненных настройках конкретного пользователя. Платформа может запоминать старую структуру колонок и группировок макета СКД в хранилище системных настроек.
Чтобы сбросить эти настройки в режиме Предприятия, выполним простую последовательность действий:
Этот шаг заставит СКД полностью перечитать структуру полей, группировок и макетов оформления непосредственно из текущего файла отчета.