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