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