Где лежит нужный реквизит: пять способов отыскать поле объекта в конфигурации 1С 8.3

· 9 мин

Содержание

Чтобы найти поле объекта в 1С, сначала узнайте имя самого объекта: в пользовательском режиме нажмите Shift+F11 («Получить ссылку») — в ссылке вида e1cib/data/Справочник.Номенклатура?ref=… видно тип и имя объекта метаданных. Дальше откройте этот объект в Конфигураторе (Alt+Enter — палитра свойств) и смотрите вкладку «Данные»: реквизиты, табличные части и кнопку «Стандартные реквизиты». Если известно только название поля на экране, ищите по синониму через Правка → Глобальный поиск (Ctrl+Shift+F) или через «Отчёт по конфигурации».

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

С чего начать: какой способ подходит под вашу задачу

Поле объекта в 1С — это не всегда реквизит. Им может оказаться стандартный реквизит, реквизит табличной части, общий реквизит, реквизит формы, поле динамического списка или дополнительный реквизит из подсистемы БСП. Каждый из них ищется в своём месте.

Что известноЧем искатьЧто получите
Подпись поля на формеГлобальный поиск, отчёт по конфигурацииИмя реквизита и объект
Открытый документ или элемент справочникаShift+F11, затем дерево метаданныхИмя объекта и его реквизиты
Поле заполняется «непонятно откуда»Отладчик: точка останова, Shift+F9Путь к данным и значение
Нужно поле для запросаКонструктор запросаТаблица и поле в синтаксисе запроса
Проверка из кода, есть ли полеМетаданные…Реквизиты.Найти()Объект метаданных или Неопределено
Что вы знаете о поле?

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

Дерево конфигурации — основной инструмент. Объекты сгруппированы по видам: «Справочники», «Документы», «Регистры сведений» и так далее.

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

Стандартные реквизиты — то, что создаёт сама платформа. У справочника это Ссылка, Код, Наименование, Родитель, Владелец, ПометкаУдаления, Предопределенный. У документа — Ссылка, Номер, Дата, Проведен, ПометкаУдаления. Их нет в списке «Реквизиты», поэтому их часто ищут зря.

Имя и синоним — разные вещи. Пользователь видит синоним «Вид номенклатуры», а в коде и запросах поле называется ВидНоменклатуры. Синоним показан в палитре свойств рядом с именем.

Глобальный поиск по подписи поля

Если знаете только, как поле подписано на форме, откройте Правка → Глобальный поиск или нажмите Ctrl+Shift+F. Введите подпись целиком или её часть. В окне поиска можно выбрать области — тексты модулей, свойства объектов и другие. Результаты выводятся списком, двойной щелчок по строке открывает найденное место.

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

Отчёт по конфигурации

Второй приём практиков — Конфигурация → Отчёт по конфигурации. Платформа выводит текстовое описание всех объектов: имена, синонимы, типы реквизитов. В полученном тексте ищете подпись через Ctrl+F. На крупных типовых конфигурациях отчёт строится долго, зато показывает всё сразу и не требует ходить по дереву.

Поиск ссылок на объект

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

Палитра свойств и отладчик: откуда поле берёт значение

Палитра свойств открывается клавишей Alt+Enter на любом объекте дерева или элементе формы. Для реквизита там видно имя, синоним, тип, проверку заполнения, связи параметров выбора. Для элемента формы — главное свойство ПутьКДанным: оно говорит, к какому реквизиту привязано поле на экране.

Как найти реквизит по элементу формы

  1. Откройте форму объекта в Конфигураторе (ветка «Формы» внутри объекта).
  2. В дереве элементов найдите поле. Подпись в дереве может отличаться от имени, поэтому смотрите на панель предварительного просмотра внизу.
  3. Откройте палитру свойств элемента и прочитайте ПутьКДанным.
  4. Если путь начинается с Объект. — это реквизит объекта. Если без префикса — реквизит формы, который в базу не записывается.

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

Отладчик: значение в работающей базе

Когда поле заполняется программно и непонятно, где именно, используйте отладку.

  1. В Конфигураторе запустите отладку: Отладка → Начать отладку (F5).
  2. В модуле формы или объекта поставьте точку останова (F9) в обработчике, который подозреваете: ПриСозданииНаСервере, ПриЗаписи, ПередЗаписью.
  3. Выполните действие в открывшемся сеансе.
  4. Когда выполнение остановится, выделите переменную и нажмите Shift+F9 — «Вычислить выражение». Разверните Объект и найдите поле по имени.
  5. Для постоянного наблюдения добавьте выражение в табло — оно обновляется на каждом шаге.

Отладку подключайте к копии базы. В рабочей базе точка останова на сервере может задержать сеанс пользователя, который выполняет тот же код.

Структура полей в конструкторе и консоли запросов

Запрос показывает поля так, как они лежат в таблицах базы. Это быстрее, чем открывать объекты по одному.

Конструктор запроса

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

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

Консоль запросов

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

ВЫБРАТЬ ПЕРВЫЕ 10
    *
ИЗ
    Справочник.Номенклатура КАК Номенклатура

Звёздочка вернёт все поля, включая стандартные. Колонки результата подписаны именами полей — именно эти имена нужны в коде.

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

