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