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

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

Как добавить новую форму в 1С

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

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

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

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

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

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

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

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

Маршрут решения

Как выбрать действие

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

Подготовка: что проверить перед созданием формы

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

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

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

Создание формы через конструктор: пошагово

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

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный объект в дереве конфигурации (например, «Документы — РеализацияТоваров»).
  2. 2
    Перейдите на закладку «Формы» в палитре свойств объекта и нажмите кнопку добавления (зелёный плюс) — откроется конструктор формы.
  3. 3
    Выберите тип формы: «Форма документа», «Форма списка» или «Форма выбора». Оставьте флаг «Назначить форму основной», если она должна открываться по умолчанию.
  4. 4
    На следующем шаге отметьте реквизиты, которые должны отображаться на форме, и при необходимости измените их порядок кнопками «Вверх» и «Вниз».
  5. 5
    Нажмите «Готово» — платформа создаст форму и откроет редактор.
  6. 6
    Сохраните конфигурацию (F7) и обновите конфигурацию базы данных, затем проверьте форму в режиме предприятия.

После работы конструктора форма открывается в редакторе с двумя основными областями: дерево элементов (слева вверху) и реквизиты формы (справа). Элементы — это то, что видит пользователь: поля ввода, группы, таблицы, кнопки. Реквизиты — данные, к которым элементы привязаны. Каждый элемент связан с реквизитом через свойство «ПутьКДанным»; если связь разорвать, поле перестанет отображать и сохранять значение.

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

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

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

Полезные свойства элементов, которые чаще всего меняют новички: «Заголовок» (подпись поля), «Подсказка» и «ОтображениеПодсказки» (текст помощи у поля), «Доступность» и «ТолькоПросмотр» (блокировка редактирования), «КнопкаВыпадающегоСписка» и «БыстрыйВыбор» для полей ссылочного типа. Ширину и порядок элементов платформа рассчитывает автоматически, но поведение можно скорректировать свойствами растягивания группы.

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

Добавление реквизита формы

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

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

Табличные части на форме

Табличные части документа (например, «Товары») конструктор выводит как таблицу формы. Для неё настраиваются колонки, командная панель, подвал с итогами. Чтобы добавить колонку, связанную с реквизитом табличной части, перетащите реквизит внутрь элемента-таблицы. Для вычисляемых колонок (например, сумма с учётом скидки) создайте реквизит формы и заполняйте его программно в обработчиках.

Код модуля формы: обработчики событий

Модуль формы открывается из редактора формы одноимённой закладкой внизу окна. В нём пишут обработчики событий — процедуры, которые платформа вызывает в определённые моменты жизни формы. Для большинства доработок достаточно нескольких стандартных событий.

Ключевые обработчики управляемой формы: ПриСозданииНаСервере — начальная настройка, заполнение вычисляемых реквизитов; ПриОткрытии — действия на клиенте после отображения (установка фокуса, предупреждения); ПередЗаписью и ПриЗаписи — проверки и дозаполнение данных перед сохранением. События элементов — например, ПриИзменении поля — создаются из палитры свойств элемента кнопкой с изображением лупы у нужного события.

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Объект.Ссылка.Пустая() Тогда
		Объект.Ответственный = Пользователи.ТекущийПользователь();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)
	Строка = Элементы.Товары.ТекущиеДанные;
	Строка.Сумма = Строка.Количество * Строка.Цена;
КонецПроцедуры

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

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

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

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

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

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

Открытие карточки объекта
Норма

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

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

Открывается старая форма или появляется ошибка компиляции модуля

Запись и проведение документа
Норма

Документ сохраняется, данные полей не теряются

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

Значения полей сбрасываются или возникает ошибка при записи

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

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

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

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

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

Форма открывается и работает без ошибок прав доступа

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

Ошибка «Нарушение прав доступа» при открытии

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

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

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

Типичные ошибки
01
Форма создана, но не назначена основной — платформа открывает автоматическую форму, и доработка «не видна» пользователям.
02
Изменения сохранены, но конфигурация базы данных не обновлена — в режиме предприятия работает старая версия.
03
Серверная логика размещена в клиентской процедуре — ошибка «процедура не определена» при открытии формы.
04
Прямая правка типовой формы вместо расширения — конфликты при каждом обновлении конфигурации.
05
Удалён реквизит объекта, но элемент формы остался — ошибка при открытии из-за битой связи «ПутьКДанным».

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

Итог

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

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

Частые вопросы о добавлении форм в 1С

Можно ли добавить форму без конфигуратора?

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

Чем расширение конфигурации лучше прямой правки формы?

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

Почему после добавления формы пользователи видят старую?

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

Как добавить на форму поле, которого нет в объекте?

Создайте реквизит формы через панель реквизитов в редакторе и перетащите его в дерево элементов. Учтите, что такой реквизит живёт только внутри формы и не сохраняется в базе. Если значение должно храниться, добавьте реквизит в сам объект метаданных и обновите форму.

Нужно ли удалять автоматически созданную форму?

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

Можно ли скопировать форму из другого объекта или конфигурации?

Прямого копирования форм между объектами нет, потому что форма жёстко привязана к реквизитам своего объекта. Практический путь — создать форму конструктором заново и перенести код модуля вручную, исправив обращения к реквизитам. Между конфигурациями можно выгрузить и загрузить объекты целиком через «Загрузить конфигурацию из файлов» или сравнение/объединение, но стыковку реквизитов всё равно придётся настраивать.