Округление результатов в запросах 1С: необходимый инструмент разработчика

Округление результатов в запросах 1С - тонкий нюанс разработки, который часто упускают из виду программисты. Однако правильное использование инструментов округления помогает решить многие практические задачи: от корректного отображения сумм в отчетах до повышения быстродействия запросов. В этой статье мы подробно разберем, как грамотно округлять числа в запросах 1С для повышения качества разработки.

Базовые способы округления в 1С

Для округления чисел в 1С предусмотрена встроенная функция Окр(). Это основной и наиболее удобный инструмент для округления результатов вычислений и значений реквизитов.

Программист отлаживает округление в запросах 1С

Функция Окр()

Функция Окр() принимает один обязательный параметр - число для округления. По умолчанию округление происходит до целого числа. Например:

Окр(4.6) = 5 Окр(-2.3) = -2

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

Окр(3.1415, 0.1) = 3.1

Округление до сотых:

Окр(3.1415, 0.01) = 3.14

Также во втором параметре можно указывать правило округления. Например, для округления в меньшую сторону используется значение -1:

Окр(4.6, -1) = 4

Для округления в большую сторону соответственно 1:

Окр(4.2, 1) = 5

Примеры использования Окр()

Рассмотрим несколько примеров применения функции Окр() в различных ситуациях.

Округление суммы документа до целых рублей:

СуммаДок = Окр(Документ.Сумма, 1)

Округление средней стоимости товара с точностью до копеек:

СрСтоимость = Окр(Товары.Цена / Товары.Количество, 0.01)

Округление процентной ставки до двух знаков после запятой:

Ставка = Окр(ИсходнаяСтавка, 0.01)

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

Руки пишут код с функциями округления в 1С

Решение распространенных задач округления

Рассмотрим несколько распространенных задач, возникающих при разработке в системе 1С, и способы их решения с использованием округления.

Округление суммы документа до целых рублей

При работе с документами, такими как счета, накладные, акты, часто возникает необходимость округлить их суммы до целых значений в рублях. Для этого можно воспользоваться функцией Окр():

Процедура ОкруглитьСуммуДокумента() СуммаДок = Документ.Сумма; ОкругленнаяСумма = Окр(СуммаДок, 1); Документ.Сумма = ОкругленнаяСумма; КонецПроцедуры 

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

Округление количества товаров до целых единиц

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

Процедура СписатьТовар() КоличИсходное = Товар.Остаток; КоличСписанное = Документ.Количество; ОкругленноеКолич = Окр(КоличИсходное - КоличСписанное, 1); Товар.Остаток = ОкругленноеКолич; КонецПроцедуры 

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

Округление среднего значения показателя за период

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

СрСебестоимость = Окр(Сумма(Документы.Себестоимость) / Количество(Документы), 2); 

Здесь мы делим сумму себестоимости всех документов за месяц на их количество с округлением до сотых.

Округление процентной ставки до десятых долей

При работе с процентными ставками также часто необходимо округление до определенной точности. Например:

Ставка = Окр(ИсходнаяСтавка, 0.1); 

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

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

"1с округление в запросе"

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

Функция Выразить()

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

Синтаксис:

ВЫРАЗИТЬ(Выражение КАК ТипДанных)

Например, округление до целого:

ВЫРАЗИТЬ(Сумма / Количество КАК ЧИСЛО(10))

Здесь мы делим сумму на количество и округляем результат до целого числа с 10 знаками в целой части.

Аналогично можно указать любую другую точность округления, например:

ВЫРАЗИТЬ(Сумма / Количество КАК ЧИСЛО(10, 2))

В этом случае округление будет до сотых.

Особенности округления NULL значений

При округлении в запросах нужно учитывать возможность получения NULL значений. Например:

ВЫРАЗИТЬ(НЕОПРЕДЕЛЕНО КАК ЧИСЛО(10))

Вернет NULL вместо округленного числа. Чтобы этого избежать, можно использовать функцию обхода NULL:

ВЫРАЗИТЬ(ЕСТЬНУЛЛ(НЕОПРЕДЕЛЕНО, 0) КАК ЧИСЛО(10))

Она заменит NULL на ноль и позволит корректно округлить результат.

Рекомендации по выбору точности

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

  • Указывать минимально необходимую точность округления
  • Учитывать требования к разрядности данных в отчетах
  • Тестировать запросы на разных типах СУБД
  • Анализировать планы запросов на предмет производительности

Грамотное применение функции позволяет оптимизировать работу запросов.

"1с 8 округление в запросе"

Начиная с платформы 1С:Предприятия 8.3.15 появилась возможность округления результатов прямо в запросах. Это упростило решение многих задач.

Новые функции в версии 8.3.15

Были добавлены следующие функции для округления:

  • Окр() - округление с параметрами
  • Ceil() - округление в большую сторону до целого
  • Floor() - округление в меньшую сторону до целого
  • Round() - округление до целого по правилам

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

Примеры использования

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

Выбрать Окр(Сумма(Документы.Сумма), 1) Из Документы

А для округления количества товаров до целого:

Выбрать Floor(Товары.Остаток) Из Товары

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

Выводы

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

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.