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

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

Как вывести реквизит на форму в 1С

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

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

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

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

Определите, какой у вас случай: реквизит есть или его нужно создать

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

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

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

Как выбрать способ

Конфигурация дорабатывается, есть доступ к конфигураторуДобавьте реквизит в метаданные и перетащите его на форму в конфигураторе
Типовая конфигурация на поддержке, реквизит уже существует, но скрытИспользуйте «Ещё → Изменить форму» в режиме предприятия
Нужно добавить поле без изменения конфигурацииИспользуйте механизм дополнительных реквизитов (Администрирование → Общие настройки)
Поле должно появляться по условию или динамическиСоздавайте элемент формы программно в обработчике ПриСозданииНаСервере

Вывод реквизита через конфигуратор

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

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

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

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

Вывод реквизита без конфигуратора: «Изменить форму»

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

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

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

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

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

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

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

Сравнение способов вывода реквизита

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

Полный контроль над полем и логикой. Требует доработки конфигурации и усложняет обновление типовых решений

Изменить форму

Быстро и безопасно, но работает только с уже существующими в форме скрытыми реквизитами

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

Новое поле без доработки, но ограниченные возможности размещения и использования в коде

Расширение конфигурации

Доработка формы без снятия с поддержки; требует навыков разработки, не все объекты расширяются

Программный вывод реквизита на форму

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

Общий принцип: сначала добавляется реквизит формы через метод ИзменитьРеквизиты, затем создаётся элемент формы методом Элементы.Добавить с указанием типа Тип("ПолеФормы"), после чего элемент связывается с данными через свойство ПутьКДанным.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ДобавляемыеРеквизиты = Новый Массив;

ДобавляемыеРеквизиты.Добавить(

Новый РеквизитФормы("КомментарийДоп",

Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200))));

ИзменитьРеквизиты(ДобавляемыеРеквизиты);

НовыйЭлемент = Элементы.Добавить("КомментарийДоп", Тип("ПолеФормы"));

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

НовыйЭлемент.ПутьКДанным = "КомментарийДоп";

НовыйЭлемент.Заголовок = "Комментарий";

КонецПроцедуры

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

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

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

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

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

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

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

Откройте объект в режиме предприятия
Норма

Поле отображается в ожидаемом месте, можно ввести и сохранить значение

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

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

Запишите объект и откройте заново
Норма

Введённое значение сохранилось

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

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

Проверьте под другим пользователем
Норма

Поле видно всем, кому нужно

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

Поле видно только вам — настройка формы персональная или есть ограничение по правам

Проверьте отчёты и печатные формы
Норма

Реквизит доступен при необходимости в отчётах

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

Реквизит есть на форме, но не попадает в отчёты — потребуется доработка запросов

Частые ошибки и их устранение

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

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

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

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

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

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

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

Итог

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

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

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

Почему реквизит есть в объекте, но его нет на форме?

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

Можно ли вывести реквизит на форму без конфигуратора?

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

Поле появилось, но введённое значение не сохраняется. В чём причина?

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

Как вывести реквизит в список документов?

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

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

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

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

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