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