Часто при доработке внешних отчетов или отчетов в конфигурации (например, в ЗУП) разработчики сталкиваются с ситуацией, когда после изменения наименования или ключа варианта в схеме компоновки данных (СКД), система продолжает использовать старое значение. Это приводит к тому, что в коде, вызывающем отчет, или при сохранении настроек, отчет упорно «тянет» старые идентификаторы. Рассмотрим, почему это происходит и как правильно решить эту проблему.
Когда мы работаем с КомпоновщикНастроек в СКД, система 1С опирается на параметр КлючВарианта. Этот параметр может быть жестко задан внутри самой СКД. Если при формировании отчета программно вызывается функция типа ЗарплатаКадрыОтчеты.КлючВарианта(КомпоновщикНастроек), программа пытается получить идентификатор, который был зафиксирован в параметрах СКД. Если этот ключ не обновлен в настройках параметров, возникнет конфликт.
Основная сложность заключается в том, что в стандартном представлении вкладки «Параметры» в СКД значение этого ключа может быть скрыто или недоступно для редактирования, из-за чего разработчик просто не видит, где именно зашито старое имя.
Если вы столкнулись с тем, что отчет не видит новое имя варианта, выполните следующие действия по порядку:
СКД).КлючВарианта.СКД.СКД.КлючВарианта стал доступен для редактирования.СКД и в самом отчете.Помимо изменения параметров в СКД, стоит учитывать специфику работы платформы 1С с сохраненными настройками.
1. Очистка пользовательских настроек
Если после изменения КлючВарианта отчет все еще выдает ошибки (например, «Макет не существует» или «Критичные изменения»), это означает, что в базе данных сохранились старые пользовательские настройки варианта отчета. Система пытается применить их к «новой» структуре, что приводит к конфликту.
В этом случае необходимо:
СКД.2. Работа со справочником «Варианты отчетов»
В современных типовых конфигурациях на базе БСП все варианты отчетов хранятся в справочнике ВариантыОтчетов. Если вы хотите убедиться, что система «видит» отчет правильно, можно найти его в списке «Функции для технического специалиста» (раздел Справочники -> Варианты отчетов). Там можно просмотреть, какой именно идентификатор привязан к конкретному варианту, и при необходимости очистить некорректные записи, которые могут блокировать работу.
3. Почему не стоит править XML напрямую
Как показал опыт, попытки вручную править XML-код СКД и загружать его обратно часто приводят к нарушению ссылочной целостности и ошибкам формирования макетов. Всегда предпочтительнее использовать штатные механизмы редактирования параметров в Конфигураторе, описанные выше. Если же задача требует динамического изменения ключа в зависимости от условий, лучше реализовать это программно в модуле объекта, переопределив логику формирования отчета в процедуре ПриКомпоновкеОтчета.
Проблема «зависшего» имени варианта в СКД практически всегда кроется в ограничении доступности параметра КлючВарианта. Снятие этого ограничения и последующий сброс стандартных настроек пользователем — это самый надежный и быстрый способ привести структуру отчета в соответствие с вашими текущими задачами.