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

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

Как в запросе 1С вывести тип документа

Как вывести тип документа в запросе 1С: ТИПЗНАЧЕНИЯ, ВЫРАЗИТЬ, ВЫБОР КОГДА, составные типы и регистры. Примеры кода, типичные ошибки и проверка результата.

Задача вывести тип документа в запросе возникает в двух типовых ситуациях: когда поле имеет составной тип (например, «ДокументРасчетов» в регистре взаиморасчетов может хранить ссылки на разные документы) и когда нужно в одном отчёте объединить данные разных видов документов с подписью вида каждой строки. В языке запросов 1С нет функции, которая напрямую возвращает строку «РеализацияТоваровУслуг», но есть рабочие приёмы: представление ссылки, оператор ТИПЗНАЧЕНИЯ, конструкция ВЫБОР и функция ТИП.

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

Как устроена задача: что именно нужно вывести

Прежде чем писать запрос, определите, какой результат требуется. «Тип документа» в 1С может означать три разные вещи. Первая — значение системного типа «Тип» (например, «ДокументСсылка.РеализацияТоваровУслуг»), которое можно сравнивать, по нему группировать и передавать в код. Вторая — строковое представление вида документа, заданное разработчиком, для вывода в отчёт пользователю. Третья — полное представление ссылки, включающее номер и дату документа.

От этого зависит инструмент. Функция ТИПЗНАЧЕНИЯ возвращает именно тип как значение — она подходит для логики, но в отчёте пользователь увидит техническое имя вида «Документ ссылка: Реализация товаров и услуг», что не всегда удобно. Конструкция ВЫБОР КОГДА ... ССЫЛКА позволяет вывести любую свою строку, но требует перечислить все виды документов вручную. ПРЕДСТАВЛЕНИЕ выдаёт готовый текст ссылки целиком, а не только вид документа.

Маршрут решения

Как выбрать способ

Нужно группировать, отбирать или соединять данные по виду документаИспользуйте ТИПЗНАЧЕНИЯ(Поле) — оно возвращает сравнимое значение типа
Нужно красивое название вида документа в отчётеИспользуйте ВЫБОР КОГДА Поле ССЫЛКА Документ.Вид ТОГДА "Название" со всеми нужными видами
Достаточно показать пользователю, что за документ в строкеИспользуйте ПРЕДСТАВЛЕНИЕ(Поле) — вернёт вид, номер и дату
Тип нужен для дальнейшей обработки в коде 1СВыведите ссылку и определите тип через ТипЗнч() уже в модуле

Вывод типа через ТИПЗНАЧЕНИЯ

Функция ТИПЗНАЧЕНИЯ — самый универсальный способ. Она принимает поле ссылки и возвращает значение типа «Тип». Работает с любыми ссылочными полями, включая составные, и не требует перечислять виды документов вручную:

ВЫБРАТЬ

Взаиморасчеты.ДокументРасчетов КАК ДокументРасчетов,

ТИПЗНАЧЕНИЯ(Взаиморасчеты.ДокументРасчетов) КАК ТипДокумента,

Взаиморасчеты.СуммаОстаток КАК Сумма

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК Взаиморасчеты

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

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

Вывод названия вида документа через ВЫБОР и ССЫЛКА

Когда в отчёте нужна понятная строка вроде «Реализация» или «Поступление», а не техническое «Документ ссылка: ...», используется конструкция ВЫБОР с оператором проверки типа ССЫЛКА. Каждый вид документа перечисляется явно:

ВЫБРАТЬ

Взаиморасчеты.ДокументРасчетов КАК ДокументРасчетов,

ВЫБОР

КОГДА Взаиморасчеты.ДокументРасчетов ССЫЛКА Документ.РеализацияТоваровУслуг

ТОГДА "Реализация"

КОГДА Взаиморасчеты.ДокументРасчетов ССЫЛКА Документ.ПоступлениеТоваровУслуг

ТОГДА "Поступление"

КОГДА Взаиморасчеты.ДокументРасчетов ССЫЛКА Документ.ПриходныйКассовыйОрдер

ТОГДА "Приходный ордер"

ИНАЧЕ "Прочее"

