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

Во-первых, во встроенном языке 1С:Предприятия 8 для работы с одним прикладным объектом реализовано несколько типов. Например, задачи, которые в 1С:Предприятии 7.7 решал тип "Документ" решаются теперь несколькими типами. Они разделены по своему назначению. Тип "ДокументСсылка" используется для хранения ссылок на объект базы данных в реквизитах других объектов. Тип "ДокументОбъект" используется для записи и удаления отдельных документов. Тип "ДокументВыборка" используется для перебора документов, хранящихся в базе данных. Существуют и другие типы данных, предназначенные для работы с документом. При написании модулей используются те типы, которые необходимы для решения конкретных задач.

Во-вторых, в 1С:Предприятии 8 нет двух понятий – "Тип" и "Вид". Для каждого объекта метаданных имеется свой набор типов используемых во встроенном языке для работы с описываемым им прикладным объектом. То есть при использовании конфигурации не будет существовать такого типа как "ДокументСсылка", а будут существовать конкретные типы, например, "ДокументСсылка.Счет", "ДокументОбъект.Счет", "ДокументСсылка.Накладная", и т.д.

Кроме того, в 1С:Предприятии 8 для манипулирования типами используются не их строковые наименования, а специальный тип "Тип". Значение типа Тип может быть получено функцией Тип(), получающей в качестве параметра имя типа.

Чтобы проверить тип значения переменной нужно определить ее тип функцией ТипЗнч() и использовать функцию Тип() для получения типа по имени.

Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда

Для проверки типа поля в запросе 1С 8.3 можно воспользоваться функцией языка запросов ТИПЗНАЧЕНИЯ( ).

Функция ТИП( ) получает тип по его имени. Имена примитивных типов: Число, Строка, Булево, Дата. Имена ссылочных типов строятся по следующему принципу: Документ.РеализацияТоворовУслуг или Справочник.Номенклатура.

Для полей ссылочного типа существует еще один способ проверки, используя оператор ССЫЛКА.

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

Читайте также:  Программа уменьшение размера фото без потери качества

Примеры проверки типа в запросах:

Получить тип в полях выборки:

ВЫБРАТЬ ТИП(Строка), ТИП(Справочник.Контрагенты)

Получить совпадение типа в выборке

Выбрать ТИПЗНАЧЕНИЯ(Ссылка) = ТИП(Справочник.Контрагенты)

Отбор по типу значения:

ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ ТИПЗНАЧЕНИЯ(ОсновнойМенеджер) = ТИП(Справочник.ФизическиеЛица)

Использование конструкции ССЫЛКА:

ВЫБРАТЬ ИНН ИЗ Справочник.Контрагенты ГДЕ ОсновнойМенеджер ССЫЛКА Справочник.ФизическиеЛица

Последние две конструкции идентичны по результату исполнения, но последняя применима только к ссылочным типам, что не всегда так, но более компактна.
Допустимо использование данных конструкций и в качестве условия для соединения таблиц.

На тип значения можно проверять не только поля из выборки запроса, но и параметры:

ВЫБРАТЬ * из Справочник.Контрагенты ГДЕ ТИПЗНАЧЕНИЯ(&Параметр) = ТИП(Справочник.Контрагенты)

Параметром функции ТИПЗНАЧЕНИЯ могут выступать:

СТРОКА, ЧИСЛО, ДАТА, а также все ссылочные типы.

Чтобы проверить на несколько значений применяется условие ИЛИ или множество В()

ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ ФизЛицо ССЫЛКА Справочник.ФизическиеЛица ИЛИ Физлицо ССЫЛКА Справочник.Пользователи

ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ ТИПЗНАЧЕНИЯ(Физлицо) В (ТИП(Справочник.ФизическиеЛица),ТИП(Справочник.Пользователи))

При сравнении ссылочных типов пустые ссылки, также дают совпадение, то есть для проверки на заполненность они применимы только как вспомогательные функции

Выбрать * ИЗ Справочник.Пользователи ГДЕ ТИПЗНАЧЕНИЯ(Физлицо) <> ТИП(Неопределено) И ТИПЗНАЧЕНИЯ(Физлицо) <> ТИП(NULL) И НЕ Физлицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)

Мода имеет такое же отношение к оригинальности, как любая другая реклама к товару.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector