Как убрать лишнее окно «Выбор типа данных» в настройках СКД?

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

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

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

Почему появляется вариант «Поле компоновки данных»?

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

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

Способ 1. Явное приведение типов в тексте запроса

Рассмотрим самый надежный метод, который работает на уровне источника данных. Для подготовки таких запросов часто используется консоль запросов для управляемых форм. Если ваше поле в запросе получается из сложных соединений, 1С может ошибочно интерпретировать его тип как составной. Чтобы этого избежать, используем оператор ВЫРАЗИТЬ.

Разберем пример: предположим, у нас есть поле Пользователь. В тексте запроса СКД следует прописать явное приведение:


ВЫБРАТЬ
    ВЫРАЗИТЬ(Продажи.Ответственный КАК Справочник.Пользователи) КАК Пользователь,
    Продажи.СуммаОборота КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты КАК Продажи

После изменения запроса обязательно перейдите на вкладку «Настройки» в СКД, удалите старый элемент отбора и добавьте его заново. Это обновит метаданные поля в компоновщике, и лишнее окно должно исчезнуть.

Способ 2. Ограничение доступных типов в параметрах

Если проблема возникает с параметром данных, нам поможет вкладка «Параметры» в схеме компоновки. Выполним следующие шаги:

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

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

Способ 3. Установка предопределенного значения

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

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

Способ 4. Использование параметров редактирования («Быстрый выбор»)

Для полей набора данных и параметров существует полезная настройка «Параметры редактирования». Проанализируем, как она влияет на поведение формы:

Способ 5. Программная инициализация в процедуре «ПриОткрытии»

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


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

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

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


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

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

Способ 6. Необычный хак: «Связь по типу» с самим собой

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

Критически важный момент: Сброс настроек

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

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

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

Только после этого КомпоновщикНастроек обновит свою структуру в соответствии с вашими правками в Конфигураторе, и навязчивое окно «Выбора типа данных» исчезнет навсегда.

← На главную