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