Содержание · 7 разделов
- Какие типы данных встречаются в запросах 1С
- Функция ТИП() — как получить тип поля в запросе
- ТИПЗНАЧЕНИЯ() — точное сравнение с конкретным типом данных
- Настройка отчётов через СКД с использованием типов
- Распространённые ошибки при работе с типом в запросе
- Какие ещё функции помогают контролировать тип данных
- Когда стоит привлекать экспертов для настройки запросов
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С.
Материал носит справочный характер и не является налоговой или юридической консультацией; для применения к Вашей ситуации согласуйте действия с бухгалтером или юристом.









ОбсуждениеВопросы читателей и ответы эксперта · 3 веток