Функция выразить в запросе 1с

Функция выразить в запросе 1с

• 1С8 примеры запросов 1С8. » 1С8 пример запроса. Функция ВЫРАЗИТЬ().

Пример использования функции ВЫРАЗИТЬ( КАК ) в запросе 1с.

Функция пытается привести значение к указанному типу. Возвращает значение указанного типа . Если привести не удается, функция возвращает NULL.

Параметры функции:
Выражение — преобразуемое выражение;
УказаниеТипа (Строка) — указывает тип, к которому надо привести выражение. Может содержать имя таблицы. Например "СТРОКА(1000)", "ЧИСЛО(15,4)", Справочник.Номенклатура :

Еще пример: ВЫРАЗИТЬ(ВозвращенныеМатериалы.Номенклатура КАК Справочник.Номенклатура)

Так выглядит сам запрос и результат запроса:

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

  • Организуем вам индивидуальное экспресс обучение программам 1С.
  • Мы поможем Вам начать работать с программами 1С.
  • Мы поможем Вам настроить ваши отчеты в 1С.
  • Установим и настроим 1С под ваши задачи.
  • Поможем сделать ввод начальных остатков по складам и контрагентам
  • Перенесем данные из старых систем.
  • Подскажем как избежать ошибок.

Доработка и сопровождение 1С:

  • Доработаем существующие или создадим новые печатных формы и документы.
  • Разработаем внешние отчеты по Вашим требованиям.
  • Напишем внешние обработоки по загрузке документов из учетных (торговых) систем в бухгалтерию.
  • Разработаем приложения для выгрузки данных на сайты.

Ориентировочная стоимость работ программиста 1С : 1 500 р. за 1 час работы.

Звоните: 8 916 710 83 51 Ольга

© j008.ru 2014 Обратная связь: j008@j008.ru

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

При обращении к подчиненному полю «через точку» происходит неявное соединение с таблицей этого типа. Например, обращение в запросе

ВЫБРАТЬ
ЗаказыКлиентовОстатки.Номенклатура.Артикул ,
ЗаказыКлиентовОстатки.ЗаказаноОстаток
ИЗ
РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки

Приведет к неявному соединению с таблицей справочника Номенклатура, а реальный запрос, который будет выполняться к базе будет аналогичен этому:

ВЫБРАТЬ
СпрНоменклатура.Артикул ,
ЗаказыКлиентовОстатки.ЗаказаноОстаток
ИЗ
РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ПО ЗаказыКлиентовОстатки.Номенклатура = СпрНоменклатура.Ссылка

На первый взгляд все корректно и правильно, но как система поведет себя, когда разыменовывается поле составного типа? Система будет соединяться СО ВСЕМИ таблицами, входящими в составной тип! Т.е. запрос

ВЫБРАТЬ
ЦеныНоменклатурыПоставщиков.Регистратор.Номер ,
ЦеныНоменклатурыПоставщиков.Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков

будет преобразован во что-то вроде:

ВЫБРАТЬ
ВЫБОР
КОГДА ЦеныНоменклатурыПоставщиков.Регистратор ССЫЛКА Документ.ЗаказПоставщику
ТОГДА ДокЗаказПоставщику.Номер
КОГДА ЦеныНоменклатурыПоставщиков.Регистратор ССЫЛКА Документ.КорректировкаРегистров
ТОГДА ДокКорректировкаРегистров.Номер
КОГДА ЦеныНоменклатурыПоставщиков.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
ТОГДА ДокПоступлениеТоваровУслуг.Номер
КОГДА ЦеныНоменклатурыПоставщиков.Регистратор ССЫЛКА Документ.РегистрацияЦенНоменклатурыПоставщика
ТОГДА ДокРегистрацияЦенНоменклатурыПоставщика.Номер
КОНЕЦ КАК Номер ,
ЦеныНоменклатурыПоставщиков.Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ДокЗаказПоставщику
ПО ЦеныНоменклатурыПоставщиков.Регистратор = ДокЗаказПоставщику.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРегистров КАК ДокКорректировкаРегистров
ПО ЦеныНоменклатурыПоставщиков.Регистратор = ДокКорректировкаРегистров.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ДокПоступлениеТоваровУслуг
ПО ЦеныНоменклатурыПоставщиков.Регистратор = ДокПоступлениеТоваровУслуг.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РегистрацияЦенНоменклатурыПоставщика КАК ДокРегистрацияЦенНоменклатурыПоставщика
ПО ЦеныНоменклатурыПоставщиков.Регистратор = ДокРегистрацияЦенНоменклатурыПоставщика.Ссылка

