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