Поля табличных частей и динамических списков

Табличные части

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

В запросе табличная часть — отдельная таблица:

ВЫБРАТЬ
    Товары.Ссылка,
    Товары.НомерСтроки,
    Товары.Номенклатура,
    Товары.Количество
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК Товары

На форме поле табличной части имеет путь вида Объект.Товары.Количество. Если в документе несколько табличных частей с одинаковыми колонками, путь к данным сразу показывает, из какой части поле.

Динамические списки

Колонка в форме списка часто не совпадает с реквизитом. Чтобы найти её источник:

  1. Откройте форму списка объекта в Конфигураторе.
  2. На вкладке «Реквизиты» выделите реквизит Список с типом ДинамическийСписок.
  3. В палитре свойств откройте настройку списка.
  4. Если включён флажок «Произвольный запрос» — читайте текст запроса. Поле может быть вычисляемым: соединением с регистром, выражением ВЫБОР или подзапросом.
  5. Если флажок снят, данные берутся из основной таблицы, а колонка — один из её реквизитов.

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

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

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

МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени("Справочник.Номенклатура");
Если МетаданныеОбъекта = Неопределено Тогда
    Сообщить("Объект не найден");
    Возврат;
КонецЕсли;

ИмяПоля = "Артикул";
Реквизит = МетаданныеОбъекта.Реквизиты.Найти(ИмяПоля);
Если Реквизит = Неопределено Тогда
    Реквизит = МетаданныеОбъекта.СтандартныеРеквизиты.Найти(ИмяПоля);
КонецЕсли;

Если Реквизит = Неопределено Тогда
    Сообщить("Поле " + ИмяПоля + " не найдено");
Иначе
    Сообщить(Реквизит.Имя + " — " + Реквизит.Синоним + ", тип: " + Строка(Реквизит.Тип));
КонецЕсли;

Если у вас на руках ссылка или объект, метаданные можно получить напрямую: Ссылка.Метаданные().

Чтобы вывести все поля объекта списком, обойдите коллекции:

Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
    Сообщить(Реквизит.Имя + " (" + Реквизит.Синоним + ")");
КонецЦикла;

Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
    Для Каждого РеквизитТЧ Из ТЧ.Реквизиты Цикл
        Сообщить(ТЧ.Имя + "." + РеквизитТЧ.Имя);
    КонецЦикла;
КонецЦикла;

В конфигурациях на БСП есть готовые функции. ОбщегоНазначения.ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) проверяет наличие реквизита. ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяРеквизита") читает значение одним запросом, не загружая весь объект.

На форме элемент ищут по имени: Элементы.Найти("ИмяЭлемента") вернёт элемент или Неопределено. Его свойство ПутьКДанным показывает привязку к реквизиту — так же, как в палитре свойств.

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

Почему поле не находится: частые причины

  • 🔎 Ищете по подписи в дереве метаданных. Дерево показывает имена, а не синонимы. Подпись ищите глобальным поиском или в отчёте по конфигурации.
  • 📌 Поле — стандартный реквизит. Код, Наименование, Дата, Номер не попадают в список «Реквизиты». Смотрите кнопку «Стандартные реквизиты».
  • 🧩 Поле добавлено расширением. Основная конфигурация его не содержит. Откройте Конфигурация → Расширения конфигурации и проверьте каждое расширение.
  • 🗂 Это общий реквизит. Он задаётся в ветке «Общие → Общие реквизиты» и применяется к нескольким объектам сразу. Внутри объекта его не видно.
  • 📝 Это дополнительный реквизит БСП. Пользователь создал его в режиме «1С:Предприятие». Значения хранятся в табличной части объекта (как правило, ДополнительныеРеквизиты) или в регистре сведений, а состав — в плане видов характеристик. В метаданных такого поля нет.
  • 🖼 Это реквизит формы. Он живёт только пока открыта форма. Путь к данным без префикса Объект. — верный признак.
  • 📊 Колонка динамического списка вычисляется запросом. Ищите псевдоним в тексте произвольного запроса.
Как узнать имя объекта метаданных, не открывая Конфигуратор?
Откройте документ или элемент справочника и нажмите Shift+F11. В полученной навигационной ссылке после e1cib/data/ стоит тип и имя объекта, например Документ.ПоступлениеТоваровУслуг.
Почему поиск в Конфигураторе не находит реквизит по названию с экрана?
Быстрый поиск в дереве идёт по именам. Подпись на экране — синоним реквизита или заголовок элемента формы. Ищите её через глобальный поиск или отчёт по конфигурации.
Можно ли найти поле, если база открыта только в пользовательском режиме?
Частично. Ещё → Изменить форму покажет все элементы формы, а Shift+F11 — имя объекта. Имена реквизитов и их типы увидите через консоль запросов, подключённую как внешняя обработка.
Чем реквизит объекта отличается от реквизита формы?
Реквизит объекта хранится в базе и доступен в запросах. Реквизит формы существует только во время работы формы и в таблицы базы не попадает.
Как найти, в каких модулях используется реквизит?
Глобальный поиск по имени реквизита в текстах модулей или контекстная команда «Найти ссылки на объект» на самом реквизите в дереве метаданных.