Как вывести настройки отчета СКД на форму 1С и сохранять историю отборов?

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

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

Особенно актуален этот вопрос для Обычных форм (ОФ), где механизмы сохранения и вывода настроек отличаются от Управляемых форм (УФ). Проанализируем ситуацию и рассмотрим несколько рабочих способов решения этой задачи.

Вывод настроек отбора на форму отчета

Если мы работаем с обычными формами, настройки не появляются на форме "по волшебству". Чтобы вывести отборы, нам потребуется использовать специальный реквизит.

  1. Создаем на форме новый реквизит с типом КомпоновщикНастроекКомпоновкиДанных (обычно у отчета на СКД он уже есть в качестве основного реквизита).
  2. Добавляем на форму элемент управления Табличное поле.
  3. В свойствах этого табличного поля в качестве данных указываем путь к отборам, например: КомпоновщикНастроек.Настройки.Отбор.

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

Как вывести структуру отчета и группировки

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

Механизм аналогичен выводу отборов. Нам нужно использовать элементы управления "Табличное поле" и связать их с соответствующими свойствами компоновщика настроек:

  1. Добавьте на форму новое табличное поле для структуры. В поле "Данные" укажите: КомпоновщикНастроек.Настройки.Структура. Это позволит управлять группировками.
  2. Для управления сортировкой добавьте еще одно поле и укажите данные: КомпоновщикНастроек.Настройки.Порядок.
  3. Для выделения строк цветом и шрифтами пропишите: КомпоновщикНастроек.Настройки.УсловноеОформление.

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

Best Practice: Пользовательские настройки СКД

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

  1. Откройте схему компоновки данных в конфигураторе и перейдите на вкладку "Настройки".
  2. Выделите нужный отбор, параметр или группировку.
  3. Нажмите кнопку свойств (в нижней части экрана) и установите флажок Включать в пользовательские настройки.
  4. На форму отчета выведите всего одно Табличное поле. В его свойстве "Данные" укажите: КомпоновщикНастроек.ПользовательскиеНастройки.

Таким образом, на форме появится аккуратная таблица, в которой будут собраны только те настройки, которые разработчик разрешил менять. Это защитит отчет от случайных поломок неопытными пользователями и сделает интерфейс лаконичным.

Сохранение настроек при закрытии отчета

Выясним причину, почему отборы пропадают после переоткрытия формы, и как это исправить. В управляемых формах (УФ) всё работает "из коробки" — если отчет сделан на СКД, введенные данные сохраняются автоматически. Достаточно проверить, что в свойствах формы стоит флаг автоматического сохранения. Но в обычных формах (ОФ) потребуется выполнить несколько дополнительных действий.

Для сохранения последних введенных пользователем отборов сделайте следующее:

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

Если требуется более сложная логика (например, сохранение для разных пользователей или привязка к определенным условиям), можно использовать программный подход. Рассмотрим события формы ПриСохраненииДанныхВНастройки и ПриЗагрузкеДанныхИзНастроек. В них можно вручную записывать и читать данные, используя объект ХранилищеСистемныхНастроек.

Использование вариантов отчета (Хранилище вариантов)

Проанализируем ситуацию, когда пользователю нужно не просто запомнить последний отбор, а регулярно переключаться между разными сложными наборами фильтров (например, "Отчет по менеджерам" и "Отчет по регионам"). Простого сохранения значений формы тут будет недостаточно.

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

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

← На главную