Как в запросе определить тип документа 1с
Перейти к содержимому

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

  • автор:

Проверка типа значения во встроенном языке или в запросах

Функция ТипЗнч(<Значение>) по значению возвращает тип.
Функция Тип(<Строка>) по описанию возвращает тип.

В запросах

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

В 1С:Предприятии все значения имеют определенный тип. Во встроенном языке есть специальные методы для приведения типа значения.

Комментарии (0)

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

1С 8.3 Тип в запросе — Программист 1С Минск. Автоматизация бизнеса.

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

//На тип значения можно проверять не только поля из выборки запроса, но и параметры:
|ВЫБРАТЬ * из Справочник.Номенклатура ГДЕ ТИПЗНАЧЕНИЯ(&Параметр) = ТИП(Справочник.Номенклатура)

//Параметром функции ТИПЗНАЧЕНИЯ могут выступать:
//СТРОКА, ЧИСЛО, ДАТА, а также все ссылочные типы.

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

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

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

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

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

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

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

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

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

Значения типа Тип в запросах 1С могут использоваться при наложении условий, в сравнениях, упорядочивании и группировках. Для работы с типами предусмотрено несколько механизмов, которые покрывают все потребности разработчика. Рассмотрим их.

Функция ТИПЗНАЧЕНИЯ

Функция ТИПЗНАЧЕНИЯ имеет единственный параметр, куда передается значение, для которого требуется определить тип. Функция возвращает значения типа Тип. Чаще всего функция используется совместно с литералом ТИП в условиях запроса.

Рассмотрим примеры использования. Вывод в результат запроса типа Регистратора:

Закупки.Регистратор КАК Регистратор ,

ТИПЗНАЧЕНИЯ( Закупки.Регистратор ) КАК ТипРегистратора

РегистрНакопления.Закупки КАК Закупки

Использование функции ТИПЗНАЧЕНИЯ в операции сравнения:

Закупки.Регистратор КАК Регистратор

РегистрНакопления.Закупки КАК Закупки

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

Литерал ТИП

В литерал ТИП передается имя примитивного типа или таблицы ссылочного типа. Результатом конструкции будет значение типа Тип.

Примеры имен типов:

ТИП(Строка)
ТИП(Число)
ТИП( Перечисление.СтавкиНДС )
ТИП( Справочник.Номенклатура )
ТИП( Документ.ПриобретениеТоваровУслуг )
ТИП( ПланСчетов.Хозрасчетный )
ТИП( ПланОбмена.Полный )

Использование в запросе:

Закупки.Регистратор КАК Регистратор ,

КОГДА ТИПЗНАЧЕНИЯ( Закупки.Регистратор ) = ТИП( Документ.ПриобретениеТоваровУслуг )

ТОГДА «Приобретение товаров»

КОНЕЦ КАК ТипИсточника

РегистрНакопления.Закупки КАК Закупки

Оператор ССЫЛКА

Оператор позволяет проверить, является ли значение выражения, указанного справа от него, ссылкой на таблицу, указанную слева. Результат оператора — значение типа Булево.

Закупки.Регистратор КАК Регистратор

РегистрНакопления.Закупки КАК Закупки

Закупки.Регистратор ССЫЛКА Документ.ПриобретениеТоваровУслуг

Для ссылочных таблиц оператор ССЫЛКА является эквивалентом сравнения

Остались вопросы?
Спросите в комментариях к статье.

1 комментарий

Скажите, пжст, для оптимальной производительности что лучше использовать:

ТИП, ТИПЗНАЧЕНИЯ и ССЫЛКА в запросах 1С 8 – примеры использования

В запросах довольно распространенная задача – определить, к какому типу относится то или иное значение. Например, нужно в запросе определить тип документа, и если это приходная накладная – взять сумму документа с плюсом, а если расходная – с минусом. В этой статье рассмотрены конструкции языка запросов, позволяющие решить данную задачу.

Содержание

Стоит начать с того, что три конструкции – ТИП, ТИПЗНАЧЕНИЯ и ССЫЛКА – относятся к разным частям языка запросов 1С.

  1. ТИП – это литерал, который позволяет получить в запросе значение нужного типа. В этом случае мы заранее знаем, какой тип хотим получить.
  2. ТИПЗНАЧЕНИЯ – это функция, которая принимает в качестве параметра значение, и возвращает тип этого значения. Используется для определения заранее неизвестного типа значения в запросе.
  3. ССЫЛКА – это логический оператор, такой же как “>”, “<“, и используется он при формировании условий.

Примеры использования

Основные способы применения конструкций ТИП и ТИПЗНАЧЕНИЯ в запросе – это сравнение типов в условиях, а также выбор типов в качестве полей в результате выполнения запроса. Оператор Ссылка используется в запросе для определения, является ли значение ссылкой на указанную таблицу, или нет. Например, является ли поле Покупатель ссылкой на справочник Контрагенты или на справочник ФизическиеЛица.
Рассмотрим несколько практических примеров.

Как в запросе проверить на соответствие нужному типу

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

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

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