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

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

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

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

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

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

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

Какие способы настройки формы существуют

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

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

Сравнение подходов

Настройка «Изменить форму»

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

Доработка в конфигураторе

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

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

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

Программное создание элементов

Нужно, когда набор полей динамический. Сложнее в поддержке, требует аккуратного кода.

Быстрая настройка формы без конфигуратора

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

В дереве элементов можно снять флажки с полей, которые не нужны, перетащить элементы между группами, изменить порядок вкладок. После нажатия «ОК» форма перестроится. Настройка сохраняется для текущего пользователя; администратор может распространить её на других пользователей через механизм копирования настроек (в типовых конфигурациях — «Администрирование → Настройки пользователей и прав → Копирование настроек»).

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

Порядок настройки через «Изменить форму»
  1. 1
    Откройте документ нужного вида в режиме 1С:Предприятие
  2. 2
    Нажмите «Ещё» в командной панели формы и выберите «Изменить форму»
  3. 3
    Снимите флажки с ненужных полей или перетащите элементы в нужные группы
  4. 4
    Нажмите «ОК» и проверьте вид формы
  5. 5
    При необходимости скопируйте настройку другим пользователям через механизм копирования настроек

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

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

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

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

Расположение элементов: группы, вкладки и командная панель

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

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

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

Программная доработка: обработчики событий формы

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

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

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

&НаСервере
Процедура ЗаполнитьДоговорНаСервере(Контрагент)
	// Поиск основного договора контрагента
	Объект.Договор = Справочники.Договоры.НайтиОсновнойДоговор(Контрагент);
КонецПроцедуры

Для управления видимостью и доступностью элементов используйте свойство Элементы формы: Элементы.Склад.Видимость = Ложь;. Однако если условие видимости простое и зависит только от значений реквизитов, лучше применить условное оформление формы — оно работает декларативно и не требует кода.

Условное оформление и функциональные опции

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

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

Доработка типовой формы через расширение

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

Аннотация &После("ПриОткрытии") означает, что ваш обработчик выполнится следом за типовым; &Вместо полностью подменяет типовой код — используйте её только когда уверены в последствиях, так как при обновлении типовой обработчик может измениться, а ваш «вместо» останется старым. Наиболее безопасный приём — &После и &Перед.

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

Типичные ошибки
01
Изменение типовой формы напрямую в конфигураторе — при обновлении доработки теряются или блокируют обновление
02
Серверные вызовы в каждом обработчике ПриИзменении — форма тормозит на медленных каналах
03
Установка обязательной проверки заполнения нового реквизита без учёта старых документов — архивные документы нельзя перепровести
04
Использование &Вместо без необходимости — после обновления типовой логики расширение работает со старым кодом
05
Хранение служебных данных прямо в реквизитах формы без необходимости — увеличивает объём передаваемых между клиентом и сервером данных

Проверка результата и откат изменений

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

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

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

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

Открытие старых документов
Норма

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

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

Ошибка проверки заполнения или отсутствия реквизита при открытии архивного документа

Скорость работы формы
Норма

Открытие и редактирование без заметных задержек

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

Паузы при каждом изменении поля — лишние серверные вызовы

Работа под ограниченными правами
Норма

Форма открывается, недоступные данные просто скрыты

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

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

Применимость расширения после обновления
Норма

Расширение применяется, доработки на месте

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

Расширение отключено с диагностикой несовместимости

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

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

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

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

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

Как скрыть поле только для части пользователей?

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

Чем расширение отличается от изменения конфигурации?

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

Новый реквизит не отображается на форме — что проверить?

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

Опасно ли добавлять реквизиты в существующий документ?

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

Итог

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

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