При разработке отчетов на схеме компоновки данных (СКД) разработчики часто задают уникальное значение свойства Имя для группировок структуры отчета. Это необходимо, если алгоритмы обработки данных или формирование печатных форм завязаны на программный поиск конкретных элементов структуры. В Конфигураторе и в специализированных консолях СКД назначенное имя выводится в круглых скобках рядом с полем группировки. Однако при открытии диалога настроек отчета в режиме Предприятия в обычных формах имена группировок исчезают.
Проанализируем причину такого поведения платформы 1С:Предприятие и рассмотрим практические способы решения этой проблемы.
Разберем, почему возникает данное ограничение. В обычных формах диалог настройки структуры отчета по умолчанию выводит только состав полей группировки или их пользовательские заголовки. Свойство Имя объекта ГруппировкаКомпоновкиДанных используется платформой 1С в первую очередь как служебный идентификатор для обращения к элементам структуры из кода или выражений пользовательских полей.
Отображение этого свойства в круглых скобках штатно реализовано в Конфигураторе и в консоли схемы компоновки данных, но платформенный диалог настроек отчета для обычных форм его не выводит.
Рассмотрим основной способ решения задачи — разработку пользовательской формы настроек отчета. Если стандартное окно настройки структуры не выводит имя группировки, создадим собственную форму диалога.
Разберем по шагам, как это реализовать:
Имя группировки.КомпоновщикНастроек.Настройки.Структура и свяжем ячейку колонки с именем текущей группировки.Посмотрим на пример, когда отчет построен на базе типовой формы настройки структуры. Если у нас есть доступ к событию оформления строк табличного поля структуры (например, ПриВыводеСтроки или ПриПолученииДанных), мы можем программно дополнить представление группировки ее именем.
Проанализируем пример кода для события ПриВыводеСтроки табличного поля структуры:
Процедура ДеревоСтруктурыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ЭлементСтруктуры = ДанныеСтроки.Источник;
Если ТипЗнч(ЭлементСтруктуры) = Тип("ГруппировкаКомпоновкиДанных") Тогда
ИмяГруппировки = ЭлементСтруктуры.Имя;
Если Не ПустаяСтрока(ИмяГруппировки) Тогда
ОформлениеСтроки.Ячейки.Представление.Текст = Строка(ЭлементСтруктуры) + " (" + ИмяГруппировки + ")";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Рассмотрим альтернативный вариант: если задача заключается лишь в том, чтобы дать пользователю визуальный ориентир для конкретной группировки, можно использовать свойство ПредставлениеПользовательскойНастройки объекта ГруппировкаКомпоновкиДанных. Это представление отображается в пользовательских настройках отчета и позволяет визуально идентифицировать нужный элемент без модификации форм.