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

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

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

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

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

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

Ниже разобраны все три подхода с конкретными шагами, проверками результата и типичными ошибками. Материал ориентирован на управляемые формы (такси-интерфейс), которые используются в актуальных конфигурациях: «Управление торговлей», «Бухгалтерия предприятия», «Зарплата и управление персоналом», «ERP».

Определите, какое именно поле нужно добавить

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

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

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

Маршрут решения

Как выбрать действие

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

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

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

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

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

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

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

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

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

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

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

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

Реквизит формы без изменения объекта

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

Перетащите созданный реквизит в дерево элементов. Такое поле не требует обновления конфигурации базы данных и реструктуризации — достаточно сохранить конфигурацию. Это делает сценарий самым быстрым и безопасным.

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

Программное создание поля в модуле формы

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

bsl
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ДобавляемыеРеквизиты = Новый Массив;
	Описание = Новый РеквизитФормы("КомментарийВнутренний", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));
	ДобавляемыеРеквизиты.Добавить(Описание);
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	НовоеПоле = Элементы.Добавить("КомментарийВнутренний", Тип("ПолеФормы"), Элементы.ГруппаШапка);
	НовоеПоле.Вид = ВидПоляФормы.ПолеВвода;
	НовоеПоле.ПутьКДанным = "КомментарийВнутренний";
КонецПроцедуры

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

Настройка внешнего вида и поведения поля

После добавления поля настройте его свойства в палитре свойств (правый клик по элементу — «Свойства»). Основные: «Заголовок» (текст, который видит пользователь), «ПодсказкаВвода», «Доступность», «ТолькоПросмотр», «АвтоОтметкаНезаполненного». Для полей со ссылочным типом проверьте «КнопкаВыбора» и «СвязиПараметровВыбора», чтобы пользователь выбирал только подходящие значения.

Обратите внимание на расположение: поле наследует поведение родительской группы. Если группа имеет горизонтальную группировку, поля выстроятся в строку; для длинных полей ввода удобнее вертикальная группа. Свойство «РастягиватьПоГоризонтали» помогает аккуратно разместить широкие поля.

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

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

Поле отображается на форме
Норма

Поле видно в нужной группе, заголовок читаемый

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

Поля нет — проверьте, что реквизит перетащен именно в дерево элементов, а не только создан

Сохранение значения
Норма

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

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

Значение пропадает — вы создали реквизит формы вместо реквизита объекта

Отчёты и печать
Норма

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

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

Реквизита нет в выборке — возможно, не выполнено обновление конфигурации БД

Типичные ошибки и ограничения

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

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

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

FAQ

Можно ли добавить поле в форму без конфигуратора, прямо в режиме 1С:Предприятие?

Частично. Механизм «Изменить форму» (меню «Ещё» на форме) позволяет вывести на форму уже существующие реквизиты объекта, которые разработчик не показал. Но создать новый реквизит, которого нет в объекте, этим способом нельзя — для этого нужен конфигуратор или расширение.

Как добавить поле в табличную часть документа?

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

Почему после добавления поля пользователи его не видят?

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

Как добавить поле в форму списка справочника или документов?

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

Что делать, если нужное поле есть в типовой конфигурации, но скрыто?

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

Можно ли удалить добавленное поле без последствий?

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

Итог

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

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