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

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

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

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

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

Ключевой момент, который часто упускают новички: поле ввода на форме — это только элемент отображения. Чтобы введённое значение куда-то сохранялось, поле должно быть связано с реквизитом объекта (справочника, документа) или с реквизитом формы. Поле без связи с данными будет просто очищаться при закрытии формы.

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

Что нужно подготовить перед добавлением поля

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

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

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

Добавление поля ввода через конфигуратор

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

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

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

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

Добавление реквизита формы без сохранения в базе

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

Программное добавление поля ввода

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

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

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

    НовоеПоле = Элементы.Добавить("ПолеКомментарийДоп", Тип("ПолеФормы"), Элементы.ГруппаДополнительно);
    НовоеПоле.Вид = ВидПоляФормы.ПолеВвода;
    НовоеПоле.ПутьКДанным = "КомментарийДоп";
    НовоеПоле.Заголовок = "Комментарий";
КонецПроцедуры

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

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

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

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

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

Сравнение способов

Конфигуратор

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

Расширение

Безопасно для типовых, переживает обновления. Нельзя добавлять реквизиты в объекты метаданных, только на форму.

Дополнительные реквизиты

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

Программное создание

Гибкость и динамика по условиям. Значения не сохраняются, код сложнее сопровождать.

Проверка результата и типовые ошибки

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

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

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

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

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

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

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

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

Сохранение данных
Норма

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

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

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

Права пользователей
Норма

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

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

Поле серое или скрыто — настройте роли на новый реквизит

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

Ограничения и когда нужен разработчик

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

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

Итог

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

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

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

Почему добавленное поле не видно на форме в режиме 1С:Предприятие?

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

Как добавить поле без конфигуратора вообще?

Используйте механизм дополнительных реквизитов и сведений в режиме 1С:Предприятие: «Администрирование» → «Общие настройки» → «Дополнительные реквизиты и сведения». Создайте реквизит для нужного объекта — он автоматически появится на форме в группе дополнительных реквизитов и будет сохраняться в базе.

Чем реквизит формы отличается от реквизита объекта?

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

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

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

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

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

Как изменить внешний вид поля: ширину, заголовок, кнопку выбора?

Откройте палитру свойств элемента формы (правый клик по элементу → «Свойства»). Там задаются заголовок, ширина, подсказка, кнопки выбора и очистки, маска ввода для строк и другие параметры отображения.