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

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

Как редактировать форму в 1С: пошаговое руководство

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

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

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

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

Как открыть форму для редактирования в конфигураторе

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

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

Для внешних обработок и отчётов (файлы .epf и .erf) форма открывается аналогично: «Файл → Открыть», затем в дереве обработки выбирается нужная форма. Помните, что изменения внешней обработки сохраняются в файл, а не в конфигурацию базы.

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

Структура редактора управляемой формы

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

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

Панель свойств (открывается по правому клику → «Свойства» или через Alt+Enter) управляет поведением выбранного элемента: заголовок, видимость, доступность, только просмотр, ширина, обработчики событий. Большинство повседневных правок формы сводится именно к изменению свойств элементов без написания кода.

Как добавить, изменить или удалить элемент формы

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

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

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

Редактирование свойств и событий элементов

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

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

Типичная задача — сделать поле видимым только при определённом условии. В управляемых формах это решается двумя способами: программно в обработчике (Элементы.ИмяПоля.Видимость = Ложь) или через функциональные опции, если скрытие должно зависеть от настроек системы, а не от данных конкретного объекта.

bsl
&НаКлиенте
Процедура СпособОплатыПриИзменении(Элемент)
	Элементы.НомерКарты.Видимость = (Объект.СпособОплаты = ПредопределенноеЗначение("Перечисление.СпособыОплаты.Карта"));
КонецПроцедуры

Работа с модулем формы

Модуль формы открывается из редактора формы по кнопке с изображением лупы и кода или через контекстное меню «Модуль». Здесь размещаются обработчики событий формы (ПриСозданииНаСервере, ПриОткрытии, ПередЗаписью и другие) и процедуры, вызываемые командами и элементами.

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

Для серверных процедур без контекста формы используйте директиву &НаСервереБезКонтекста — такие процедуры работают быстрее, потому что не требуют передачи данных формы на сервер. Но из них нельзя обратиться к реквизитам формы напрямую, только через параметры.

Редактирование формы без изменения конфигурации

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

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

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

Способы изменить форму

Настройка «Изменить форму» в режиме предприятия

Подходит для скрытия полей и изменения порядка элементов. Не позволяет добавлять код и новые реквизиты.

Правка формы в конфигураторе

Полный доступ к элементам и модулю. Требует снятия объекта с поддержки и усложняет обновление типовой конфигурации.

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

Доработка формы без изменения основной конфигурации, сохраняется при обновлениях. Есть ограничения на изменение некоторых механизмов.

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

После правки формы обновите конфигурацию базы данных через F7 и запустите режим предприятия (Ctrl+F5 или «Сервис → 1С:Предприятие»). Откройте изменённый объект и проверьте: отображаются ли новые элементы, работают ли кнопки, не появляются ли ошибки при открытии и записи. Полезно проверить форму под пользователем с ограниченными правами — видимость некоторых элементов зависит от ролей.

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

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

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

Открытие формы в режиме предприятия
Норма

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

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

Ошибка при открытии или отсутствие добавленных элементов — проверьте обновление конфигурации базы

Работа кнопок и обработчиков
Норма

Команда выполняется, результат виден в данных

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

Кнопка нажимается без эффекта или выдаёт ошибку — проверьте привязку команды и контекст процедуры

Сохранение данных
Норма

После записи и повторного открытия введённые значения на месте

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

Данные пропадают — скорее всего, поле связано с реквизитом формы, а не объекта

Часто задаваемые вопросы

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

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

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

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

Как добавить поле, данные которого будут сохраняться в базе?

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

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

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

Что делать, если форма перестала открываться после правки модуля?

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

Безопасно ли менять форму типовой конфигурации?

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

Итог

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

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