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

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

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

Выясняем причину: логика работы платформы «1С:Предприятие»

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

  1. Непосредственно в таблице отборов на вкладке «Настройки».
  2. В окне свойств элемента пользовательских настроек.

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

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

---

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

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

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

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

---

Обратный сценарий: как намеренно сделать «Только флажок в шапке отчета»

Иногда перед разработчиком стоит противоположная задача. Например, требуется вывести в шапку отчета простой флажок «Показывать только услуги», который при активации будет накладывать жесткий отбор по условию Номенклатура.Услуга = Истина, не требуя от пользователя выбора каких-либо параметров. Разберем по шагам, как это реализовать:

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

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

---

Сложный случай: настройка двух разных отборов по одному полю

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

  1. Добавьте на вкладку «Отбор» две отдельные строки для поля Контрагент.
  2. Для первой строки установите вид сравнения В списке, для второй — Не в списке.
  3. Очистите колонки «Представление» в обеих строках в основной таблице.
  4. Откройте свойства пользовательских настроек для первой строки (в списке):
    • Включите элемент в пользовательские настройки (режим «Быстрый доступ»).
    • Задайте уникальное представление: «Показывать контрагентов».
  5. Откройте свойства пользовательских настроек для второй строки (не в списке):
    • Включите элемент в пользовательские настройки (режим «Быстрый доступ»).
    • Задайте уникальное представление: «Исключить контрагентов».

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

---

Программная настройка представлений в коде 1С

Если вы формируете отчет программно или динамически изменяете настройки компоновщика перед выводом формы, вы можете управлять представлениями и пользовательскими настройками через встроенный язык. Рассмотрим пример кода, который решает эту задачу программным путем:


// Получаем рабочую схему и настройки компоновщика
СхемаКомпоновки = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
ТекущиеНастройки = КомпоновщикНастроек.Настройки;

// Очищаем существующие отборы для демонстрации
ТекущиеНастройки.Отбор.Элементы.Очистить();

// 1. Создаем элемент отбора по складу
НовыйОтбор = ТекущиеНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Склад");
НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйОтбор.Использование = Истина;

// ВАЖНО: оставляем НовыйОтбор.Представление пустым, чтобы не заблокировать поле выбора!

// 2. Включаем элемент в пользовательские настройки
НовыйОтбор.ИдентификаторПользовательскойНастройки = "ОтборПоСкладу";

// Находим этот элемент в пользовательских настройках для кастомизации представления
Для Каждого ЭлементПН Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
    Если ЭлементПН.ИдентификаторПользовательскойНастройки = "ОтборПоСкладу" Тогда
        // Задаем представление именно на уровне пользовательской настройки
        ЭлементПН.Представление = "Основной склад отгрузки";
        Прервать;
    КонецЕсли;
КонецЦикла;

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

← На главную