Содержание · 7 разделов

1С тип значения в запросе — это встроенный механизм языка запросов платформы «1С:Предприятие 8», позволяющий определять тип данных поля, реквизита или выражения на лету. Две ключевые функции — ТИП() и ТИПЗНАЧЕНИЯ() — решают задачи фильтрации по типу, сравнения составных типов и настройки отчётов в системе компоновки данных (СКД). Главбухи и ИТ-директора используют их, чтобы выводить в отчётах только нужную категорию документов, исключать пустые ссылки и правильно обрабатывать реквизиты с несколькими возможными типами. В статье разберём синтаксис, отличия функций и типовые ошибки — с акцентом на реальные сценарии учёта и отчётности.

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

Какие типы данных встречаются в запросах 1С

Язык запросов 1С оперирует несколькими категориями типов. Примитивные типы — Число, Строка, Дата, Булево — хранят простые значения. Ссылочные типы (СправочникСсылка, ДокументСсылка, ПеречислениеСсылка) адресуют объекты конфигурации. Составной тип означает, что поле может содержать значения разных типов одновременно — например, реквизит «Основание» в документе может ссылаться на разные виды документов. Именно для работы с составными и ссылочными типами чаще всего требуется 1с тип значения в запросе.

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

Функция ТИП() — как получить тип поля в запросе

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

``bsl ВЫБРАТЬ Справочник.Номенклатура.Ссылка КАК Товар, ТИП(Справочник.Номенклатура.ВидНоменклатуры) КАК ТипВид ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ГДЕ ТИП(Справочник.Номенклатура.ВидНоменклатуры) = ТИП(Перечисление.ВидыНоменклатуры) ``

Этот запрос отберёт все элементы номенклатуры, у которых реквизит «ВидНоменклатуры» заполнен ссылкой на перечисление «ВидыНоменклатуры». Обратите внимание: сравнение через ТИП(поле) = ТИП(тип) допустимо только для примитивных типов и для конкретных объектов метаданных — нельзя написать ТИП(поле) = ТИП(СправочникСсылка). Нужна полная квалификация: ТИП(Справочник.Контрагенты). Функция 1с тип в запросе часто применяется в условиях ГДЕ и ВЫБОР для ветвления логики вывода.

Например, можно вывести текстовое описание типа реквизита:

``bsl ВЫБРАТЬ Номенклатура.Наименование, ВЫБОР КОГДА ТИП(Номенклатура.Артикул) = ТИП(Строка) ТОГДА "Строка" КОГДА ТИП(Номенклатура.Артикул) = ТИП(Число) ТОГДА "Число" ИНАЧЕ "Другой" КОНЕЦ КАК ТипАртикула ИЗ Справочник.Номенклатура КАК Номенклатура ``

Важно: ТИП() не работает с Null. Если поле не заполнено, функция вернёт тип из метаданных, а не «неопределено». Для проверки на Null используйте ЕСТЬNULL(поле) отдельно.

Внимание

Не полагайтесь на ТИП() для проверки заполненности

Если поле может оставаться пустым, отдельно используйте условие ЕСТЬNULL() или проверку на NULL — иначе отчёт может пропустить записи с пустыми значениями, не показав ошибки.

ТИПЗНАЧЕНИЯ() — точное сравнение с конкретным типом данных

Функция ТИПЗНАЧЕНИЯ() принимает строковой литерал — полное имя типа в кавычках — и возвращает описание типа для сравнения. Это основной инструмент при работе с составными типами и ссылочными полями. Синтаксис:

``bsl ТИПЗНАЧЕНИЯ("ИмяТипа") ``

Например, чтобы отобрать документы, где контрагент — из справочника «Контрагенты», пишут:

``bsl ВЫБРАТЬ Документ.РеализацияТоваров.Ссылка, Документ.РеализацияТоваров.Контрагент ИЗ Документ.РеализацияТоваров ГДЕ ТИП(Документ.РеализацияТоваров.Контрагент) = ТИПЗНАЧЕНИЯ("Справочник.Контрагенты") ``

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

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

