Где находится форма группы номенклатуры в конфигураторе 1С и как ее изменить?

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

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

Почему форма группы отсутствует в дереве метаданных

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

Автогенерируемая форма имеет ряд существенных ограничений:

  1. Она физически отсутствует в конфигурации, поэтому к ней невозможно привязать обработчики событий (например, ПриСозданииНаСервере, ПередЗаписью или ПриОткрытии).
  2. На такую форму нельзя добавить произвольные реквизиты формы, команды, декорации, кнопки или динамические списки.
  3. Невозможно программно управлять видимостью и доступностью стандартных полей без создания полноценного объекта метаданных.

Проверка настроек иерархии справочника

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

Проверим ключевые параметры:

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

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

Пошаговое создание формы группы в конфигураторе

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

  1. В дереве метаданных конфигуратора развернем ветку Справочники и найдем Номенклатура.
  2. Развернем подчиненную ветку Формы.
  3. Нажмем правой кнопкой мыши по ветке Формы и выберем команду Добавить (либо нажмем кнопку добавления на панели).
  4. В открывшемся конструкторе формы выберем тип формы: Форма группы.
  5. Зададим имя формы (по умолчанию платформа предложит ФормаГруппы) и нажмем кнопку Готово.
  6. Платформа создаст объект формы и автоматически назначит его Основной формой группы для данного справочника.

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

Переопределение формы группы через модуль менеджера

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

Для этого откроем модуль менеджера справочника и используем процедуру ОбработкаПолученияФормы:


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

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

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

Программное открытие формы группы из встроенного языка

Посмотрим на пример открытия формы группы из программного кода. Для этого применяется метод глобального контекста ОткрытьФорму(). При открытии существующей группы передается ссылка через параметр Ключ, а при создании новой группы — признак ЭтоГруппа.


// Пример открытия формы существующей группы номенклатуры
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", СсылкаНаГруппу);

ОткрытьФорму("Справочник.Номенклатура.ФормаГруппы", ПараметрыФормы);

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


// Пример открытия формы создания новой группы
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЭтоГруппа", Истина);
ПараметрыФормы.Вставить("ЗначениеКопирования", Неопределено);

ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаГруппы", ПараметрыФормы);

Доработка формы группы через механизм расширений

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

  1. Создадим или откроем существующее расширение конфигурации.
  2. Добавим справочник Номенклатура в расширение.
  3. Внутри расширения добавим новую форму группы и настроим ее элементы и обработчики событий.
  4. Назначим созданную в расширении форму основной формой группы.

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

← На главную