Как настроить округление в 1с
Округление результатов арифметических операций в запросах
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
Методическая рекомендация (полезный совет)
1. Если в операции деления заранее известны порядки числителя и знаменателя, то следует по возможности избегать выполнения деления числа заведомого маленького порядка на число заведомо большого порядка. Например, вместо:
0.02 / 28346 * 9287492
0.02 * 9287492 / 28346
2. При выполнении арифметических операций в запросах к базе данных платформа 1С:Предприятия поддерживает точность вычислений до 8 разрядов дробной части. Однако, из-за особенностей работы различных СУБД в некоторых ситуациях точность результатов может отличаться от 8. Более подробно о вычислении разрядности результатов можно почитать в статье ИТС Разрядность результатов выражений и агрегатных функций в языке запросов.
Если точность результата выполнения запроса к базе данных, содержащего
- арифметические операции деления,
- агрегатные функции СРЕДНЕЕ ,
- арифметические операции умножения, если каждый из множителей может иметь дробную часть,
различается на различных СУБД, то рекомендуется к операндам и/ или результатам этих операций применять оператор явного приведения разрядности и точности числовых данных:
ВЫРАЗИТЬ(. КАК Число(m, n))
Оператор ВЫРАЗИТЬ следует применять к операндам, если на какой-нибудь СУБД точность получаемого результата недостаточна. Например, требуется 10 разрядов после запятой, а получается 6.
При этом указанная общая разрядность операндов должна быть минимальной, но не меньше той, которая достаточна для представления значений каждого из операндов. Неоправданное завышение разрядности может привести к потере точности последующих вычислений и несколько снизить скорость выполнения запроса.
Важно иметь в виду, что на разных СУБД имеются различные ограничения на максимальную разрядность десятичных чисел. Самое жесткое ограничение - это 31 разряд в целой и дробной частях. Чем меньшее значение разрядности будет указано для операндов, тем выше сможет быть точность результата. Например, если в результате требуется не менее 10 разрядов дробной части, первый операнд заведомо помещается в 15 разрядов целой части, а второй операнд заведомо помещается в 5 знаков целой части, то выражение может быть записано так:
ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Результат
ИЗ Таблица КАК Таблица
Оператор ВЫРАЗИТЬ следует применять к результату, если точность вычислений на всех СУБД достаточна, но на некоторых она больше, а на других меньше. При этом указанная общая разрядность результата должна быть минимальной, но не меньше той, которая достаточна для представления значений результата. Если в приведенном примере известно, что Знаменатель не может быть меньше 0.00001, то для представления результата достаточно 20 разрядов целой части. В этом случае выражение может быть записано так:
ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель / Таблица.Знаменатель КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица
Иногда может быть целесообразно выполнить приведения к требуемой точности как операндов, так и результата. Например:
ВЫБРАТЬ
ВЫРАЗИТЬ(ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица
Нередко от пользователей программы 1С:Бухгалтерия предприятия поступают вопросы о том, как настроить округление при выплате зарплаты или аванса. Такая возможность есть, да на первый взгляд она не очевидна, ведь она не вынесена ни в документ ведомости, ни в раздел «Зарплата и кадры». Если в зарплатной конфигурации все настройки связанные с округлением выплат представлены в ведомости прям перед табличной частью, то тут они запрятаны в справочник. Добраться к которому можно через все функции.
В случае, когда повторили те же манипуляции, что представлены выше, но не увидели пункта «Все функции». Следует в параметрах, находящихся в настройках, включить ее отображение
После снова нажимаем «Сервис и настройки» и выбираем появившуюся команду «Все функции». Далее в открывшемся окне, чтобы ускорить процесс поиска нужного нам справочника, а именно в справочнике хранится настройка округления, в поисковой строке вводим «способы. »
В справочнике «Способы выплаты зарплаты» мы можем настроить выплату как зарплаты, так и аванса, а еще с релиза 3.0.77 и договора подряда. Про договор подряда есть другая подробная статья, в которой описан весь новый функционал
Как можно заметить, список способов округления достаточно большой, настройка очень гибкая, причем сам способ внутри тоже можно еще настраивать. Когда в него «провалитесь», увидите еще дополнительную настройку
Пользователю доступно изменение точности и правил округления индивидуально для каждого способа, в этом случае стоит не забывать, что этот способ может быть установлен и для других выплат. Вспомним как выглядели ведомости в банк по умолчанию без округления
После того как сменили способ проверим и перезаполним ведомость, на примере настройки производились для аванса
В программе 1С: Бухгалтерия предприятия есть много возможностей и настроек, но некоторые мы просто не видим, про другие просто не знаем. Главное разобраться с этим, когда появится необходимость. Как видите, пользователю доступно много, нужно просто найти, где все это скрывается.
Читайте также: