Разработка и Конфигурация · 9 мин
Как сделать форму основной в 1С: пошаговая инструкция
Как назначить основную форму объекта в 1С: конфигуратор, палитра свойств, управляемые и обычные формы, типичные ошибки и проверка результата.
В конфигурации 1С у объекта метаданных (справочника, документа, отчёта и других) может быть несколько форм: форма элемента, форма списка, форма выбора. Когда пользователь открывает объект без явного указания формы, платформа использует ту, что назначена основной. Если основная форма не задана, 1С генерирует её автоматически — с типовым набором реквизитов, который редко устраивает прикладного разработчика.
Назначение основной формы — это настройка на уровне конфигуратора, а не встроенного языка. Процедура занимает меньше минуты, но у неё есть нюансы: различия между обычными и управляемыми формами, поведение при обновлении конфигурации поставщика, ограничения в расширениях. Ниже разобраны все практические сценарии.
Что такое основная форма и когда её нужно назначать
Основная форма — это форма, которую платформа открывает по умолчанию при стандартных действиях пользователя: двойном клике по элементу списка, создании нового документа кнопкой «Создать», переходе по навигационной ссылке. Для каждого объекта можно задать отдельно основную форму объекта, основную форму списка, основную форму выбора, а для документов — ещё и основную форму для записи.
Если основная форма не назначена, 1С строит её автоматически на основе структуры объекта. Такая автоматическая форма работоспособна, но не учитывает прикладную логику: группировку реквизитов, условное оформление, проверки при открытии. Поэтому в любой доработанной конфигурации формы создают вручную и назначают основными.
Назначение основной формы через конфигуратор
Основной способ — палитра свойств объекта метаданных. Порядок действий одинаков для справочников, документов, обработок, отчётов и других объектов, имеющих формы.
- 1Откройте конфигуратор и найдите нужный объект в дереве конфигурации (например, Справочники → Номенклатура).
- 2Убедитесь, что у объекта создана нужная форма: ветка «Формы» внутри объекта должна содержать её.
- 3Кликните правой кнопкой по объекту и выберите «Свойства» (или нажмите Alt+Enter).
- 4В палитре свойств найдите группу «Основные формы».
- 5В поле «Основная форма объекта» выберите нужную форму из выпадающего списка.
- 6При необходимости аналогично задайте основную форму списка и форму выбора.
- 7Обновите конфигурацию базы данных (F7) и проверьте результат в режиме предприятия.
Важно: в выпадающем списке поля «Основная форма объекта» отображаются только формы, уже созданные у этого объекта. Общие формы в списке не появляются — их назначение выполняется иначе (см. раздел про общие формы ниже).
После сохранения конфигурации изменения вступают в силу только после обновления конфигурации базы данных. Если база работает в клиент-серверном режиме с активными сеансами, платформа может потребовать завершения сеансов пользователей.
Назначение основной формы для списка и выбора
Частая задача — заменить не форму элемента, а форму списка. Например, в списке документов нужно добавить колонки или настроить отбор по умолчанию. Для этого создаётся форма списка (при создании формы в конструкторе выбирается тип «Форма списка»), а затем назначается в поле «Основная форма списка».
Форма выбора используется, когда пользователь подбирает значение в поле ввода — например, выбирает контрагента в документе. Если для справочника задана основная форма выбора, при подборе откроется именно она, а не основная форма списка. Это позволяет сделать упрощённую форму подбора с минимальным набором колонок.
| Свойство | Когда открывается | Типичный сценарий |
|---|---|---|
| Основная форма объекта | Открытие и создание элемента или документа | Карточка товара с доработанным интерфейсом |
| Основная форма списка | Открытие списка из меню или панели навигации | Журнал документов с дополнительными колонками |
| Основная форма выбора | Подбор значения в поле ввода | Упрощённый подбор контрагента |
Особенности для управляемых и обычных форм
Механизм назначения основной формы одинаков для обоих типов, но есть различия в поведении. Управляемые формы (режим «Такси» и управляемое приложение) декларируются в модуле менеджера объекта и в свойствах метаданных; обычные формы работают только в толстом клиенте с обычным приложением.
Если конфигурация запускается в управляемом режиме, а форма создана как обычная, платформа её не откроет — пользователь увидит автоматически сгенерированную управляемую форму. Поэтому перед назначением основной убедитесь, что тип формы соответствует режиму запуска прикладного решения.
Основная форма через расширение конфигурации
В расширении нельзя напрямую переопределить свойство «Основная форма» объекта основной конфигурации. Вместо этого используется другой подход: форма добавляется в расширение, а в модуле менеджера объекта (через аннотацию «Вместо» или «После») переопределяется обработчик получения формы.
Типовой приём — переопределить обработчик ОбработкаПолученияФормы в модуле менеджера. В нём можно указать, какая форма должна открываться, и отменить стандартную обработку.
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаОбъекта" Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "МояФормаЭлемента";
КонецЕсли;
КонецПроцедурыТакой способ работает и без расширения — в самой конфигурации, если нужно выбирать форму динамически, например разную карточку для разных видов номенклатуры. При этом свойство «Основная форма» в метаданных может оставаться пустым: обработчик имеет приоритет.
Общие формы и назначение через код
Общие формы не привязаны к конкретному объекту и не отображаются в списке выбора свойства «Основная форма объекта». Чтобы использовать общую форму как основную, применяется тот же обработчик ОбработкаПолученияФормы: в параметр ВыбраннаяФорма передаётся полное имя общей формы, например "ОбщаяФорма.МояОбщаяФорма".
Альтернативный вариант — открывать форму программно через метод ОткрытьФорму() с явным указанием имени формы. Но это работает только в местах, где вызывается ваш код (команды, кнопки), и не заменяет основную форму при стандартных действиях пользователя вроде двойного клика по списку.
Проверка результата и типичные ошибки
После назначения основной формы проверьте поведение во всех точках входа: открытие элемента из списка, создание нового объекта, подбор в поле ввода, переход по навигационной ссылке из другого документа. Каждый сценарий может использовать своё свойство (объект, список, выбор), и легко забыть про один из них.
Как проверить результат
Открывается назначенная форма объекта
Открывается автоматическая форма — свойство не сохранено или конфигурация БД не обновлена
Новый объект открывается в нужной форме
Открывается другая форма — проверьте ОбработкаПолученияФормы
Открывается заданная форма выбора
Открывается форма списка — не задано свойство «Основная форма выбора»
Ещё одна распространённая ситуация: форма назначена основной, но при открытии возникает ошибка компиляции модуля. Платформа в этом случае не подставляет автоматическую форму — пользователь просто получает сообщение об ошибке. Поэтому перед назначением формы основной убедитесь, что её модуль и модуль объекта не содержат синтаксических ошибок (проверка конфигурации в конфигураторе).
Что важно запомнить
Основная форма назначается в свойствах объекта метаданных в группе «Основные формы»; изменения действуют после обновления конфигурации БД. Для типовых конфигураций и динамического выбора формы используйте обработчик ОбработкаПолученияФормы в модуле менеджера или расширение конфигурации.
Частые вопросы
Можно ли назначить основную форму программно, без конфигуратора?
Свойство «Основная форма» — это настройка метаданных, она изменяется только в конфигураторе и требует обновления конфигурации базы данных. Программно влиять на выбор формы можно через обработчик ОбработкаПолученияФормы в модуле менеджера объекта, но сам обработчик тоже пишется в конфигураторе или расширении.
Почему после назначения формы всё равно открывается старая?
Чаще всего не выполнено обновление конфигурации базы данных (F7) или пользователь работает в сеансе, запущенном до обновления — нужно перезапустить сеанс. Также проверьте, не переопределяется ли выбор формы в ОбработкаПолученияФормы и не подключено ли расширение с собственной логикой.
Как сделать основной форму списка, а не элемента?
В палитре свойств объекта в группе «Основные формы» заполните поле «Основная форма списка», выбрав форму с типом «Форма списка». Если нужной формы нет в списке, сначала создайте её через конструктор форм с правильным типом.
Можно ли назначить основной общую форму?
Напрямую в свойствах объекта — нет, общие формы не отображаются в списке выбора. Используйте обработчик ОбработкаПолученияФормы в модуле менеджера объекта и укажите в параметре ВыбраннаяФорма полное имя общей формы, например «ОбщаяФорма.ИмяФормы».
Что будет, если удалить форму, назначенную основной?
Конфигуратор при проверке выдаст ошибку о неразрешённой ссылке на удалённый объект. Платформа в этом случае вернётся к автоматически генерируемой форме либо откажется открывать объект. Перед удалением формы очистите соответствующее свойство в палитре свойств объекта.