Содержание:
1. Использование в 1С ОКР функции2. Синтаксис описание функции ВЫРАЗИТЬ
3. Округление в запросе 1С при помощи функции ВЫРАЗИТЬ
4. Исключение для значений типа NULL
5. Как округлить в запросе 1С число до целых сотен
1. Использование в 1С ОКР функции
Для округления чисел встроенный язык 1С предусматривает использование функции ОКР в 1С. Ее можно использовать при обработке результата запроса в процедурах модулей объектов конфигурации. Однако, в языке запросов 1С Предприятие также есть возможность округлить результат вычисления непосредственно при помощи формулы в произвольном выражении. Для этого предусмотрена функция ВЫРАЗИТЬ(<Выражение> КАК <Тип>).
2. Синтаксис описание функции ВЫРАЗИТЬ
Параметры:
Выражение – описание преобразуемого объекта.
Тип – можно указывать строковое описание типа, либо значения ЧИСЛО или СТРОКА.
Для типа ЧИСЛО в 1С необходимо указывать формат, к которому нужно привести выражение:
ЧИСЛО( <Количество знаков целой части>, <Количество знаков дробной части>)
Для типа СТРОКА в 1С нужно указать длину строки:
СТРОКА(<Длина строки>)
В нашем случае параметр <Выражение> должен обязательно иметь числовой тип. Параметр <Тип> задается как ЧИСЛО.
3. Округление в запросе 1С при помощи функции ВЫРАЗИТЬ
Для округления числа до целого указываем в произвольном выражении:
ВЫРАЗИТЬ(&ОкругляемоеЧисло КАК ЧИСЛО(15.0)), где
15 – длина целой части,
0 – количество знаков дробной части
Результат вычисления в запросе будет следующий:
При &ОкругляемоеЧисло = 123.456 результат = 123
При &ОкругляемоеЧисло = 123.5 результат = 124
Таким образом, результат выражения будет представлять собой округление числа до целого по правилам округления в запросе 1С.
Если нужно округлить до определенного количества знаков после запятой в 1С, задаем после точки количество знаков:
ВЫРАЗИТЬ(123.456 КАК ЧИСЛО(15.1)) = 123.5
4. Исключение для значений типа NULL
Если в функцию для округления в запросе 1С передается какой-либо реквизит объекта и в таблице значений для данного объекта этот реквизит не заполнен (т.е. в таблице БД имеет значение NULL), то в результате вычисления по формуле, приведенной выше мы получим нечисловое значение типа NULL:
ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15.1)) = NULL
Для того, чтобы избежать в таблицах результата запроса строк с таким значением, нужно использовать функцию обхода пустых значений в 1С 8.3, принудительно приравнивая пустые значения нулю:
ЕСТЬNULL(ВЫРАЗИТЬ(NULL КАК ЧИСЛО(15.1)), 0) = 0
5. Как округлить в запросе 1С число до целых сотен
Выше мы рассмотрели возможность округления в запросе 1С числа до целых значений.
Но как быть если нужно округлить до целых сотен, десятков или, например, тысяч? Напрямую функция ВЫРАЗИТЬ в 1С 8.3 такой возможности не предоставляет. В этом случае нужно при помощи функции ВЫРАЗИТЬ в 1С 8.3 округлить до целого результат от деления округляемого числа на нужную кратность (100, 10, 1000 и т.д.) и затем умножить полученное число на ту же кратность.
Например – нужно округлить до целых сотен число 1525634.123456789.
100 * (ВЫРАЗИТЬ(1525634.123456789 / 100 КАК ЧИСЛО(15, 0))) = 1525600
Специалист компании "Кодерлайн"
Юлия Романяк