Разработка и Конфигурация · 12 мин
Как получить имя документа в 1С
Как получить имя документа в 1С: через метаданные, методы Ссылка.Метаданные().Имя, ТипЗнч и Строка(). Примеры кода, типичные ошибки и ответы на вопросы.
Под «именем документа» в 1С чаще всего понимают одно из трёх: имя вида документа в конфигурации (например, «РеализацияТоваровУслуг»), синоним, который видит пользователь («Реализация (акты, накладные)»), или строковое представление конкретного документа с номером и датой. Способ получения зависит от того, что именно требуется и где выполняется код — на сервере, на клиенте, в запросе или во внешней обработке.
Различие принципиально: имя вида документа — это свойство метаданных, оно одинаково для всех документов одного типа и не зависит от данных. Строковое представление — это уже информация о конкретном объекте. Смешение этих понятий — самая частая причина ошибок вида «поле объекта не обнаружено» при попытке взять имя у ссылки неправильным методом.
Ниже разобраны рабочие способы для управляемых и обычных форм, запросов и печатных форм, с примерами кода на встроенном языке 1С и пояснениями, когда какой вариант выбирать.
Что именно считается именем документа
Прежде чем писать код, определите, какое «имя» нужно в вашей задаче. В типовых конфигурациях один и тот же документ имеет несколько идентификаторов, и они не взаимозаменяемы.
- Имя в конфигурации — идентификатор объекта метаданных, например
ПоступлениеТоваровУслуг. Используется в коде, запросах, при обмене данными. - Синоним — название для пользователя, например «Поступление (акты, накладные, УПД)». Может меняться без изменения кода.
- Представление ссылки — строка вида «Поступление товаров и услуг 0000-000123 от 12.03.2026», формируется платформой автоматически.
- Имя файла печатной формы — отдельная задача, когда документ сохраняется в PDF или Excel и нужно сформировать понятное имя файла.
Получение имени вида документа через метаданные
Универсальный способ, работающий для любой ссылки на документ, — обратиться к метаданным через саму ссылку. Метод Метаданные() доступен у любой ссылки и не требует обращения к данным объекта в базе.
// Имя вида документа, как оно задано в конфигураторе
ИмяДокумента = ДокументСсылка.Метаданные().Имя;
// Результат: "РеализацияТоваровУслуг"
// Синоним для показа пользователю
СинонимДокумента = ДокументСсылка.Метаданные().Синоним;
// Результат: "Реализация (акты, накладные)"
Если ссылки нет, а нужно получить имя по типу, используют менеджер документов:
// Через коллекцию метаданных
ОбъектМетаданных = Метаданные.Документы.РеализацияТоваровУслуг;
Имя = ОбъектМетаданных.Имя;
// Проверка, что ссылка вообще является документом
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ДокументСсылка)) Тогда
ИмяДокумента = ДокументСсылка.Метаданные().Имя;
КонецЕсли;
Важный нюанс: метод Метаданные() у ссылки выполняется без чтения объекта из базы, поэтому это быстрая операция, безопасная в циклах. А вот обращение к реквизитам через точку (например, ДокументСсылка.Номер) вызывает неявное чтение данных и в цикле по тысячам документов заметно замедлит выполнение.
Как получить имя документа в запросе
В языке запросов нет прямого доступа к метаданным, но есть два рабочих приёма. Первый — функция ПРЕДСТАВЛЕНИЕ(), которая возвращает строковое представление ссылки. Второй — определение типа через ТИПЗНАЧЕНИЯ() с сравнением по конкретному типу документа.
ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ(Регистратор.Ссылка) КАК ДокументПредставление,
ТИПЗНАЧЕНИЯ(Регистратор) КАК ТипДокумента
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
Если в отчёте нужно вывести именно имя вида документа (а не представление), стандартный приём — добавить вычисляемое поле в схему компоновки данных или дополнить результат запроса обходом в коде с вызовом Метаданные().Имя. Для СКД это делается через выражение на языке выражений компоновки либо постобработку результата.
Условие ССЫЛКА Документ.ИмяДокумента — самый производительный способ отфильтровать записи по виду документа: сравнение идёт по типу ссылки без чтения данных.
Определение типа без жёсткой привязки
Когда заранее неизвестно, документ какого вида придёт на вход (например, в универсальной обработке печати), тип определяют так:
ТипСсылки = ТипЗнч(ВходящаяСсылка);
Если ТипСсылки = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
ИмяДокумента = "РеализацияТоваровУслуг";
Иначе
// Универсальный вариант без перебора всех типов
ИмяДокумента = ВходящаяСсылка.Метаданные().Имя;
КонецЕсли;
Получение представления документа с номером и датой
Для сообщений пользователю, заголовков печатных форм и имён файлов обычно нужна не техническая строка, а читаемое представление: «Реализация товаров и услуг 0000-000123 от 12.03.2026». Платформа формирует его автоматически функцией Строка():
ПредставлениеДокумента = Строка(ДокументСсылка);
// "Реализация товаров и услуг 0000-000123 от 12.03.2026 12:30:05"
// Если нужно без времени — соберите вручную:
Представление = ДокументСсылка.Метаданные().Синоним + " №"
+ ДокументСсылка.Номер + " от "
+ Формат(ДокументСсылка.Дата, "ДЛФ=D");
В типовых конфигурациях на базе БСП (Библиотека стандартных подсистем) есть готовая функция получения номера на печать с отбрасыванием лидирующих нулей и префиксов: ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(). Она учитывает настройки префиксации информационной базы и организации.
ПредставлениеДокумента = Строка(ДокументСсылка);
ИмяВида = ДокументСсылка.Метаданные().Имя;
СинонимВида = ДокументСсылка.Метаданные().Синоним;
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДокументСсылка.Номер);Имя документа для файла печатной формы
Частая прикладная задача — сохранить печатную форму в PDF или Excel с понятным именем файла. Здесь есть ограничение: в имени файла недопустимы символы \ / : * ? " < > |, а представление документа может их содержать (например, двоеточие во времени).
Функция ИмяФайлаДокумента(ДокументСсылка)
Шаблон = НСтр("ru = '%1 №%2 от %3'");
ИмяФайла = СтрШаблон(Шаблон,
ДокументСсылка.Метаданные().Синоним,
ДокументСсылка.Номер,
Формат(ДокументСсылка.Дата, "ДФ=yyyy-MM-dd"));
// Удаляем недопустимые символы
Недопустимые = "\/:*?""<>|";
Для Позиция = 1 По СтрДлина(Недопустимые) Цикл
ИмяФайла = СтрЗаменить(ИмяФайла, Сред(Недопустимые, Позиция, 1), "_");
КонецЦикла;
Возврат ИмяФайла + ".pdf";
КонецФункции
Такой подход даёт стабильные имена вида «Реализация (акты, накладные) №0000-000123 от 2026-03-12.pdf», которые корректно сохраняются и в Windows, и в Linux, и при выгрузке в веб-сервисы.
Как выбрать способ под свою задачу
Выбор метода определяется контекстом выполнения. Ниже — типовые сценарии и подходящие решения.
| Задача | Способ | Ограничение |
|---|---|---|
| Имя вида для логики кода | Ссылка.Метаданные().Имя | Только для ссылок, не для значений примитивных типов |
| Название для пользователя | Ссылка.Метаданные().Синоним | Зависит от языка конфигурации |
| Представление с номером и датой | Строка(Ссылка) или ПРЕДСТАВЛЕНИЕ() в запросе | Формат задаётся платформой |
| Фильтр по виду в запросе | ССЫЛКА Документ.Имя | Требует знания имени на этапе разработки |
| Имя файла печатной формы | Сборка из синонима, номера и даты | Нужна очистка недопустимых символов |
Как выбрать действие
Проверка результата и типичные ошибки
После внедрения кода проверьте поведение на нескольких документах разных видов, включая непроведённые и помеченные на удаление. Представление помеченного документа формируется корректно, но логика дальнейшей обработки может требовать отдельной проверки ПометкаУдаления.
Как проверить результат
Возвращается строка вида РеализацияТоваровУслуг
Ошибка «Метод объекта не обнаружен» — на входе не ссылка, а, например, структура
Читаемое представление с номером и датой
Пустая строка — ссылка битая или значение не заполнено
Файл сохраняется на диск без ошибок
Ошибка записи — в имени остались недопустимые символы
Отдельного упоминания заслуживает работа с «битыми» ссылками — когда документ удалён, а ссылка на него осталась в других объектах. У такой ссылки метод Метаданные() отработает корректно (тип известен), но чтение реквизитов вернёт пустые значения, а представление будет содержать указание на удалённый объект. Проверяйте существование объекта через Ссылка.ПолучитьОбъект() с проверкой на Неопределено или запросом.
Что важно запомнить
Имя вида документа берётся из метаданных: Ссылка.Метаданные().Имя. Представление для пользователя — через Строка(Ссылка) или ПРЕДСТАВЛЕНИЕ() в запросе. Для фильтрации в запросах используйте оператор ССЫЛКА. Для имён файлов собирайте строку вручную с очисткой недопустимых символов. Никогда не используйте строковое представление как ключ сопоставления данных.
Частые вопросы
Как получить имя документа, если есть только его тип, но нет ссылки?
Используйте коллекцию метаданных: Метаданные.НайтиПоТипу(Тип).Имя — метод вернёт объект описания метаданных по типу. Либо, если имя типа известно заранее, обратитесь напрямую: Метаданные.Документы.РеализацияТоваровУслуг.Имя.
Почему Метаданные().Имя возвращает имя на русском, а не на английском?
Так задумал разработчик конфигурации: имя объекта метаданных задаётся в конфигураторе и может быть на любом поддерживаемом языке идентификаторов. В большинстве типовых конфигураций 1С имена объектов — на русском языке, это норма, а не ошибка.
Как получить имя документа на клиенте в управляемой форме?
Метод Метаданные() у ссылки доступен в тонком клиенте, поэтому Ссылка.Метаданные().Имя работает и на клиенте. Если доступ ограничен в вашей конфигурации (безопасный режим, внешняя компонента), получите имя в серверной процедуре и передайте на клиент строкой.
Можно ли получить имя документа по уникальному идентификатору?
Напрямую по GUID имя метаданных не определяется. Сначала получите ссылку через Документы.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаGUID)) для конкретного вида документа, либо переберите менеджеры документов, если вид неизвестен. После получения ссылки имя доступно через Метаданные().Имя.
Чем отличается Синоним от ПредставленияОбъекта?
Синоним — статичное название вида документа из конфигуратора, одинаковое для всех документов этого вида. Представление объекта (свойство метаданных ПредставлениеОбъекта) — настраиваемое название единичного экземпляра, например «Реализация товаров». Оба не содержат номера и даты конкретного документа.
Как узнать имена всех документов конфигурации?
Переберите коллекцию: Для Каждого ДокументМета Из Метаданные.Документы Цикл — внутри цикла доступны ДокументМета.Имя и ДокументМета.Синоним. Это удобно для построения универсальных обработок, настроек обмена и списков выбора вида документа.