Разработка и Конфигурация · 10 мин
Как определить вид документа в 1С
Разбираем, как определить вид документа в 1С: по представлению, метаданным, запросом и встроенными функциями. Примеры кода, проверка результата и частые ошибки.
Задача определить вид документа возникает в 1С постоянно: при написании обработчиков проведения, при построении отчётов, при обмене данными и даже при простом поиске нужного объекта в журнале. «Вид документа» — это имя объекта метаданных, например «РеализацияТоваровУслуг» или «ПриходныйКассовыйОрдер», а не номер и не дата конкретной записи.
Путаница обычно возникает из-за того, что у одного и того же документа есть несколько «имён»: синоним (человекочитаемое название «Реализация (акты, накладные, УПД)»), имя в конфигурации («РеализацияТоваровУслуг») и представление ссылки, которое видит пользователь в списке. Для программной логики нужно именно имя метаданных, для интерфейса — синоним.
Ниже разобраны рабочие способы определить вид документа: в пользовательском режиме, через конфигуратор, запросом и встроенным языком. Каждый способ подходит для своей ситуации, и выбор зависит от того, есть ли у вас доступ к коду или вы работаете только в режиме «Предприятие».
Что именно считается видом документа
В терминах платформы 1С документ — это прикладной объект, описанный в ветке «Документы» дерева конфигурации. Вид документа определяется именем этого объекта метаданных. Два документа с одинаковым номером, но разными видами — совершенно разные объекты с разными таблицами в базе данных.
У вида документа есть три ключевых представления: имя (латиницей, используется в коде и запросах), синоним (отображается пользователю) и представление объекта (формируется из номера и даты). Когда требуется «определить вид документа», почти всегда нужно получить имя метаданных, потому что именно оно однозначно идентифицирует тип.
Как определить вид документа в пользовательском режиме
Если вы работаете в режиме «Предприятие» и перед вами открыт документ, самый простой признак — заголовок формы и название журнала, из которого документ открыт. Журнал может объединять несколько видов документов, поэтому надёжнее смотреть на саму форму: типовые конфигурации выводят название вида в заголовке окна или в начале представления объекта.
Более точный способ — воспользоваться встроенным инструментом «Все функции» (в новых версиях — «Функции для технического специалиста»). Откройте его через меню, найдите раздел «Документы» — там перечислены все виды документов конфигурации с их синонимами. Если нужно узнать вид конкретной ссылки, используйте обработку «Информация об объекте» или аналогичную, где по ссылке показывается тип и имя метаданных.
Ещё один практический приём — открыть команду «Вывести список» в журнале документов. В настройках колонок можно добавить колонку «Вид документа» или «Тип», если журнал общий. Тогда вид каждой строки будет виден прямо в списке без открытия документов.
- 1Откройте журнал, в котором находится документ
- 2Посмотрите на заголовок формы документа — там указано название вида
- 3Если журнал общий — добавьте колонку «Вид документа» через «Ещё → Изменить форму» или «Вывести список»
- 4Для точного имени метаданных откройте «Функции для технического специалиста» и найдите объект по ссылке
Как определить вид документа программно
Во встроенном языке 1С вид документа определяется через свойство «Метаданные» у ссылки или объекта. Вызов ДокументСсылка.Метаданные().Имя возвращает строку с именем вида, например «РеализацияТоваровУслуг». Этот способ работает для любой ссылки, не только для документов.
Для сравнения вида с эталоном удобнее использовать функцию ТипЗнч() вместе с Тип(): конструкция ТипЗнч(Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") возвращает Истина, если ссылка относится именно к этому виду. Такой вариант быстрее сравнения строк и защищён от опечаток — при неверном имени конфигуратор выдаст ошибку ещё на этапе проверки модуля.
// Способ 1: имя вида строкой
ИмяВида = ДокументСсылка.Метаданные().Имя; // "РеализацияТоваровУслуг"
// Способ 2: проверка на конкретный вид
Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// обработка реализации
КонецЕсли;
// Способ 3: синоним для вывода пользователю
ПредставлениеВида = ДокументСсылка.Метаданные().Синоним;Если нужно проверить, что значение вообще является документом (а не справочником или другим типом), используйте проверку принадлежности к метаданным: Метаданные.Документы.Найти(Ссылка.Метаданные().Имя) <> Неопределено либо сравнение через Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)).
Как определить вид документа в запросе
В языке запросов 1С вид документа проверяется оператором ССЫЛКА или функцией ВЫРАЗИТЬ. Конструкция ГДЕ Реквизит ССЫЛКА Документ.РеализацияТоваровУслуг отбирает только записи, где реквизит ссылается на документ этого вида. Это стандартный способ фильтрации в запросах к регистрам и таблицам с составными типами.
Если нужно получить имя вида в результате запроса, используйте виртуальное поле ТипЗначения недоступно напрямую, но можно построить выбор через ВЫБОР с перечислением типов. На практике чаще ограничиваются отбором по конкретному виду или обходят результат в коде, где вид определяется через Метаданные().
ВЫБРАТЬ
Регистратор
ИЗ
РегистрНакопления.Продажи
ГДЕ
Регистратор ССЫЛКА Документ.РеализацияТоваровУслугКак определить вид документа через конфигуратор
В конфигураторе список всех видов документов находится в дереве конфигурации: ветка «Документы». Здесь видно имя, синоним, нумерацию, длину номера и другие свойства каждого вида. Если нужно понять, к какому виду относится неизвестный объект из базы, проще всего найти его имя в этом списке.
Для поиска мест, где используется конкретный вид, применяйте поиск ссылок на объект метаданных: правый клик по виду документа → «Поиск ссылок в метаданных». Это покажет все модули, запросы и реквизиты, где упоминается данный вид — полезно при анализе чужой конфигурации.
Определение вида по представлению строки
Иногда вид нужно определить из строки представления, например «Реализация товаров и услуг 0000-000123 от 15.03.2026». Надёжного штатного способа распарсить представление обратно в вид нет — формат представления настраивается. Правильное решение — хранить и передавать ссылку, а не строку. Если строка пришла извне, ищите документ перебором по номеру и дате среди подходящих видов.
Типичные ошибки при определении вида документа
Самая частая ошибка — сравнение вида по синониму или представлению. Синонимы меняются от версии к версии конфигурации, локализуются и могут совпадать у разных объектов. Сравнивать нужно только по имени метаданных или через ТипЗнч().
Вторая типичная ошибка — обращение Документ.Метаданные().Имя к значению, которое не является ссылкой на документ. Если переменная содержит Неопределено, строку или объект другого типа, вызов приведёт к ошибке выполнения. Перед определением вида проверяйте, что значение заполнено и является ссылкой.
Проверка результата и ограничения
После определения вида проверьте результат в контрольных точках: имя должно присутствовать в ветке «Документы» конфигуратора, а проверка ТипЗнч() должна давать ожидаемый результат на нескольких заведомо известных документах. Если код работает на копии базы, убедитесь, что тестовый документ именно того вида, который вы ожидаете.
Учитывайте ограничения: в расширениях конфигурации новые виды документов добавлять нельзя, поэтому проверки через Тип() в расширении работают только для видов основной конфигурации. В внешних обработках имя вида может отсутствовать в конкретной базе — перед обращением к Документы.ИмяВида проверяйте наличие через Метаданные.Документы.Найти("ИмяВида").
Как проверить результат
Совпадает с именем в ветке «Документы» конфигуратора
Имя не найдено в метаданных — опечатка или другая конфигурация
Возвращает Истина для нужного вида и Ложь для других
Всегда Ложь — ссылка другого типа или не заполнена
Код проверяет наличие вида через Метаданные.Документы.Найти()
Ошибка «Объект не найден» в базе без этого вида
Часто задаваемые вопросы
Как узнать вид документа, если есть только его номер?
По номеру однозначно определить вид нельзя — нумерация у разных видов независима, и одинаковые номера встречаются у многих документов. Нужно дополнительно знать журнал, период или организацию и выполнять поиск по номеру и дате среди предполагаемых видов.
Чем отличается имя документа от синонима?
Имя — это идентификатор объекта метаданных латиницей без пробелов, используется в коде и запросах и не меняется при локализации. Синоним — человекочитаемое название для интерфейса, которое может меняться между версиями конфигурации. Для программной логики используйте только имя.
Как определить вид документа-основания в цепочке документов?
Получите значение реквизита, хранящего основание (обычно «ДокументОснование»), и примените к нему Метаданные().Имя или ТипЗнч(). Учтите, что реквизит может быть составного типа, поэтому вид основания заранее не известен и его нужно определять в момент выполнения.
Можно ли определить вид документа по ссылке без доступа к базе?
Нет. Уникальный идентификатор ссылки не содержит читаемого имени вида — вид определяется по таблице, к которой относится ссылка, и это можно выяснить только в контексте конкретной информационной базы через метаданные.
Что делать, если Метаданные().Имя вызывает ошибку?
Проверьте, что переменная содержит ссылку или объект, а не Неопределено, строку или число. Используйте ЗначениеЗаполнено() и проверку типа перед обращением. Также убедитесь, что код выполняется на сервере, если клиентский контекст не поддерживает нужные вызовы.
Как получить список всех видов документов конфигурации программно?
Переберите коллекцию Метаданные.Документы в цикле: для каждого элемента доступны Имя и Синоним. Это удобно для построения универсальных обработок, которые должны работать с любым видом документа без жёсткой привязки к конфигурации.
Что важно запомнить
Вид документа — это имя объекта метаданных. Программно его получают через Метаданные().Имя или проверяют через ТипЗнч(), в запросах — через ССЫЛКА, в пользовательском режиме — по заголовку формы и «Функциям для технического специалиста». Никогда не сравнивайте вид по синониму или представлению.