Как добавить возможность выбора группы контрагента непосредственно в форме элемента?

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

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

Анализ ситуации

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

Шаг 1: Добавление реквизита на форму через расширение

Самый безопасный и современный способ внести изменения — использование расширений конфигурации. Это позволит вам сохранить возможность обновления основной конфигурации без потери внесенных изменений.

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

Шаг 2: Управление родителем при записи

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

Нам потребуется обработчик события ПередЗаписью. Рассмотрим пример кода, который необходимо реализовать в модуле объекта расширения:


&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    // Проверяем, заполнено ли наше новое поле выбора группы
    Если ЗначениеЗаполнено(ВыбраннаяГруппаНаФорме) Тогда
        ТекущийОбъект.Родитель = ВыбраннаяГруппаНаФорме;
    КонецЕсли;
КонецПроцедуры

Обратите внимание: если вы работаете с Управляемыми формами, взаимодействие между формой и объектом должно происходить корректно через параметры записи или напрямую через ТекущийОбъект, если вы находитесь в модуле менеджера или расширении модуля объекта.

Альтернативные подходы и рекомендации

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

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

← На главную