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

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

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

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

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

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

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

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

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

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

Реквизиты обычной формы

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

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

Просмотр реквизитов в отладчике

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

Когда выполнение остановится, откройте «Табло» (Ctrl+Alt+W) или окно «Вычислить выражение» (Shift+F9) и введите ЭтаФорма. В развёрнутом виде вы увидите все реквизиты формы с текущими значениями. Для управляемой формы основной реквизит доступен как Объект, а его поля — через точку: Объект.Номер, Объект.Дата.

Порядок действий в отладке
  1. 1
    В конфигураторе включите отладку: Отладка — Начать отладку (или подключитесь к сеансу предприятия)
  2. 2
    Откройте модуль нужной формы и поставьте точку останова в обработчике ПриОткрытии или ПриСозданииНаСервере
  3. 3
    В режиме предприятия откройте форму — выполнение остановится на точке
  4. 4
    Откройте табло (Ctrl+Alt+W), введите ЭтаФорма и разверните список реквизитов
  5. 5
    Проверьте значения нужных реквизитов, включая табличные части и дополнительные реквизиты

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

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

bsl
&НаСервере
Процедура ПоказатьРеквизитыФормы()
    РеквизитыФормы = ПолучитьРеквизиты();
    Для Каждого Реквизит Из РеквизитыФормы Цикл
        Сообщить(Реквизит.Имя + " : " + Строка(Реквизит.ТипЗначения));
    КонецЦикла;
КонецПроцедуры

Метод ПолучитьРеквизиты(Путь) с параметром возвращает вложенные реквизиты — например, колонки таблицы значений: ПолучитьРеквизиты("ТаблицаТоваров"). Для реквизитов основного объекта (документа, справочника) список берут из метаданных: Объект.Ссылка.Метаданные().Реквизиты — это реквизиты объекта конфигурации, а не формы, и путать их не следует.

Для обычных форм аналогичный обход выполняется через коллекцию ЭтаФорма.РеквизитыФормы либо через метаданные объекта, если форма связана с данными напрямую.

Способы посмотреть реквизиты

Редактор формы в конфигураторе

Показывает состав и типы реквизитов на этапе разработки. Не показывает значения в работающем сеансе

Отладчик (Табло / Вычислить выражение)

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

Метод ПолучитьРеквизиты()

Программный обход для диагностики и универсальных механизмов. Работает только в контексте формы

Метаданные объекта

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

Отличие реквизитов формы от реквизитов объекта

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

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

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

Динамически созданные реквизиты

Реквизиты формы могут создаваться программно через метод ИзменитьРеквизиты(). Такие реквизиты не видны в редакторе формы в конфигураторе, потому что появляются только в момент выполнения. Это частая причина вопроса «откуда взялся реквизит, которого нет в конфигураторе».

Чтобы найти динамические реквизиты, откройте модуль формы и поищите вызовы ИзменитьРеквизиты и ДобавитьРеквизит (обычно в обработчике ПриСозданииНаСервере). Полный актуальный состав смотрите в отладчике после создания формы — там будут и статические, и динамические реквизиты.

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

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

Состав реквизитов в редакторе формы
Норма

Дерево реквизитов отображается, основной реквизит выделен жирным

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

Панель реквизитов пуста или закрыта — проверьте расположение окон редактора

Значения в отладчике
Норма

ЭтаФорма разворачивается, реквизиты показывают актуальные значения

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

Ошибка «Переменная не определена» — точка останова стоит вне контекста формы

Динамические реквизиты
Норма

После ПриСозданииНаСервере в табло видны программно добавленные реквизиты

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

Реквизита нет в табло — возможно, он создаётся в другом обработчике или на другом контексте

Ограничения и безопасная работа

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

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

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

Как посмотреть реквизиты формы без конфигуратора?

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

Почему в панели «Реквизиты» нет реквизита, который точно есть у документа?

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

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

В редакторе формы тип указан в колонке панели «Реквизиты», а двойной щелчок открывает палитру свойств с полным составом типа. В отладчике тип значения виден в табло рядом со значением, либо вычислите выражение ТипЗнч(ЭтаФорма.ИмяРеквизита).

Чем ПолучитьРеквизиты() отличается от просмотра в конфигураторе?

Метод работает в момент выполнения и возвращает актуальный состав, включая динамически добавленные реквизиты. Конфигуратор показывает только статические реквизиты, заданные при проектировании формы.

Почему в отладчике ЭтаФорма не разворачивается?

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

Итог

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

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