Выразить в запросе

Выразить в запросе 1С 8.5

Функция ВЫРАЗИТЬ() в языке запросов 1С приводит значения к нужному типу данных. Оптимизирует работу с составными типами и избегая ненужных соединений.

Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип>)
Если тип не совпадает, возвращает NULL
Ниже рассмотрим 3 основных сценария использования данной функции


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

ВЫБРАТЬ 
      НД.ДокументОснование.Дата КАК Дата
ИЗ
      Документ.НашДокумент КАК НД

Если мы точно знаем, что хотим получить Дату Приходной накладной, которая входит в составной тип реквизита ДокументОснование, то мы получим такой результат:

ВЫБРАТЬ 
   ВЫРАЗИТЬ(НД.ДокументОснование КАК Документ.Накладная).Дата КАК Дата
ИЗ
      Документ.НашДокумент КАК НашДокумент

В этом случае мы убираем лишние неявные соединения в запросе. Получаем Дату Документа основания с типом Документ.Накладная.

Формат использования:
ВЫРАЗИТЬ (<РевизитСсылка> КАК Документ.<ИмяДокумента>)
ВЫРАЗИТЬ (<РевизитСсылка> КАК Справочник.<ИмяДокумента>)


Еще один вариант использования функции ВЫРАЗИТЬ() — изменение длины строки. Для чего это может понадобиться? Один из примеров — для сравнения строк неограниченной длины, ведь запросы в 1С запрещают сравнивать строки неограниченной длины. Допустим, в документе есть реквизит «Комментарий» с типом данных Строка неограниченной длины. Если вы попытаетесь выполнить следующий запрос, то получите сообщение об ошибке:

ВЫБРАТЬ 
   НД.Ссылка КАК Ссылка
ИЗ
   Документ.НашДокумент КАК НД
ГДЕ
   НД.Комментарий = &Комментарий

Поэтому, чтобы это обойти мы можем взять какое то количество первых символов из реквизита Комментарий, преобразовав Строку из неограниченной в строку с определенной длиной. Возьмем первые 150 символов:

ВЫБРАТЬ 
   НД.Ссылка КАК Ссылка
ИЗ
   Документ.НашДокумент КАК НД
ГДЕ
   ВЫРАЗИТЬ(НД.Комментарий КАК СТРОКА(150)) = &Комментарий

Формат использования:
ВЫРАЗИТЬ(<СтроковыйРеквизит> КАК СТРОКА(<ДлинаСтроки>))


Функция ВЫРАЗИТЬ() может быть также использована для округления чисел. Допустим, в справочнике есть реквизит с типом число с точностью после запятой 5 цифр (123,89364). А мы хотим получить в запросе число с точностью после запятой всего 2 цифры (123,89). Для этого можно использовать указанную функцию следующим образом:

ВЫБРАТЬ 
   ВЫРАЗИТЬ(НС.ВесДрагметалла КАК ЧИСЛО(15, 2)) КАК ВесДрагметалла 
ИЗ
   Справочник.НашДокумент КАК НД

Формат использования:
ВЫРАЗИТЬ (<Число> как ЧИСЛО(<ДлинаЧисла>, <Точность>))


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

Оставьте комментарий

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

Отправьте форму и мы вам перезвоним

Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу
Сайт itviar.ru использует cookie для персонализации и хранения настроек.
Отправляя форму вы соглашаетесь с политикой конфиденциальности и даете согласие на обработку персональных данных компании ИП Рыжиченко Антону Ивановичу