И ко всей этой конструкции будут добавлены ограничения на уровне записей (RLS), если они используются. Все это может существенно замедлить выполнение запроса.

Читайте также:  Как найти сигнал wifi

Иногда при написании запроса известно какая ссылка будет находиться в поле составного типа. В этом случае правильно привести составной тип к одному необходимому и избежать соединения со всеми таблицами составного типа. Для приведения составного типа к какому-то одному используется оператор

Выразить ( Выражение > КАК Тип значения >)

Параметр можно привести к ссылочному типу или к одному из примитивных типов.

Если содержит в составном типе требуемый , то приведение типа считается осуществимым, и для каждого значения указанного типа результатом будет это самое значение. Для значений других типов результатом приведения типа будет значение NULL.

Если не содержит в составном типе требуемый , то выполнение данного запроса завершится ошибкой.

Пример использования оператора Выразить, когда известно какая ссылка будет находиться в поле составного типа:

ВЫБРАТЬ
ВЫРАЗИТЬ (ЦеныНоменклатурыПоставщиков.Регистратор КАК Документ.ЗаказПоставщику).Номер КАК Номер,
ЦеныНоменклатурыПоставщиков.Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ГДЕ
ЦеныНоменклатурыПоставщиков.Регистратор ССЫЛКА Документ.ЗаказПоставщику

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

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

Несовместимые типы «ВЫРАЗИТЬ» — такое сообщение появляется, когда программист 1С 8.2 или 8.3 в запросе пытается сравнить два различных типа.

Функция Выразить() позволяет привести значение поля запроса 1С к определенному типу. Это может понадобиться в двух случаях:

1. Получить нужную разрядность числа или нужное количество символов строкового значения. Количество символов полей неограниченного типа приходится ограничить из-за определенных особенностей.

Получите 267 видеоуроков по 1С бесплатно:

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

2. Преобразовать поле составного типа в поле с одним типом. Это может понадобиться в целях оптимизации запросов. Если в типизированное поле попадёт значение другого типа, то система вернёт NULL, поэтому всегда необходимо дополнительно устанавливать условие в секции «ГДЕ», ограничивая его оператором ССЫЛКА.

ВЫБРАТЬ

ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.Реализация)

ИЗ

ГДЕ Продажи.Регистратор ССЫЛКА Документ.Реализация

Как избежать ошибок

Ошибки типа «Несовместимые типы ВЫРАЗИТЬ …» могут возникать при неправильном использования синтаксиса.

Читайте также:  Как найти угловой коэффициент графику функции

К примеру, конструкция «ВЫРАЗИТЬ(«123″ КАК ЧИСЛО(5, 2)) КАК Сумма» считается ошибочной, так как в запросе нельзя штатными способами преобразовывать из одного типа в другой.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Ссылка на основную публикацию
Формула vlookup на русском
Функция ВПР в Excel позволяет данные из одной таблицы переставить в соответствующие ячейки второй. Ее английское наименование – VLOOKUP. Очень...
Установить цену номенклатуры в 1с розница
Дата публикации 30.01.2019 В программе "1С:Бухгалтерии 8" (ред. 3.0) можно установить цены номенклатуры (товаров, работ, услуг) для их автоматической подстановки...
Установить ярлык алиса на рабочий стол
Алиса – относительно новый голосовой помощник от компании Яндекс, который не только понимает русский язык, но и практически идеально на...
Формула в эксель вычитаем проценты
В различных видах деятельности необходимо умение считать проценты. Понимать, как они «получаются». Торговые надбавки, НДС, скидки, доходность вкладов, ценных бумаг...
Adblock detector