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