Как разрешить пользователю выбирать произвольные поля в отчете на СКД?

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

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

Шаг 1. Подготовка набора данных и расширения языка запросов СКД

Посмотрим на частую ошибку разработчиков: в основном тексте запроса перечисляются только два или три конкретных поля. Если реквизиты не описаны в запросе или в расширении СКД, платформа просто не предоставит их пользователю для добавления в структуру колонок.

Разберем два варианта добавления полей в схему:

  1. Добавление полей напрямую в секцию ВЫБРАТЬ: если мы просто перечислим все реквизиты в основном запросе, платформа будет считывать их из базы данных всегда, даже когда пользователь отключил их отображение в режиме предприятия. Это может замедлить формирование отчета.
  2. Использование расширения языка запросов компоновки данных: на вкладке «Компоновка данных» в конструкторе запроса мы можем добавить поля на закладку «Поля». В тексте запроса появится секция в фигурных скобках {ВЫБРАТЬ ...}. Поля, указанные в этой секции, попадают в список доступных полей СКД, но физически извлекаются из базы данных только тогда, когда пользователь действительно вывел их в отчет.

Проанализируем пример текста запроса с использованием расширения СКД:


ВЫБРАТЬ
	СправочникНоменклатура.Ссылка КАК Ссылка,
	СправочникНоменклатура.Наименование КАК Наименование
{ВЫБРАТЬ
	Ссылка.*,
	СправочникНоменклатура.Код,
	СправочникНоменклатура.Артикул,
	СправочникНоменклатура.ВидНоменклатуры.*}
ИЗ
	Справочник.Номенклатура КАК СправочникНоменклатура

Конструкция Ссылка.* или явное перечисление ссылочных реквизитов со звездочкой позволяет пользователю обращаться ко всем дочерним реквизитам объекта через точку (например, получить свойства вида номенклатуры).

Шаг 2. Вывод выбранных полей в пользовательские настройки

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

  1. Перейдем на закладку «Настройки» в схеме компоновки данных.
  2. В окне структуры выберем группировку или отчет в целом.
  3. В нижней части перейдем на закладку «Выбранные поля».
  4. Нажмем кнопку «Свойства элемента пользовательских настроек» (значок в виде синего значка или карандаша рядом со списком полей).
  5. Установим флаг «Включать в пользовательские настройки».
  6. В поле «Режим редактирования» укажем Быстрый доступ или Обычный, чтобы список полей отображался непосредственно на панели настроек отчета.

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

Шаг 3. Использование расширенного режима и сохранение вариантов

Выясним, как работает штатный механизм выбора полей, если разработчик не вывел настройки на панель:

  1. В режиме «1С:Предприятие» нажмем кнопку «Настройки...» в командной панели отчета.
  2. В открывшейся форме переключим вид в положение «Расширенный» (переключатель внизу формы).
  3. Перейдем на вкладку «Поля и сортировки». В левой колонке будут показаны все доступные поля, которые мы объявили в наборе данных, а в правой — состав колонок отчета.
  4. Пользователь может перетаскивать любые доступные реквизиты, менять их порядок и отключать видимость.
  5. Чтобы результат не сбросился при следующем открытии, нажмем меню «Еще» → «Вариант отчета» → «Сохранить вариант отчета...» (или команду «Сохранить как...»). В результате будет сохранен персональный вариант отчета со всеми выбранными полями.

Шаг 4. Управление ограничениями полей

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

  1. Запретить поле (выбор): скрывает реквизит из списка доступных для вывода колонок.
  2. Запретить отбор: оставляет возможность вывести поле в отчет, но исключает его из фильтров.
  3. Запретить использование реквизитов: запрещает разыменование ссылочного типа через точку, что предотвращает создание неоптимальных неявных соединений в запросе к СУБД.

Грамотная комбинация секции {ВЫБРАТЬ} в запросе и вывода выбранных полей в пользовательские настройки обеспечивает удобство конечных пользователей и сохраняет высокую производительность формирования отчета.

← На главную