Как убрать выпадающий список и вернуть кнопку выбора «три точки» в отчетах УТ 11 и ERP 2

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

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

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

Почему стандартные настройки СКД не работают?

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

Выясним причину такого поведения платформы:

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

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

Способ 1. Глобальное изменение поведения через расширение (без кода)

Если перед нами стоит задача сделать выбор удобным не только в конкретном отчете, но и во всех документах, справочниках и отчетах системы, лучшим решением будет использование механизма расширений. Это позволит вернуть кнопку выбора «...» централизованно.

Выполним следующие шаги:

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

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

Способ 2. Программное отключение выпадающего списка для конкретного отчета

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

В зависимости от архитектуры вашего отчета, прописать код можно в модуле формы отчета в событии ПриСозданииНаСервере или задействовать переопределяемый модуль Библиотеки Стандартных Подсистем (БСП) (например, ОтчетыУТПереопределяемый или аналогичный в вашей версии конфигурации).

Рассмотрим пример кода, который находит элемент отбора на форме и переопределяет его свойства:


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

Этот способ позволяет точечно управлять интерфейсом конкретного отчета, не затрагивая остальную функциональность ERP-системы.

Важные особенности кэширования в БСП

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

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

  1. Откройте отчет в режиме «1С:Предприятие».
  2. Перейдите в меню Еще.
  3. Выберите пункт Установить стандартные настройки.

После сброса настроек форма перестроится по новым правилам, и кнопка выбора отобразится корректно.

Альтернативный вариант для пользователей

Если вы не хотите менять программный код или метаданные, можно использовать встроенный механизм автоподбора (ввода по строке). Объясните пользователям, что нажимать на кнопку выбора вообще не обязательно. Достаточно начать вводить первые буквы названия нужного подразделения непосредственно в текстовое поле отбора, и платформа мгновенно предложит подходящий вариант из базы данных.

← На главную