Как разрешить выбор групп справочника в регистре сведений на Обычных формах

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

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

Разбор механизма наследования свойств в Обычных формах

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

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

Выясним причину на конкретном примере: вы создали независимый регистр сведений, добавили измерение Номенклатура, сгенерировали форму записи, а только потом осознали, что нужно разрешить выбор папок. Вы меняете свойство в измерении на «Группы и элементы», но в открытой форме диалог выбора по-прежнему фильтрует только конечные позиции.

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

Это самый быстрый способ исправить проблему, если форма уже содержит множество других настроек и элементов, и вы не хотите её пересоздавать. Разберем по шагам:

  1. Откройте нужную форму регистра сведений в конфигураторе.
  2. Найдите поле ввода, связанное с измерением (например, поле для выбора Номенклатуры).
  3. Нажмите правую кнопку мыши и выберите пункт «Свойства».
  4. В окне свойств найдите категорию «Использование».
  5. Найдите параметр «Выбор групп и элементов». Скорее всего, там всё еще стоит значение Элементы.
  6. Установите значение Группы и элементы.

Теперь при интерактивном нажатии на кнопку выбора в режиме «Предприятие» система позволит вам выбрать папку справочника в качестве значения измерения регистра.

Решение 2: Обновление через «Размещение данных»

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

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

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

Решение 3: Программная установка режима выбора

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


Процедура ПриОткрытии()
    // Устанавливаем возможность выбора групп программно
    ЭлементыФормы.Номенклатура.ВыборГруппИЭлементов = ИспользованиеВыбораГруппИЭлементов.ГруппыИЭлементы;
КонецПроцедуры

Использование системного перечисления ИспользованиеВыбораГруппИЭлементов гарантирует, что даже если в конфигураторе настройки «сбиты», при запуске формы пользователь получит нужный функционал.

Особенности хранения групп в измерениях регистра

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

Если вы будете пытаться получить данные из регистра методом Получить(), передавая в качестве ключа конкретный «Холодильник», входящий в эту папку, система ничего не найдет. Регистр сведений работает по точному соответствию ссылок в измерениях.

Для того чтобы учитывать иерархию при получении данных, необходимо использовать запросы с оператором В ИЕРАРХИИ. Проанализируем пример запроса:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЦеныНоменклатуры.Цена
    |ИЗ
    |   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    |ГДЕ
    |   ЦеныНоменклатуры.Номенклатура В ИЕРАРХИИ(&ВыбраннаяНоменклатура)";

Запрос.УстановитьПараметр("ВыбраннаяНоменклатура", ТекущаяНоменклатура);

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

Резюме

Мы выяснили, что в Обычных формах 1С 8.3 существует разрыв между метаданными и интерфейсными элементами, если форма была создана до изменения свойств объекта. Для решения проблемы с выбором групп в регистре сведений необходимо либо вручную изменить свойства ВыборГруппИЭлементов в окне свойств поля формы, либо программно инициализировать это свойство при открытии. Это обеспечит корректную работу пользователей с иерархическими справочниками в регистрах.

← На главную