Округление числа в запросе 1С

Фунция ВЫРАЗИТЬ() для округления числа в запросе

В запросах 1С стандартная функция Окр() недоступна, поэтому для округления чисел используют:

ВЫРАЗИТЬ(<ОкругляемоеЧисло> КАК ЧИСЛО(<ЦелаяЧасть>, <ДробнаяЧасть>))
  • <ОкругляемоеЧисло> — число или реквизит числового типа
  • <ЦелаяЧасть> — целое положительное число, общая «длина» числа вместе с дробной частью
  • <ДробнаяЧасть> — целое положительное число, количество знаков после запятой

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

Функция ВЫРАЗИТЬ() приводит число к указанному формату с математическим округлением.

  • До целогоВЫРАЗИТЬ(ОкругляемоеЧисло КАК ЧИСЛО(15, 0)) — 123.4 → 123, 123.5 → 124.
  • До двух знаковВЫРАЗИТЬ(ОкругляемоеЧисло КАК ЧИСЛО(15, 2)) — 123.456 → 123.46.
  • До сотенВЫРАЗИТЬ(ОкругляемоеЧисло / 100 КАК ЧИСЛО(15, 0)) * 100 — 1234.56 → 1200

Работа функции ВЫРАЗИТЬ() со значением NULL

! Важно знать, что ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15, 2)) возвратит результат NULL. Поэтому если реквизит может иметь значение NULL, то лучше использовать конструкцию проверки на NULL:

ЕСТЬNULL(ВЫРАЗИТЬ(<ОкругляемоеЧисло> КАК ЧИСЛО(<ЦелаяЧасть>, <ДробнаяЧасть>)), 0)

В этом случае ЕСТЬNULL(ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15, 2)), 0) вернет значение 0

Пример запроса

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

ВЫБРАТЬ 
   Номенклатура.Ссылка КАК НоменклатураСсылка,
   Номенклатура.Драгметалл КАК Драгметалл, 
   ЕСТЬNULL(ВЫРАЗИТЬ(ПДМ.Вес КАК ЧИСЛО(15, 2)), 0) КАК ВесДоСотых,
   ЕСТЬNULL(ВЫРАЗИТЬ(ПДМ.Вес КАК ЧИСЛО(15, 0)), 0) КАК ВесДоЦелых,
   ВЫРАЗИТЬ(ЕСТЬNULL(ПДМ.Вес, 0) / 100 КАК ЧИСЛО(15, 0)) * 100 КАК ПримерныйВес
ИЗ 
   Справочник.Номенклатура КАК Номенклатура
      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Драгметаллы.ПараметрыДрагметаллов КАК ПДМ
         ПО Номенклатура.Драгметалл = ПДМ.Ссылка
 

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

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

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

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

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