К статьям

Приведение типов в языке запросов

2 мин


Описание

При разработке часто возникают ситуации, когда нужное нам поле может принимать значения не только одного конкретного типа, например Справочник.Организации, а еще и Справочник.Контрагенты например. Такие поля называются полями составного типа. Так же часто возникают ситуации, когда нам необходимо обработать строку или число в запросе. Здесь функция ВЫРАЗИТЬ тоже поможет.

Стоит помнить, что функция ВЫРАЗИТЬ не может преобразовать из одного типа в другой, она работает только в рамках уже имеющегося описания типов для поля. К примеру у нас есть поле строкового типа длиной 500 символов. Мы не сможем преобразовать его в число, но сможем сделать из него строку длиной в 300 символов. Так же и с числом, строку из него мы не получим, но сможем изменить длину числа, и количество цифр после запятой.

Что касается составных типов то мы сможем только определить значение какого типа из набора мы хотим получить, это поможет нашему запросу работать быстрее, но приведения типов происходить не будет.

Синтаксис функции


ВЫРАЗИТЬ(<Выражение> КАК <Тип>), где <Выражение> это поле, которое мы хотим выразить. А <Тип> это тип, которым мы хотим выразить наше поле.

Также стоит отметить, что при указании несовместимого типа для выражения (отсутствующего в составном для выражения) система сообщит об ошибке.

Применение функции ВЫРАЗИТЬ разнообразно. 
Например, при обращении к вложенным реквизитам через точку для полей составного типа функция ВЫРАЗИТЬ()
позволяет выполнить запрос оптимальным образом, отсеивая те значения, для которых необходимый реквизит предусмотрен.

Примеры

1. Укорачивание строки до 300 символов 

ВЫБРАТЬ

    ВЫРАЗИТЬ(Номенклатура.Комментарий КАК СТРОКА(300)) КАК Комментарий

ИЗ

    Справочник.Номенклатура КАК Номенклатура 

 2. Оптимальное получение значения через точку, из поля составного типа.  

ВЫБРАТЬ

    ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Номер КАК НомерДокумента

ИЗ

    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах

Задачи на эту тему: