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

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

Как сделать форму основной в 1С: пошаговая инструкция

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

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

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

Что такое основная форма и когда её нужно назначать

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

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

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

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

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

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

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

Назначение основной формы для списка и выбора

Частая задача — заменить не форму элемента, а форму списка. Например, в списке документов нужно добавить колонки или настроить отбор по умолчанию. Для этого создаётся форма списка (при создании формы в конструкторе выбирается тип «Форма списка»), а затем назначается в поле «Основная форма списка».

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

СвойствоКогда открываетсяТипичный сценарий
Основная форма объектаОткрытие и создание элемента или документаКарточка товара с доработанным интерфейсом
Основная форма спискаОткрытие списка из меню или панели навигацииЖурнал документов с дополнительными колонками
Основная форма выбораПодбор значения в поле вводаУпрощённый подбор контрагента

Особенности для управляемых и обычных форм

Механизм назначения основной формы одинаков для обоих типов, но есть различия в поведении. Управляемые формы (режим «Такси» и управляемое приложение) декларируются в модуле менеджера объекта и в свойствах метаданных; обычные формы работают только в толстом клиенте с обычным приложением.

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

Основная форма через расширение конфигурации

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

Типовой приём — переопределить обработчик ОбработкаПолученияФормы в модуле менеджера. В нём можно указать, какая форма должна открываться, и отменить стандартную обработку.

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

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

Общие формы и назначение через код

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

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

Проверка результата и типичные ошибки

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

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

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

Открытие элемента двойным кликом из списка
Норма

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

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

Открывается автоматическая форма — свойство не сохранено или конфигурация БД не обновлена

Кнопка «Создать» в списке
Норма

Новый объект открывается в нужной форме

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

Открывается другая форма — проверьте ОбработкаПолученияФормы

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

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

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

Открывается форма списка — не задано свойство «Основная форма выбора»

Типичные ошибки
01
Назначили форму, но не обновили конфигурацию базы данных — в режиме предприятия открывается старая или автоматическая форма.
02
Создали обычную форму, а приложение работает в управляемом режиме — платформа игнорирует её и генерирует форму автоматически.
03
Изменили типовую конфигурацию на поддержке вместо использования расширения — при следующем обновлении доработка конфликтует или теряется.
04
Задали основную форму объекта, но забыли форму выбора — при подборе пользователи видят другой интерфейс.

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

Итог

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

Основная форма назначается в свойствах объекта метаданных в группе «Основные формы»; изменения действуют после обновления конфигурации БД. Для типовых конфигураций и динамического выбора формы используйте обработчик ОбработкаПолученияФормы в модуле менеджера или расширение конфигурации.

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

Можно ли назначить основную форму программно, без конфигуратора?

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

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

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

Как сделать основной форму списка, а не элемента?

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

Можно ли назначить основной общую форму?

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

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

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