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