КОНЕЦ КАК ВидДокумента

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК Взаиморасчеты

Ветка ИНАЧЕ обязательна на практике: составное поле почти всегда допускает больше видов документов, чем вы перечислили. Без ИНАЧЕ непредусмотренные виды получат NULL, и при группировке или сортировке в СКД это приведёт к отдельным «пустым» строкам, которые пользователи воспримут как ошибку отчёта.

Недостаток способа — поддержка. При добавлении в конфигурацию нового вида документа, участвующего в движениях, запрос придётся дополнять вручную. Поэтому конструкцию ВЫБОР разумно применять, когда набор видов стабилен и невелик.

ПРЕДСТАВЛЕНИЕ и представление ссылки

Функция ПРЕДСТАВЛЕНИЕ возвращает пользовательское представление значения. Для ссылки на документ это строка вида «Реализация товаров и услуг 0000-000123 от 15.03.2026 12:30:00». Если задача — просто показать пользователю, какой документ стоит в строке отчёта, этого достаточно, и запрос остаётся максимально простым:

ВЫБРАТЬ

ПРЕДСТАВЛЕНИЕ(Взаиморасчеты.ДокументРасчетов) КАК ДокументПредставление

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК Взаиморасчеты

Учитывайте два момента. Во-первых, представление — это строка: по ней нельзя сравнивать типы и строить соединения, а сортировка будет лексикографической, а не по дате документа. Во-вторых, в СКД представление ссылки часто выводится автоматически при выводе самого поля-ссылки, поэтому отдельное ПРЕДСТАВЛЕНИЕ нужно в основном в консоли запросов и при программной обработке результата.

Если в отчёте на СКД нужна и ссылка для расшифровки, и текстовый вид документа — выведите в запросе оба поля: саму ссылку и вычисленную строку вида. Ссылку используйте в полях расшифровки, строку — в отображаемых колонках.
ПЗ
Практическое замечание

Отбор и группировка по типу документа

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

ВЫБРАТЬ

Взаиморасчеты.ДокументРасчетов КАК ДокументРасчетов,

Взаиморасчеты.СуммаОстаток КАК Сумма

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК Взаиморасчеты

ГДЕ

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

Для группировки по видам документов в сводном отчёте группируйте по ТИПЗНАЧЕНИЯ(Поле) — тогда каждый вид документа образует свою группу независимо от реквизитов. В СКД такую группировку можно добавить и в настройках без изменения текста запроса, если поле типа уже выведено в выборку.

Отдельный сценарий — объединение таблиц разных документов через ОБЪЕДИНИТЬ ВСЕ. Здесь тип каждой строки известен заранее, поэтому вид документа задают константной строкой в каждом подзапросе объединения. Это самый быстрый и предсказуемый вариант, когда запрос собирает данные из нескольких конкретных таблиц.

Сравнение способов

ТИПЗНАЧЕНИЯ(Поле)

Универсально, подходит для группировки и отборов; в отчёте выглядит технически

ВЫБОР КОГДА ... ССЫЛКА

Даёт произвольные понятные названия; требует перечислять виды и обновлять запрос при расширении конфигурации

ПРЕДСТАВЛЕНИЕ(Поле)

Готовый текст для пользователя без усилий; строка непригодна для сравнений и соединений

Константа в ОБЪЕДИНИТЬ ВСЕ

Самый быстрый вариант при объединении конкретных таблиц; не работает для составного поля одного регистра

Определение типа вне запроса: в коде и в СКД

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

В схеме компоновки данных есть дополнительная возможность — вычисляемые поля и ресурсы, где выражение на языке выражений СКД также может проверять тип. Однако перенос логики в код имеет цену: данные нельзя сгруппировать на уровне СУБД, поэтому для больших выборок вычисление типа в запросе обычно производительнее.

При работе с динамическими списками (например, журнал документов произвольного состава) тип документа доступен в стандартном поле «Тип» таблицы журнала — его можно вывести в список и использовать в отборах без дополнительных вычислений.

Типичные ошибки и проверка результата

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

