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

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

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

Постановка задачи и понимание структуры данных

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

  1. Свойство — ссылка на план видов характеристик ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения (это сам дополнительный реквизит, например, "Важность" или "Активность").
  2. Значение — конкретное значение этого свойства, выбранное для данного элемента справочника (например, "Важный", "Покупает много" и т.д.).

Наша цель — сделать так, чтобы пользователь мог выбирать эти свойства в качестве полноценных полей отбора в шапке отчета, как если бы они были реальными реквизитами справочника.

Способ 1. Использование встроенного механизма «Характеристики» в СКД

Это самый лаконичный, производительный и правильный с точки зрения платформы способ. Если мы правильно опишем правила получения характеристик, СКД самостоятельно преобразует обращения через точку в динамические левые соединения. Мы сможем писать в условиях Партнер.Важность или Партнер.Активность, а платформа сама позаботится о выборке данных.

Разберем по шагам настройку характеристик в конструкторе схемы компоновки данных:

  1. Откроем конструктор СКД и перейдем на вкладку «Характеристики» (в зависимости от версии платформы она может находиться в верхней панели или внутри настроек наборов данных).
  2. Добавим новую строку в таблицу характеристик и заполним параметры следующим образом:
    • Тип: Выберем объект, свойства которого мы хотим получить. В нашем примере это Справочник.Партнеры.
    • Источник видов характеристик: Выбираем вариант Таблица.
    • Виды характеристик: Указываем таблицу, в которой хранятся сами настройки дополнительных реквизитов. Для БСП это ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.
    • Поле ключа: Выбираем поле Ссылка.
    • Поле имени: Поле, которое отвечает за представление свойства на форме. Лучше всего выбрать Заголовок (или Наименование, если заголовки не заполнены).
    • Поле типа значения: Выбираем поле ТипЗначения, чтобы СКД понимала, какие типы данных могут храниться в реквизитах.
    • Источник значений характеристик: Выбираем вариант Таблица.
    • Значения характеристик: Указываем табличную часть нашего справочника, где хранятся конкретные значения: Справочник.Партнеры.ДополнительныеРеквизиты.
    • Поле объекта: Указываем поле связи с владельцем. В табличной части это колонка Ссылка (ссылка на элемент справочника "Партнеры").
    • Поле вида: Указываем колонку, определяющую вид свойства. Это поле Свойство.
    • Поле значения: Поле, где хранится само значение. Это колонка Значение.

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

Как вывести отбор по характеристикам в шапку отчета

Рассмотрим, как сделать так, чтобы созданные дополнительные реквизиты выводились в пользовательские настройки отчета на форме:

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

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

Способ 2. Реализация отборов через ручные запросы (LEFT JOIN)

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

Проанализируем пример запроса, в котором мы выбираем партнеров и связываем их с табличной частью дополнительных реквизитов для получения свойств «Важность» и «Условия оплаты»:


ВЫБРАТЬ
    Партнеры.Ссылка КАК Партнер,
    ЕСТЬNULL(ТаблицаВажность.Значение, ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК Важность,
    ЕСТЬNULL(ТаблицаУсловияОплаты.Значение, ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК УсловияОплаты
ИЗ
    Справочник.Партнеры КАК Партнеры
    
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.ДополнительныеРеквизиты КАК ТаблицаВажность
        ПО Партнеры.Ссылка = ТаблицаВажность.Ссылка
        И ТаблицаВажность.Свойство = &ПараметрСвойствоВажность
        
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.ДополнительныеРеквизиты КАК ТаблицаУсловияОплаты
        ПО Партнеры.Ссылка = ТаблицаУсловияОплаты.Ссылка
        И ТаблицаУсловияОплаты.Свойство = &ПараметрСвойствоУсловияОплаты

Разберем детально ключевые особенности этого запроса:

Способ 3. Использование характеристик на уровне метаданных конфигурации

В современных версиях платформы 1С:Предприятие 8.3 появился еще более мощный механизм — определение характеристик прямо в свойствах объектов метаданных в конфигураторе.

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

Разница заключается в том, что настроенные на уровне метаданных характеристики:

Этот подход активно применяется разработчиками фирмы "1С" во всех типовых конфигурациях. Если вы работаете с типовой базой, скорее всего, характеристики для основных справочников уже настроены на уровне конфигурации, и вам достаточно просто раскрыть поле справочника в СКД и вытащить нужный доп. реквизит в область отборов.

Резюме и рекомендации

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

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