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

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

Как добавить формы в 1С: практическое руководство

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

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

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

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

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

Если форма не создана явно, платформа генерирует её автоматически на основе структуры метаданных. Такая автоматическая форма работоспособна, но не учитывает прикладную логику: порядок полей, группировку, видимость по условиям. Именно поэтому добавление собственной формы — стандартный этап любой доработки.

Подготовка: конфигуратор, права и резервная копия

Для работы с формами нужен запуск базы в режиме «Конфигуратор» и права на изменение конфигурации. В файловой базе достаточно открыть конфигуратор от имени пользователя с полными правами; в клиент-серверном варианте дополнительно проверьте, что никто из пользователей не работает в базе — обновление конфигурации базы данных потребует монопольного доступа.

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

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

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

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

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

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

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

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

1c
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Элементы.Склад.Видимость = Объект.ВидОперации = Перечисления.ВидыОпераций.Перемещение;
КонецПроцедуры

Добавление команды и кнопки на форму

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

Добавление формы через расширение конфигурации

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

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

Сравнение вариантов доработки

Изменение основной конфигурации

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

Расширение конфигурации

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

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

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

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

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

Открытие формы
Норма

Форма открывается без сообщений об ошибках

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

Ошибка компиляции модуля или «Поле не найдено» — проверьте имена реквизитов

Заполнение полей
Норма

Поля показывают данные объекта

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

Поля пустые — элемент не связан с реквизитом формы

Запись объекта
Норма

Документ записывается и проводится

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

Ошибки при записи — проверьте серверные обработчики формы

Типичные ошибки
01
Создан реквизит формы, но элемент не добавлен в дерево — поле невидимо для пользователя
02
Обращение к элементам формы в серверной процедуре — ошибка выполнения, ведь на сервере элементов не существует
03
Доработка типовой формы напрямую без расширения — изменения теряются при обновлении конфигурации
04
Форма создана, но не назначена основной — пользователи по-прежнему видят автоматическую форму

Ограничения и когда нужен разработчик

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

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

Итог

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

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

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

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

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

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

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

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

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

Что делать, если после обновления типовой конфигурации сломалась форма в расширении?

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

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

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

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

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