``bsl ВЫБРАТЬ Документ.СчетНаОплату.Основание КАК Основание, ВЫБОР КОГДА ТИП(Документ.СчетНаОплату.Основание) = ТИПЗНАЧЕНИЯ("Документ.ЗаказПокупателя") ТОГДА "Заказ" ИНАЧЕ "Другое" КОНЕЦ КАК ТекстОснования ИЗ Документ.СчетНаОплату ``

Настройка отчётов через СКД с использованием типов

Система компоновки данных (СКД) — основной инструмент построения отчётов в 1С. При создании вычисляемых полей или параметров часто требуется указать тип значения, особенно когда поле формируется из нескольких источников с разными метаданными. 1с типзначения в запросе применяется в выражениях ограничений и в настройках доступных значений параметра.

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

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

Если требуется получить тип значения в запросе 1с для компоновки данных, разработчики часто используют конструкцию:

``bsl ВЫБРАТЬ ТИП(Документ.Реализация.Ответственный) КАК ТипОтв ``

Это помогает в условном оформлении — например, подсветить ячейку зелёным, если ответственный — сотрудник определённого подразделения. Специалисты компании «Интеграция» при доработке отчётов регулярно применяют такие приёмы, чтобы бухгалтер видел именно ту аналитику, которая нужна, без лишних данных.

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

Практика

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

Распространённые ошибки при работе с типом в запросе

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

  • Сравнение с несуществующим типом. Указали ТИПЗНАЧЕНИЯ("Справочник.Партнёры"), а в конфигурации такого справочника нет — запрос упадёт с ошибкой.
  • Игнорирование Null. Полагают, что ТИП(поле) = ТИП(Неопределено) сработает — на деле ТИП() не различает заполненное и пустое значение. Для отсева пустых полей нужен ГДЕ поле ЕСТЬ НЕ NULL.
  • Путаница между ТИП() и ТИПЗНАЧЕНИЯ(). Первая сравнивает с метаданными, вторая — строка. Попытка написать ТИП(поле) = ТИП("Справочник.Номенклатура") некорректна.
  • Неправильное указание составного поля. Если реквизит может ссылаться на несколько справочников, условие ТИП(поле) = ТИП(Справочник.Контрагенты) не ошибка, но оно отфильтрует только значения этого справочника. Если ожидали «строго такой тип», работает верно, но если нужна выборка всех возможных ссылок — условие избыточно.
  • Неактуальный релиз платформы. В старых версиях 1С:Предприятия возможности функций типизации ограничены. Рекомендуется использовать актуальные редакторы: для типовых конфигураций важна версия платформы не ниже 8.3.10.

Чтобы избежать ошибок, тестируйте запросы на копии базы данных и сверяйте результат с ожидаемым количеством записей. При возникновении сложностей имеет смысл обратиться к специалистам по сопровождению 1С.

Какие ещё функции помогают контролировать тип данных

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

  • ЕСТЬNULL(поле, значение) — заменяет Null на указанную величину, чтобы избежать сбоев в вычислениях.
  • ВЫРАЗИТЬ(поле КАК тип) — явное приведение к типу, когда система не может вывести его автоматически; например, ВЫРАЗИТЬ(Поле КАК Строка(100)).
  • ЗНАЧЕНИЕ(Перечисление.Статусы.Активен) — получение конкретного значения перечисления без типизации.
  • ПРЕДСТАВЛЕНИЕ(Ссылка) — возвращает строковое представление, часто снимает необходимость определять тип.

Комбинация этих средств совместно с 1с тип значение позволяет строить мощные отчёты. Например, чтобы вывести все документы, где в реквизите «Автор» указан пользователь из справочника «Пользователи», а не системный объект, пишут:

``bsl ВЫБРАТЬ Документ.Заказ.Автор ИЗ Документ.Заказ ГДЕ ТИП(Документ.Заказ.Автор) = ТИПЗНАЧЕНИЯ("Справочник.Пользователи") ``

Когда стоит привлекать экспертов для настройки запросов

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

Компания «Интеграция» сопровождает более 1000 клиентов и за 7 лет реализовала свыше 500 проектов по доработке и внедрению 1С. Наши консультанты помогут разобраться с типами в запросе, настроить отчёты в СКД под вашу конфигурацию и обучить сотрудников. Если нужна разовая помощь — работает программист 1С на час; для постоянного обслуживания — тарифы на сопровождение 1С.

Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.