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