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

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

Как получить имя объекта в 1С

Как получить имя объекта в 1С: методы НайтиПоСсылке, Метаданные, имя объекта метаданных, синоним и представление. Примеры кода на встроенном языке 1С.

Задача получить имя объекта в 1С возникает в нескольких разных ситуациях: нужно узнать имя объекта метаданных по ссылке, определить тип объекта в универсальном алгоритме, вывести пользователю понятное представление элемента справочника или документа. В каждом случае применяется свой механизм, и путаница между ними — частая причина ошибок в коде.

Важно сразу различить три понятия: имя объекта метаданных (например, «Номенклатура» или «РеализацияТоваровУслуг»), синоним (представление объекта в интерфейсе) и представление ссылки (строка, которую видит пользователь, например «Реализация товаров 000001 от 12.03.2026»). Это разные значения, и получаются они разными способами.

Ниже разобраны основные приёмы: работа с объектом Метаданные, получение имени по ссылке, определение имени таблицы для запросов, а также типичные ошибки и ограничения каждого подхода.

Различие имени, синонима и представления

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

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

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

Представление ссылки — строка, формируемая для конкретного элемента данных: наименование элемента справочника или номер и дата документа. Получается функцией Строка() или автоматически при выводе.

Получение имени объекта метаданных по ссылке

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

ИмяОбъекта = Ссылка.Метаданные().Имя;

// Например: "Номенклатура"

ПолноеИмя = Ссылка.Метаданные().ПолноеИмя();

// Например: "Справочник.Номенклатура"

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

Учтите, что вызов Ссылка.Метаданные() — это обращение к метаданным конфигурации, а не к базе данных, поэтому метод работает быстро и не требует чтения объекта. Это делает его безопасным для массовых обходов коллекций ссылок.

1c
ИмяОбъекта = Ссылка.Метаданные().Имя;
ПолноеИмя = Ссылка.Метаданные().ПолноеИмя();
Синоним = Ссылка.Метаданные().Синоним;

Определение имени по типу значения

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

ТипЗначения = ТипЗнч(Значение);

ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);

Если ОбъектМетаданных <> Неопределено Тогда

ИмяОбъекта = ОбъектМетаданных.Имя;

КонецЕсли;

Обязательно проверяйте результат на Неопределено: метод возвращает его для примитивных типов (Строка, Число, Дата) и для типов, не связанных с объектами метаданных. Обращение к свойству Имя без проверки приведёт к ошибке исполнения.

Обратная задача — получить объект метаданных по известному имени — решается через Метаданные.НайтиПоПолномуИмени("Справочник.Номенклатура"). Этот приём используется в универсальных обработках, где имя объекта приходит строкой из настроек или параметров.

Имя таблицы объекта для запросов

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

ПолноеИмя = Ссылка.Метаданные().ПолноеИмя();

ТекстЗапроса = "ВЫБРАТЬ Первые 1 Ссылка ИЗ " + ПолноеИмя;

Такой подход работает для справочников, документов, регистров и планов обмена. Однако будьте осторожны с перечислениями: у них нет ссылочной таблицы в привычном смысле, и обращение к значениям выполняется через ЗНАЧЕНИЕ(Перечисление.Имя.Значение).

Получение представления объекта для пользователя

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

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

Учтите, что получение представления ссылки на сервере может потребовать обращения к данным объекта. В типовых конфигурациях для этого существуют функции общих модулей, например формирование представления документа с учётом настроек нумерации.

Что использовать в разных задачах

Ссылка.Метаданные().Имя

Для логики, сравнения видов объектов, ветвления кода. Быстро, без обращения к БД.

ПолноеИмя()

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

Синоним

Для вывода в интерфейс и заголовки. Не использовать в программной логике.

Строка(Ссылка)

Для отображения конкретного элемента пользователю.

Имя объекта внешней обработки и отчёта

Отдельный случай — определить имя текущей внешней обработки или отчёта из её собственного кода. Для этого используется свойство ЭтотОбъект.ИспользуемоеИмяФайла, доступное в модуле объекта внешней обработки.

ИмяФайла = ЭтотОбъект.ИспользуемоеИмяФайла;

// Например: "C:\Обработки\МояОбработка.epf"

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

Типичные ошибки и как их избежать

Наиболее частая ошибка — использование синонима или представления для сравнения в коде. Синоним могут переименовать в конфигураторе, и вся логика, завязанная на строку «Номенклатура товаров», перестанет работать. Для сравнений используйте только Имя или ПолноеИмя.

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

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

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

Что вернул Метаданные().Имя
Норма

Строка-идентификатор без пробелов, например «Номенклатура»

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

Пустая строка или ошибка обращения к свойству

Результат НайтиПоТипу()
Норма

Объект описания метаданных, не Неопределено

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

Неопределено — значит, тип не связан с объектом конфигурации

ПолноеИмя() для запроса
Норма

Строка вида «Вид.Имя», запрос выполняется

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

Ошибка компоновки запроса — имя таблицы неверно

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

Как узнать, справочник это или документ, имея только ссылку?

Получите полное имя: Ссылка.Метаданные().ПолноеИмя() и проверьте начало строки, либо используйте Метаданные.Справочники.Содержит(Ссылка.Метаданные()) — метод вернёт Истина, если объект относится к справочникам.

Можно ли получить имя объекта в запросе без кода?

Да, в языке запросов есть функция ТИПЗНАЧЕНИЯ() и оператор ССЫЛКА для проверки вида ссылки: ГДЕ Таблица.Поле ССЫЛКА Справочник.Номенклатура. Но само имя строкой запрос не возвращает — для этого нужен код.

Чем отличается Имя от ПредставлениеОбъекта?

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

Как получить имя регистра, в котором есть запись?

Через набор записей или менеджер регистра: РегистрыСведений.ИмяРегистра — это доступ по имени. Обратно, от записи регистра: Запись.Метаданные().Имя вернёт имя регистра, а ПолноеИмя() — например, «РегистрСведений.КурсыВалют».

Почему Ссылка.Метаданные() иногда недоступен на клиенте?

В тонком и веб-клиенте доступ к объекту Метаданные ограничен: полная работа с метаданными возможна на сервере. Вынесите получение имени в серверную процедуру общего модуля с признаком «Сервер» и возвращайте на клиент готовую строку.

Итог

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

Имя объекта для логики получают через Ссылка.Метаданные().Имя или ПолноеИмя(), для произвольного значения — через Метаданные.НайтиПоТипу() с проверкой на Неопределено. Синоним и представление — только для интерфейса, использовать их в программных сравнениях нельзя.