Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

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

Очень часто в запросах 1С 8.2 или 8.3 необходимо округлить значение «на лету», непосредственно в запросе. Сделать это очень просто. Для этого используется конструкция «Выразить()». Округление проходит по арифметическим правилам (в большую или меньшую сторону, в зависимости от последнего символа).

пример округления

Синтаксис оператора:

ВЫРАЗИТЬ(<Поле> КАК Число(<количество символов до перед запятой> , <количество символов после запятой))

Обычно используется:

  • для денежных средств (15, 2);
  • для количества товара, в том числе весового — (15,3);
  • для курсов валют — (10, 4).

Например, округление в запросе 1С до сотых:

ВЫРАЗИТЬ( 10/3 КАК (Число(10,2)) КАК РезультатДеления // система возвратит значение 3.3

Для округления до целых необходимо указать вторым параметром ноль:

ВЫРАЗИТЬ( 10/3 КАК (Число(10,0)) КАК РезультатДеления // система возвратит значение 3

Другие статьи по языку запросов 1С

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

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

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 9 на “Округление в запросе 1С 8.2 и 8.3
  1. ВЫРАЗИТЬ( 10/3 КАК (Число(10,2)) КАК РезультатДеления // система разве возвратит значение 3.3?
    А не 3.33?

    Ответить

  2. Спасибо помогло

    Ответить

  3. А если нужно целую часть «Обрезать»?

    Ответить

    • Число = Число — Окр(Число);

      Ответить

  4. Если в запросе:
    10/3 — ВЫРАЗИТЬ( 10/3 КАК (Число(10,0))

    Ответить

  5. ВЫРАЗИТЬ( КАК Число( , <количество символов после запятой))

    ДО или ПЕРЕД?

    Ответить

  6. ВЫРАЗИТЬ(Поле КАК Число(количество символов до перед запятой, количество символов после запятой))

    В знаках «больше/меньше» текст пропал.

    Ответить

  7. Запрос 1С округляет по математическим правилам. Поэтому, представленный перевод из даты в строку не всегда отрабатывает корректно. Пример: 29.08.1995
    Добавил немного, чтобы округления возвращали необходимые значения.
    ПОДСТРОКА(«0123456789», ДЕНЬ(&Дата) / 10 + 0.5, 1),
    ПОДСТРОКА(«0123456789», СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(&Дата))) / 6 + 0.5, 1),
    «/»,
    ПОДСТРОКА(«0123456789», МЕСЯЦ(&Дата) / 10 + 0.5, 1),
    ПОДСТРОКА(«0123456789», СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(&Дата))) / 6 + 0.5, 1),
    «/»,
    ПОДСТРОКА(«0123456789», ГОД(&Дата) / 1000 + 0.5, 1),
    ПОДСТРОКА(«0123456789», СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.06 — 0.5)) / 6 + 0.5, 1),
    ПОДСТРОКА(«0123456789», СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 0.6 — 0.5)) / 6 + 0.5, 1),
    ПОДСТРОКА(«0123456789», СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(&Дата) * 6 — 0.5)) / 6 + 0.5, 1)

    Ответить

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

Ваш e-mail не будет опубликован.