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

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

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

Выясняем причину: роль стандартных форм и БСП

Проанализируем ситуацию, описанную в сообщениях форума. Основное различие кроется не в настройках самой СКД на уровне схемы, а в том, какая форма отчета используется для вывода данных. В современных типовых конфигурациях (УТ 11, ERP, КА 2, БП 3), построенных на базе Библиотеки стандартных подсистем (БСП), для большинства отчетов используется общая форма ФормаОтчета.

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

Решение 1: Использование типовых форм конфигурации

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

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

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

Решение 2: Ручная настройка вида элемента на собственной форме

Если по каким-то причинам вы используете индивидуальную форму отчета и не хотите привязываться к БСП, нам придется настроить вид элемента управления вручную. Рассмотрим, как это сделать в редакторе формы:

Посмотрим на дерево элементов формы. Если параметры СКД выводятся через стандартную таблицу КомпоновщикНастроекПользовательскиеНастройки, прямое управление видом отдельного поля может быть затруднено, так как дерево строится динамически. Однако, если вы выносите параметр как отдельный элемент формы, выполните следующие шаги:

  1. Найдите элемент формы, связанный с вашим параметром.
  2. В палитре свойств найдите свойство Вид.
  3. Установите значение Поле флажка вместо Поле ввода.

Решение 3: Программная корректировка при создании формы

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


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

КонецПроцедуры

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

Решение 4: Настройка свойств пользовательских настроек в СКД

Проанализируем еще одну тонкую настройку в самой схеме компоновки данных, которая влияет на визуализацию. Посмотрим на вкладку Параметры в СКД:

  1. Найдите нужный булев параметр.
  2. Нажмите на кнопку редактирования свойств пользовательской настройки (иконка с «колесиком» или звездочкой в колонке справа).
  3. Найдите поле Режим редактирования.
  4. Установите значение Непосредственно.

При использовании режима Непосредственно в сочетании с типовыми формами, параметр выводится прямо в шапку отчета. Если при этом установлено Использование = Всегда, вероятность появления флажка вместо списка выбора значительно возрастает, так как система понимает, что значение должно быть доступно для быстрого изменения без открытия дополнительных диалогов.

Важные нюансы и ограничения

Выясним несколько важных моментов, которые могут помешать появлению флажка:

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

← На главную