Вторая группа ошибок связана с составными типами и соединениями. После левого соединения часть строк содержит NULL в поле документа, и вычисленная колонка типа тоже получает неопределённое значение. Если по этой колонке строится группировка, появляется отдельная строка с пустым типом — её нужно либо осмысленно подписать через ВЫБОР, либо исключить отбором.

Третья ошибка — вывод представления ссылки вместо вида документа и последующая попытка группировать по нему. Представление включает номер и дату, поэтому каждая строка уникальна и группировка не срабатывает. Для группировки всегда используйте тип или заданную строку-константу вида.

Типичные ошибки
01
Сравнение ТИПЗНАЧЕНИЯ со строкой — условие никогда не выполняется, отбор молча возвращает пустоту
02
Пропуск ветки ИНАЧЕ в ВЫБОР — неучтённые виды документов получают NULL и «теряются» в отчёте
03
Группировка по ПРЕДСТАВЛЕНИЮ — из-за номера и даты каждая строка образует свою группу
04
Игнорирование NULL после левого соединения — в отчёте появляются строки с пустым типом
05
Перечисление не всех видов составного поля — часть документов попадает в «Прочее» и искажает аналитику

Проверка корректности результата

Перед передачей запроса в отчёт проверьте его в консоли запросов на реальной базе. Убедитесь, что колонка типа заполнена во всех строках, где ссылка на документ не пуста, и что количество строк с неопределённым типом соответствует количеству строк с NULL в ссылке. Расхождение означает ошибку в логике ВЫБОР.

Дополнительная проверка — сверка итогов: сгруппируйте результат по вычисленной колонке вида документа и сравните суммы с контрольным запросом, где отбор задан через ССЫЛКА по каждому виду. Итоги должны совпасть. Если отчёт строится на СКД, проверьте также, что расшифровка по ссылке работает, а сортировка идёт по осмысленному полю, а не по строке представления.

Контрольные точки

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

Колонка типа в строках с заполненной ссылкой
Норма

Тип определён во всех строках

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

Есть пустые значения при заполненной ссылке — не хватает ветки в ВЫБОР

Итоги по видам документов
Норма

Совпадают с контрольным запросом с отбором ССЫЛКА

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

Расхождения — часть документов попала в ИНАЧЕ или NULL

Группировка в отчёте
Норма

Одна группа на каждый вид документа

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

Группа на каждую строку — группировка построена по представлению

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

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

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

Чем отличается ССЫЛКА от ТИПЗНАЧЕНИЯ при проверке типа?

Оператор ССЫЛКА проверяет, принадлежит ли значение конкретному виду документа, и возвращает булево — его используют в условиях ГДЕ и ВЫБОР. ТИПЗНАЧЕНИЯ возвращает сам тип как значение, которое можно выводить, сравнивать с другим типом и использовать в группировках.

Почему отбор ТИПЗНАЧЕНИЯ(Поле) = ТИП(Документ.РеализацияТоваровУслуг) не работает?

Функции ТИП() в языке запросов нет. Для отбора по виду документа используйте оператор ССЫЛКА: Поле ССЫЛКА Документ.РеализацияТоваровУслуг. Это корректный и наиболее производительный способ.

Как вывести тип документа в динамическом списке журнала?

Если используется стандартный журнал документов, у его основной таблицы есть поле «Тип» — добавьте его в запрос динамического списка или в настройки списка. Для произвольного запроса динамического списка применяйте ТИПЗНАЧЕНИЯ или ВЫБОР, как в обычном запросе.

Влияет ли вычисление типа на производительность запроса?

ТИПЗНАЧЕНИЯ и ССЫЛКА — лёгкие операции, их влияние обычно незаметно. Замедление возможно при выводе ПРЕДСТАВЛЕНИЯ для больших выборок, так как представление строится для каждой строки. Если представление нужно не всегда, выводите его только в финальной выборке после группировки.

Итог

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

Для логики, отборов и группировок используйте ТИПЗНАЧЕНИЯ и оператор ССЫЛКА, для понятного названия вида в отчёте — ВЫБОР КОГДА с обязательной веткой ИНАЧЕ, для показа документа пользователю — ПРЕДСТАВЛЕНИЕ. Не сравнивайте тип со строкой и не группируйте по представлению. Проверяйте результат в консоли запросов сверкой итогов по видам документов.