К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как сделать форму по умолчанию в 1С

Как назначить форму по умолчанию в 1С: основные формы объекта в конфигураторе, переопределение в модуле менеджера, типичные ошибки и проверка результата.

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

Выбор способа зависит от задачи. Если форма должна открываться всегда и для всех пользователей — достаточно указать её в свойствах объекта метаданных. Если форма зависит от условий (роль пользователя, вид операции, режим работы), понадобится обработчик ОбработкаПолученияФормы. Оба подхода рассмотрены ниже с конкретными действиями и кодом.

Какие виды основных форм существуют у объекта

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

  • Основная форма объекта — открывается при создании нового элемента и при открытии существующего.
  • Основная форма списка — показывается при открытии списка объектов (например, по команде в интерфейсе).
  • Основная форма для выбора — используется, когда пользователь подбирает значение в поле ввода.
  • Основная форма для выбора групп — применяется для выбора папок в иерархических справочниках.
  • Основная форма записи — у регистров сведений, открывается при редактировании отдельной записи.

Если ни одно свойство не заполнено, платформа генерирует форму автоматически по структуре объекта. Такая автогенерируемая форма работоспособна, но не учитывает прикладную логику: порядок полей, группировку, условное оформление. Поэтому в доработанных конфигурациях основные формы обычно назначают явно.

Назначение основной формы в конфигураторе

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

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный объект в дереве конфигурации (справочник, документ, обработка).
  2. 2
    Откройте контекстное меню объекта и выберите «Свойства» (или нажмите Alt+Enter).
  3. 3
    Прокрутите палитру свойств до группы «Формы»: там находятся поля «Основная форма объекта», «Основная форма списка» и другие.
  4. 4
    Нажмите кнопку выбора в нужном поле и укажите существующую форму из списка либо создайте новую через конструктор.
  5. 5
    Сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7), если требуется.
  6. 6
    Запустите режим предприятия и проверьте, что при стандартном действии открывается назначенная форма.

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

В управляемом приложении тип формы определяется при её создании конструктором: вы выбираете «Форма элемента справочника», «Форма списка» и т.д. Изменить тип существующей формы нельзя — при ошибке форму придётся пересоздать.

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

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

bsl
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	Если ВидФормы = "ФормаОбъекта" Тогда
		Если ПользователиИнформационнойБазы.ТекущийПользователь().Имя = "Кладовщик" Тогда
			СтандартнаяОбработка = Ложь;
			ВыбраннаяФорма = "ФормаОбъектаУпрощенная";
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Ключевые моменты работы обработчика:

  • Параметр ВидФормы содержит строку: «ФормаОбъекта», «ФормаСписка», «ФормаВыбора» и т.д. Проверяйте его, иначе подмена сработает во всех режимах.
  • Присвоение СтандартнаяОбработка = Ложь отключает стандартное поведение — без этого платформа проигнорирует выбранную форму.
  • В ВыбраннаяФорма можно передать имя формы строкой или полный путь вида «Справочник.Номенклатура.Форма.ФормаОбъектаУпрощенная».
  • Через Параметры доступны переданные при открытии параметры, например ключ записи или значения заполнения — на них тоже можно строить условия.

Открытие конкретной формы из кода

Третий сценарий — когда форму нужно открыть принудительно из прикладного кода, минуя настройки по умолчанию. Для этого используются методы ОткрытьФорму и ПолучитьФорму.

bsl
// Открытие конкретной формы элемента с параметрами
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлемент);
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаОбъектаРасширенная", ПараметрыФормы);

Метод ОткрытьФорму предпочтительнее в управляемом приложении: он работает асинхронно-дружелюбно и не блокирует интерфейс. ПолучитьФорму возвращает сам объект формы и нужен, когда требуется программно обратиться к её данным до открытия, но он не поддерживается в некоторых режимах и считается менее предпочтительным.

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

Сравнение способов назначения формы

Сравнение вариантов

Свойство «Основная форма» в конфигураторе

Подходит, когда форма одна и постоянна. Самый простой способ, не требует кода. Ограничение: нет условий и гибкости.

ОбработкаПолученияФормы в модуле менеджера

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

ОткрытьФорму с полным путём

Применяется для точечного открытия из прикладной логики. Игнорирует настройки по умолчанию — не заменяет их, а обходит.

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

Типичные ошибки и ограничения

Типичные ошибки
01
Форма назначена в свойствах, но конфигурация базы данных не обновлена — в режиме предприятия открывается старая форма. Всегда выполняйте обновление конфигурации БД (F7).
02
В ОбработкаПолученияФормы забыли установить СтандартнаяОбработка = Ложь — платформа игнорирует ВыбраннуюФорму и открывает стандартную.
03
Назначена форма неподходящего вида, например форма объекта указана как основная форма списка — платформа не даст выбрать её в палитре, а при программной подмене возникнет ошибка открытия.
04
В условии подмены формы не проверен ВидФормы — упрощённая форма открывается и при выборе, и при просмотре списка, ломая стандартные сценарии.
05
Форма удалена из конфигурации, но ссылка на неё осталась в свойствах объекта — при открытии возникает ошибка «Форма не найдена».

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

Проверка результата

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

Контрольные точки

Как проверить результат

Создание нового элемента
Норма

Открывается назначенная форма объекта

Тревожный признак

Открывается автогенерируемая или старая форма

Открытие списка из интерфейса
Норма

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

Тревожный признак

Открывается стандартный список без доработок

Выбор значения в поле ввода
Норма

Открывается форма выбора с нужным составом колонок

Тревожный признак

Открывается форма списка или объектная форма

Работа под разными пользователями
Норма

Каждой роли открывается своя форма согласно условиям

Тревожный признак

Всем открывается одна форма или возникает ошибка

Если форма не открывается, первым делом смотрите журнал регистрации и сообщения об ошибках: типовая причина — неверное имя формы в коде или ссылка на удалённую форму в свойствах. Имена форм чувствительны к точному написанию, и переименование формы не обновляет строковые ссылки на неё в коде автоматически.

Итог

Что важно запомнить

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

Частые вопросы

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

Чаще всего не обновлена конфигурация базы данных: изменения в конфигураторе применяются к рабочей базе только после F7. Также проверьте, нет ли в модуле менеджера обработчика ОбработкаПолученияФормы, который подменяет форму, и не открывается ли объект из кода через ОткрытьФорму с явным путём.

Можно ли назначить разные формы по умолчанию для разных пользователей?

Напрямую через свойства — нет, основная форма одна для всех. Для различения по пользователям или ролям используйте ОбработкаПолученияФормы: в нём проверяйте текущего пользователя или наличие роли и подменяйте выбранную форму с отключением стандартной обработки.

Как сделать форму по умолчанию в типовой конфигурации без снятия с поддержки?

Используйте расширение конфигурации: заимствуйте объект, добавьте собственную форму и назначьте её в свойствах заимствованного объекта внутри расширения. Основная конфигурация при этом не изменяется, и обновления типового релиза проходят штатно.

Чем отличается основная форма объекта от основной формы для выбора?

Форма объекта открывается при создании и редактировании элемента, форма выбора — при подборе значения в поле ввода другого объекта. Это независимые свойства: можно назначить полную форму для редактирования и упрощённую форму выбора для подбора.

Что будет, если удалить форму, назначенную основной?

При попытке открытия объекта возникнет ошибка о ненайденной форме. Перед удалением формы очистите соответствующее свойство объекта и найдите строковые ссылки на её имя в коде — поиск по имени формы по всей конфигурации (Ctrl+Shift+F) покажет все обращения.

Работает ли ОбработкаПолученияФормы в обычном приложении?

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