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

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

Как добавить реквизит на обычную форму в 1С

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

Обычные формы используются в конфигурациях 1С:Предприятие 8.2 и 8.3, работающих в режиме обычного приложения, а также в старых типовых решениях вроде «Управление торговлей 10.3» или «Бухгалтерии 1.6/2.0». В отличие от управляемых форм, здесь разработчик напрямую размещает элементы на форме и привязывает их к данным объекта, поэтому добавление реквизита сводится к двум действиям: создать сам реквизит в дереве метаданных и вывести его на форму через диалог размещения данных.

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

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

Где создаётся реквизит объекта

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

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

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

Как разместить реквизит на обычной форме

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

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

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

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

Ручное создание поля ввода и настройка привязки

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

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

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

Реквизит табличной части и форма списка

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

Если реквизит нужно видеть в списке (например, в журнале документов), откройте форму списка и добавьте колонку в табличное поле списка: в свойствах колонки укажите «Данные» — имя вашего реквизита и «ТекстШапки». Учтите, что вывод дополнительных колонок в большие списки может замедлить открытие формы, особенно если реквизит ссылочного типа.

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

Программное добавление элемента на форму

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

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

bsl
НовоеПоле = ЭлементыФормы.Добавить(Тип("ПолеВвода"), "ПолеКомментарий", Истина);
НовоеПоле.Данные = "КомментарийРасширенный";
НовоеПоле.Верх = 100;
НовоеПоле.Лево = 120;
НовоеПоле.Ширина = 300;
НовоеПоле.Высота = 19;

Проверка результата

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

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

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

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

Отображение поля на форме
Норма

Поле видно с нужным синонимом и доступно для ввода

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

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

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

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

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

Значение пропадает — не заполнено свойство «Данные» у элемента

Открытие формы
Норма

Форма открывается без ошибок

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

Ошибка преобразования типов — тип элемента не совпадает с типом реквизита

Частые вопросы

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

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

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

Сам реквизит в метаданных обычно сохраняется, но форма при объединении могла быть замещена типовой версией. Откройте форму в конфигураторе и повторно разместите реквизит через «Размещение данных».

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

Размещение выполняется для каждой формы отдельно: откройте каждую нужную форму и повторите «Форма → Размещение данных». Автоматического размещения на все формы разом в конфигураторе нет.

Чем обычная форма отличается от управляемой при добавлении реквизита?

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

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

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

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

Используйте роли: снимите у роли право просмотра/редактирования реквизита — поле станет недоступным. Либо управляйте свойством «Видимость» элемента программно в обработчике «ПриОткрытии» формы по условию роли или параметров пользователя.

Итог

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

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