Как правильно создать форму выбора на основе существующей формы списка в 1С:Управление торговлей 11.4?

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

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

Почему прямое копирование формы не является лучшим решением?

Когда вы копируете форму в дереве конфигурации, вы дублируете XML-описание интерфейса. Однако элементы формы тесно связаны с реквизитами объекта. При простом копировании:

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

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

Решение 1: Использование одной формы для разных режимов

В современных конфигурациях, таких как УТ 11.4, платформа 1С обладает мощным встроенным механизмом адаптации форм. Одна и та же форма может успешно работать как Форма списка и как Форма выбора одновременно. Это избавляет вас от необходимости поддерживать две идентичные формы, что значительно упрощает дальнейшее сопровождение конфигурации.

Пошаговая инструкция настройки:

  1. Откройте конфигуратор и найдите в дереве метаданных нужный справочник (например, Партнеры).
  2. Перейдите на вкладку Формы.
  3. В поле Форма выбора укажите ту самую форму, которую вы ранее создали как форму списка.
  4. После этого платформа при открытии формы в режиме выбора (например, при вызове из поля ввода) сама адаптирует её поведение.

Важное примечание по командной панели: Если после назначения формы кнопка «Выбрать» не появилась, проверьте настройки Командной панели. Вы можете добавить стандартную команду Выбрать, перетащив её из списка доступных действий в командную панель формы. В управляемых формах платформа автоматически активирует механизм передачи значения обратно вызывающему объекту, если форма настроена как форма выбора для данного типа данных.

Решение 2: Программное управление видимостью

Если вам кажется, что в режиме выбора форма должна выглядеть иначе (например, нужно скрыть некоторые колонки или изменить заголовок), не спешите создавать копию формы. Используйте событие ПриСозданииНаСервере.

Рассмотрим пример того, как можно программно изменять поведение формы в зависимости от режима её открытия:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Проверяем, в каком режиме открыта форма
    Если Параметры.РежимВыбора Тогда
        // Скрываем лишние элементы или колонки
        Элементы.ГруппаДополнительныхКнопок.Видимость = Ложь;
        Элементы.Список.Колонки.Цена.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Заключение

Использование одного объекта формы для разных целей — это «золотой стандарт» разработки на 1С. Это позволяет:

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

← На главную