Где лежит нужный реквизит: пять способов отыскать поле объекта в конфигурации 1С 8.3
Содержание
Чтобы найти поле объекта в 1С, сначала узнайте имя самого объекта: в пользовательском режиме нажмите Shift+F11 («Получить ссылку») — в ссылке вида e1cib/data/Справочник.Номенклатура?ref=… видно тип и имя объекта метаданных. Дальше откройте этот объект в Конфигураторе (Alt+Enter — палитра свойств) и смотрите вкладку «Данные»: реквизиты, табличные части и кнопку «Стандартные реквизиты». Если известно только название поля на экране, ищите по синониму через Правка → Глобальный поиск (Ctrl+Shift+F) или через «Отчёт по конфигурации».
Способ зависит от того, что у вас на руках. Есть подпись поля на форме — начинайте с глобального поиска. Есть открытый объект — с навигационной ссылки. Нужно понять, откуда поле берёт значение в работающей базе, — с отладчика. Нужен список полей для отчёта или обработки — с конструктора запроса или кода через Метаданные.
С чего начать: какой способ подходит под вашу задачу
Поле объекта в 1С — это не всегда реквизит. Им может оказаться стандартный реквизит, реквизит табличной части, общий реквизит, реквизит формы, поле динамического списка или дополнительный реквизит из подсистемы БСП. Каждый из них ищется в своём месте.
| Что известно | Чем искать | Что получите |
|---|---|---|
| Подпись поля на форме | Глобальный поиск, отчёт по конфигурации | Имя реквизита и объект |
| Открытый документ или элемент справочника | Shift+F11, затем дерево метаданных | Имя объекта и его реквизиты |
| Поле заполняется «непонятно откуда» | Отладчик: точка останова, Shift+F9 | Путь к данным и значение |
| Нужно поле для запроса | Конструктор запроса | Таблица и поле в синтаксисе запроса |
| Проверка из кода, есть ли поле | Метаданные…Реквизиты.Найти() | Объект метаданных или Неопределено |
Правка → Глобальный поиск, введите подпись. Совпадение по синониму покажет объект и имя реквизита.Конфигурация → Расширения конфигурации) и дополнительные реквизиты БСП — они хранятся данными, а не метаданными.Поиск реквизита в дереве метаданных Конфигуратора
Дерево конфигурации — основной инструмент. Объекты сгруппированы по видам: «Справочники», «Документы», «Регистры сведений» и так далее.
- Откройте базу в режиме Конфигуратора и откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - Разверните нужную ветку, например «Справочники».
- Встаньте на объект и начните набирать его имя — дерево переходит к первому совпадению.
- Двойной щелчок открывает окно редактирования объекта. Перейдите на вкладку «Данные».
- Там три блока: «Реквизиты», «Табличные части» и кнопка «Стандартные реквизиты».
Стандартные реквизиты — то, что создаёт сама платформа. У справочника это Ссылка, Код, Наименование, Родитель, Владелец, ПометкаУдаления, Предопределенный. У документа — Ссылка, Номер, Дата, Проведен, ПометкаУдаления. Их нет в списке «Реквизиты», поэтому их часто ищут зря.
Имя и синоним — разные вещи. Пользователь видит синоним «Вид номенклатуры», а в коде и запросах поле называется ВидНоменклатуры. Синоним показан в палитре свойств рядом с именем.
Глобальный поиск по подписи поля
Если знаете только, как поле подписано на форме, откройте Правка → Глобальный поиск или нажмите Ctrl+Shift+F. Введите подпись целиком или её часть. В окне поиска можно выбрать области — тексты модулей, свойства объектов и другие. Результаты выводятся списком, двойной щелчок по строке открывает найденное место.
Глобальный поиск находит и места, где поле используется в коде. Это удобно, когда нужно понять, какая процедура заполняет реквизит.
Отчёт по конфигурации
Второй приём практиков — Конфигурация → Отчёт по конфигурации. Платформа выводит текстовое описание всех объектов: имена, синонимы, типы реквизитов. В полученном тексте ищете подпись через Ctrl+F. На крупных типовых конфигурациях отчёт строится долго, зато показывает всё сразу и не требует ходить по дереву.
Поиск ссылок на объект
Когда поле нашли и нужно понять, где ещё оно участвует, щёлкните по реквизиту правой кнопкой и выберите «Найти ссылки на объект». Конфигуратор покажет формы, макеты, роли и другие объекты, которые на него ссылаются.
Палитра свойств и отладчик: откуда поле берёт значение
Палитра свойств открывается клавишей Alt+Enter на любом объекте дерева или элементе формы. Для реквизита там видно имя, синоним, тип, проверку заполнения, связи параметров выбора. Для элемента формы — главное свойство ПутьКДанным: оно говорит, к какому реквизиту привязано поле на экране.
Как найти реквизит по элементу формы
- Откройте форму объекта в Конфигураторе (ветка «Формы» внутри объекта).
- В дереве элементов найдите поле. Подпись в дереве может отличаться от имени, поэтому смотрите на панель предварительного просмотра внизу.
- Откройте палитру свойств элемента и прочитайте
ПутьКДанным. - Если путь начинается с
Объект.— это реквизит объекта. Если без префикса — реквизит формы, который в базу не записывается.
В пользовательском режиме то же можно посмотреть без Конфигуратора: Ещё → Изменить форму. В окне настройки видны все элементы формы, включая скрытые. Это помогает понять, есть ли нужное поле на форме вообще, но имени реквизита там не будет.
Отладчик: значение в работающей базе
Когда поле заполняется программно и непонятно, где именно, используйте отладку.
- В Конфигураторе запустите отладку:
Отладка → Начать отладку(F5). - В модуле формы или объекта поставьте точку останова (
F9) в обработчике, который подозреваете:ПриСозданииНаСервере,ПриЗаписи,ПередЗаписью. - Выполните действие в открывшемся сеансе.
- Когда выполнение остановится, выделите переменную и нажмите
Shift+F9— «Вычислить выражение». РазвернитеОбъекти найдите поле по имени. - Для постоянного наблюдения добавьте выражение в табло — оно обновляется на каждом шаге.
Отладку подключайте к копии базы. В рабочей базе точка останова на сервере может задержать сеанс пользователя, который выполняет тот же код.
Структура полей в конструкторе и консоли запросов
Запрос показывает поля так, как они лежат в таблицах базы. Это быстрее, чем открывать объекты по одному.
Конструктор запроса
Откройте любой модуль, щёлкните правой кнопкой и выберите «Конструктор запроса». На вкладке «Таблицы и поля» в левой колонке — все объекты базы. Разверните Справочник.Номенклатура: увидите стандартные реквизиты, реквизиты и табличные части, а у регистров — виртуальные таблицы Остатки, Обороты, СрезПоследних.
Справа от поля в дереве видно, ссылочное оно или нет. Ссылочное поле можно развернуть «через точку» и добраться до реквизитов связанного объекта.
Консоль запросов
Консоль — обработка для выполнения запросов в пользовательском режиме. Она не входит в типовые конфигурации, её подключают как внешнюю обработку. Чтобы быстро увидеть все поля объекта вместе со значениями, выполните:
ВЫБРАТЬ ПЕРВЫЕ 10
*
ИЗ
Справочник.Номенклатура КАК Номенклатура
Звёздочка вернёт все поля, включая стандартные. Колонки результата подписаны именами полей — именно эти имена нужны в коде.
Чтобы найти, в каком объекте хранится конкретное значение, сначала выберите его в форме, нажмите Shift+F11 и посмотрите тип в ссылке. Это убирает гадание, к какому справочнику относится поле.
Поля табличных частей и динамических списков
Табличные части
Реквизит табличной части лежит внутри неё, а не на уровне объекта. В дереве метаданных разверните объект → «Табличные части» → нужная часть → её реквизиты. Платформа добавляет каждой строке стандартные поля НомерСтроки и Ссылка (ссылка на владельца).
В запросе табличная часть — отдельная таблица:
ВЫБРАТЬ
Товары.Ссылка,
Товары.НомерСтроки,
Товары.Номенклатура,
Товары.Количество
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Товары
На форме поле табличной части имеет путь вида Объект.Товары.Количество. Если в документе несколько табличных частей с одинаковыми колонками, путь к данным сразу показывает, из какой части поле.
Динамические списки
Колонка в форме списка часто не совпадает с реквизитом. Чтобы найти её источник:
- Откройте форму списка объекта в Конфигураторе.
- На вкладке «Реквизиты» выделите реквизит
Списокс типомДинамическийСписок. - В палитре свойств откройте настройку списка.
- Если включён флажок «Произвольный запрос» — читайте текст запроса. Поле может быть вычисляемым: соединением с регистром, выражением
ВЫБОРили подзапросом. - Если флажок снят, данные берутся из основной таблицы, а колонка — один из её реквизитов.
Вычисляемое поле динамического списка нельзя найти в метаданных объекта: его нет в базе как реквизита. Ищите его по псевдониму в тексте запроса списка.
Программный поиск поля через Метаданные
Когда нужно проверить наличие поля в коде — например, в обработке, которая работает с разными конфигурациями, — используйте объект Метаданные.
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени("Справочник.Номенклатура");
Если МетаданныеОбъекта = Неопределено Тогда
Сообщить("Объект не найден");
Возврат;
КонецЕсли;
ИмяПоля = "Артикул";
Реквизит = МетаданныеОбъекта.Реквизиты.Найти(ИмяПоля);
Если Реквизит = Неопределено Тогда
Реквизит = МетаданныеОбъекта.СтандартныеРеквизиты.Найти(ИмяПоля);
КонецЕсли;
Если Реквизит = Неопределено Тогда
Сообщить("Поле " + ИмяПоля + " не найдено");
Иначе
Сообщить(Реквизит.Имя + " — " + Реквизит.Синоним + ", тип: " + Строка(Реквизит.Тип));
КонецЕсли;
Если у вас на руках ссылка или объект, метаданные можно получить напрямую: Ссылка.Метаданные().
Чтобы вывести все поля объекта списком, обойдите коллекции:
Для Каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл
Сообщить(Реквизит.Имя + " (" + Реквизит.Синоним + ")");
КонецЦикла;
Для Каждого ТЧ Из МетаданныеОбъекта.ТабличныеЧасти Цикл
Для Каждого РеквизитТЧ Из ТЧ.Реквизиты Цикл
Сообщить(ТЧ.Имя + "." + РеквизитТЧ.Имя);
КонецЦикла;
КонецЦикла;
В конфигурациях на БСП есть готовые функции. ОбщегоНазначения.ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) проверяет наличие реквизита. ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ИмяРеквизита") читает значение одним запросом, не загружая весь объект.
На форме элемент ищут по имени: Элементы.Найти("ИмяЭлемента") вернёт элемент или Неопределено. Его свойство ПутьКДанным показывает привязку к реквизиту — так же, как в палитре свойств.
Не меняйте и не удаляйте найденный реквизит в типовой конфигурации на поддержке без расширения. Снятие с поддержки усложнит каждое следующее обновление. Для доработок используйте расширение конфигурации.
Почему поле не находится: частые причины
- 🔎 Ищете по подписи в дереве метаданных. Дерево показывает имена, а не синонимы. Подпись ищите глобальным поиском или в отчёте по конфигурации.
- 📌 Поле — стандартный реквизит.
Код,Наименование,Дата,Номерне попадают в список «Реквизиты». Смотрите кнопку «Стандартные реквизиты». - 🧩 Поле добавлено расширением. Основная конфигурация его не содержит. Откройте
Конфигурация → Расширения конфигурациии проверьте каждое расширение. - 🗂 Это общий реквизит. Он задаётся в ветке «Общие → Общие реквизиты» и применяется к нескольким объектам сразу. Внутри объекта его не видно.
- 📝 Это дополнительный реквизит БСП. Пользователь создал его в режиме «1С:Предприятие». Значения хранятся в табличной части объекта (как правило,
ДополнительныеРеквизиты) или в регистре сведений, а состав — в плане видов характеристик. В метаданных такого поля нет. - 🖼 Это реквизит формы. Он живёт только пока открыта форма. Путь к данным без префикса
Объект.— верный признак. - 📊 Колонка динамического списка вычисляется запросом. Ищите псевдоним в тексте произвольного запроса.
Как узнать имя объекта метаданных, не открывая Конфигуратор?
Shift+F11. В полученной навигационной ссылке после e1cib/data/ стоит тип и имя объекта, например Документ.ПоступлениеТоваровУслуг.Почему поиск в Конфигураторе не находит реквизит по названию с экрана?
Можно ли найти поле, если база открыта только в пользовательском режиме?
Ещё → Изменить форму покажет все элементы формы, а Shift+F11 — имя объекта. Имена реквизитов и их типы увидите через консоль запросов, подключённую как внешняя обработка.