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

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

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

Реализация выбора типа сравнения в отчетах

Многие начинающие разработчики задаются вопросом: откуда в интерфейсе отчета берется выпадающий список типов сравнения? Это поведение является стандартным для поля Отбор в СКД. Чтобы этот элемент управления появился в пользовательском интерфейсе, выполним следующие шаги:

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

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

Создание гибких необязательных параметров

Использование классических параметров на вкладке Параметры часто приводит к тому, что при незаполненном значении отчет либо выдает пустой результат, либо требует обязательного ввода данных. Более элегантным и профессиональным решением является использование блока {ГДЕ} в тексте запроса.

Рассмотрим, как это работает на практике. Вместо привязки к параметрам с амперсандом (&), мы используем конструкцию:


ВЫБРАТЬ
    ВидКонтрагента КАК ВидКонтрагента
ИЗ
    Справочник.Контрагенты КАК Контрагенты
{ГДЕ
    Контрагенты.ВидКонтрагента КАК ВидКонтрагента1,
    Контрагенты.ВидКонтрагента КАК ВидКонтрагента2}

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

Группировка условий для сложной логики

Иногда требуется, чтобы два параметра работали по логике ИЛИ. Стандартное поведение СКД — соединение всех условий через И. Чтобы изменить это поведение, выполним следующее:

  1. В панели настроек (вкладка Отбор) добавим новую группу условий.
  2. В свойствах группы установим тип сравнения Группа ИЛИ.
  3. Перенесем необходимые поля внутрь этой группы.

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

Почему это лучший подход?

Использование отборов вместо жестких параметров дает разработчику ряд преимуществ:

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

← На главную