Почему свойство Выбор групп и элементов не скрывает папки и как это исправить?

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

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

Разберем теорию: Валидация vs Фильтрация

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

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

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

Способ 1. Смена режима отображения и установка отбора

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

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


ПараметрыОткрытия = Новый Структура;
// Создаем структуру отбора, чтобы исключить группы
Отбор = Новый Структура;
Отбор.Вставить("ЭтоГруппа", Ложь);
ПараметрыОткрытия.Вставить("Отбор", Отбор);

// Указываем режим выбора
ПараметрыОткрытия.Вставить("РежимВыбора", Истина);

// Открываем форму выбора справочника "Товары"
ФормаВыбора = ПолучитьФорму("Справочник.Товары.ФормаВыбора", ПараметрыОткрытия, Элементы.НужноеПоле);

// Важный момент: принудительно устанавливаем режим отображения "Список"
ФормаВыбора.Элементы.Список.Отображение = ОтображениеТаблицы.Список;

ФормаВыбора.Открыть();

Почему важно устанавливать ОтображениеТаблицы.Список? Если оставить режим «Дерево» или «Иерархический список», то даже при отборе ЭтоГруппа = Ложь структура может выглядеть некорректно. В иерархических моделях данные требуют отображения «родителей». Переключение в плоский список полностью решает проблему «пустых папок».

Способ 2. Использование Условного оформления

Существует более «хитрый» метод, который позволяет скрыть группы, даже если вы не хотите менять программный код открытия формы. Мы можем воспользоваться механизмом Условного оформления динамического списка. Этот метод хорош тем, что его можно настроить прямо в конфигураторе или в пользовательском режиме.

Выясним алгоритм настройки:

  1. Откроем форму выбора справочника в конфигураторе.
  2. Перейдем к свойствам динамического списка (обычно это реквизит Список).
  3. Откроем настройку УсловноеОформление.
  4. Добавим новый элемент оформления:
    • Оформление: установим параметр Видимость в значение Ложь.
    • Условие: выберем поле ЭтоГруппа со значением Равно Истина.
    • Оформляемые поля: выберем все поля списка или основное поле наименования.

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

Способ 3. Свойство «Быстрый выбор»

Если справочник, с которым мы работаем, содержит небольшое количество записей (например, виды номенклатуры или категории), рассмотрим использование свойства БыстрыйВыбор (Fast Choice).

Проанализируем преимущества этого подхода:

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

Нюансы работы с платформой и версиями

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

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

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

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

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

  1. Убедимся, что свойство ВыборГруппИЭлементов установлено в значение Элементы (для запрета выбора папок).
  2. Принудительно переключим режим отображения списка в состояние Список (вместо Иерархия).
  3. Наложим отбор ЭтоГруппа = Ложь на динамический список формы.

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

← На главную