Как вывести параметры и отборы СКД в свернутом виде

Программист 1С v8.3 (Управляемые формы)
← На главную

При разработке сложных отчетов в системе компоновки данных (СКД) мы часто сталкиваемся с тем, что «шапка» отчета, содержащая параметры и отборы, занимает слишком много места. Это затрудняет восприятие самой информации, особенно если пользователь установил множество фильтров. В этой статье мы разберем, как сделать вывод настроек более компактным или реализовать их сворачивание в «плюсик», не затрагивая при этом группировки строк в самом теле отчета.

Проблема стандартного метода сворачивания строк

Многие разработчики пробуют решить задачу через метод ПоказатьУровеньГруппировокСтрок(0), применяемый к результату компоновки. Однако проанализируем ситуацию: этот метод воздействует на весь ТабличныйДокумент целиком. Если в вашем отчете есть иерархические данные или группировки, они также схлопнутся до самого верхнего уровня. Нам же нужно добиться избирательного поведения — скрыть только служебную информацию (параметры и отборы), оставив данные развернутыми.

Способ 1. Программная группировка области настроек

Это наиболее гибкий метод, позволяющий программно добавить интерактивный «минус» (группировку) слева от секции с настройками. Рассмотрим по шагам, как это реализовать в модуле формы отчета или в модуле объекта при выводе результата.

Нам необходимо определить, какие именно строки занимает шапка отчета. После того как ПроцессорВывода закончил свою работу, мы можем обратиться к области строк и сгруппировать их. Выясним причину, по которой это удобно: мы сами контролируем границы группировки.

Пример программной реализации:


// В процедуре ПриКомпоновкеРезультата или после вывода
// Определяем количество строк, которые заняли настройки.
// Допустим, мы знаем, что настройки выводятся с 1 по 5 строку.

ОбластьНастроек = ЭлементыФормы.Результат.Область(1,, 5,);
ОбластьНастроек.Сгруппировать("Настройки отчета");

// Чтобы настройки сразу были свернуты:
ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0); // Но это свернет всё.
// Правильнее использовать:
ЭлементыФормы.Результат.СвернутьГруппуСтрок(1);

Использование именованных областей позволяет сделать этот процесс более надежным. Если выводить настройки в отдельную таблицу (через прочие настройки СКД), их границы будет легче вычислить программно.

Способ 2. Использование механизма «Представления» для компактности

Рассмотрим вариант, когда нам не обязательно физически сворачивать строки, но нужно сделать их максимально лаконичными. В настройках компоновки данных для каждого отбора или параметра есть свойство Представление.

Разберем, как это работает: если пользователь выбрал в отборе десять различных складов, по умолчанию в шапке отчета отобразится длинная строка со списком всех складов. Если же мы установим в колонке Представление текст «Фильтр по складам», то в итоговом документе вместо перечисления будет выведена именно эта короткая фраза. Это значительно экономит место по вертикали и делает заголовок аккуратным.

Способ 3. Изменение размещения настроек в схеме компоновки

В СКД на закладке Прочие настройки существует важный параметр — Размещение настроек. Посмотрим на доступные варианты:

  1. Не выводить — настройки вообще не попадут в печатную форму (но они останутся доступны пользователю в форме настроек).
  2. В начале отчета — стандартное поведение, загромождающее верхнюю часть.
  3. В отдельной таблице — настройки выводятся отдельным блоком.
  4. В конце отчета — настройки переносятся вниз, освобождая место для данных.

Если мы выберем вариант «В отдельной таблице», это упростит нам программный поиск границ области для последующего сворачивания, так как между настройками и данными будет четкий разрыв, который можно отследить в коде.

Способ 4. Управление режимом отображения элементов

Проанализируем возможность управления видимостью настроек через пользовательский интерфейс. Для каждого элемента пользовательских настроек (отбора, параметра) можно установить Режим отображения:

Переведя второстепенные фильтры в режим Обычный, мы автоматически «сворачиваем» их — они перестают отображаться в основном заголовке отчета, но остаются доступны пользователю через кнопку «Настройки».

Способ 5. Интерфейсный подход (БСП)

Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), рекомендуется использовать возможности управляемых форм. Вместо того чтобы выводить настройки непосредственно в ДокументРезультат, мы можем разместить их в специальной сворачиваемой группе на самой форме отчета.

Для этого в конструкторе формы отчета создадим группу типа Свертываемая группа и разместим в ней таблицу пользовательских настроек. Таким образом, пользователь сам сможет одним кликом «схлопнуть» панель фильтров, освободив экранное пространство, при этом печатная форма останется чистой.

Заключение

Мы рассмотрели несколько подходов к решению задачи. Для программного сворачивания в самом табличном документе используйте метод Сгруппировать() для конкретного диапазона строк. Для визуальной чистоты используйте Представление и настройки Размещение настроек. Выбор конкретного метода зависит от того, должен ли отчет выглядеть свернутым только на экране или также и в печатной версии документа.

← На главную