Как в 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)) КАК Результат
ИЗ Таблица КАК Таблица
Дано:
Типовая Бухгалтерия для Беларуси 2.1, платформа 8.3. Это нечто среднее между российскими БП 2.0 и БП 3.0.
Требуется:
Увеличить число знаков после запятой в количестве в ОСВ по счёту и карточке счёта.
В ресурсе регистра бухгалтерии и нескольких нужных документах изменил, в проводках переписал, всё делается правильно. Как сделать, чтобы в упомянутых отчётах показывало количество с бОльшим числом знаков? Перелопатил всю конфигурацию, в макетах сделал как надо (вроде бы), но оно не меняется
А не проще ли ввести множитель для количества,то есть считая,скажем,не в штуках,а в сотнях и т.п.?
(1) Нет, фирма занимается криптовалютами, поэтому "на вырост" пришлось сделать 18 знаков после запятой. Реально бывает кто-то из их клиентов продаёт тот же биткойн в количестве до нескольких знаков, а вводить какой-нибудь миллибиткойн, микробиткойн и т.д. не катит
(2) Я просто тупо убрал форматирование, но оно всё равно почему-то отображает не так как надо. Я думал, что где-то в модулях округляет, убил полдня в отладчике, но так и не нашёл
(3) > а вводить какой-нибудь миллибиткойн, микробиткойн и т.д. не катит.
Хи. Весь мир уже лет несколько как считает биткоин в сатоши, и только для вашей "фирмы, занимающейся криптовалютами" это не катит. Ну ок, удачи, чо. Семь футов под килем, побольше вам лохов и все такое.
Мдаааа. Ладно, повторю изначальный вопрос:
Как сделать, чтобы в упомянутых отчётах показывало количество с бОльшим числом знаков?
(6) Откройте отчёт ОборотноСальдоваяВедомостьПоСчету, его СхемаКомпоновкиДанных, перейдите на вкладку "Макеты", встаньте в правой части на макет любого поля (например СальдоНаНачалоПериода.БУНачальныйОстатокДт), вызовите по ПКМ свояства ячейки, обратите внимание на значение поля "Формат" (у меня это ЧДЦ=2).
Увеличьте число знаков после запятой.
радуйтесь
(3) я как-то не уверен, что взлетит 18 знаков после запятой
Какова максимальная точность после запятой в запросе?
18 знаков,то система проглотит,так как скуль в расчетах использует decimal,который такое число знаков умеет.
Однако,точность чисел,скажем в Excel это 17 знаков,так что при сохранении в другие форматы или даже при переносе итогов через Com-соединение будет обрезание.
(8) Форматирование я убрал, но оно почему-то округляет до 8 знаков. Всё перерыл, нигде 8 знаков не прописано
(9) Спасибо, прочитал, теперь буду думать насчёт использования ВЫРАЗИТЬ
(10) Excel и Com-соединение некритичны, затык именно в отображении в самой ОСВ и карточке счёта
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
Дано:
Типовая Бухгалтерия для Беларуси 2.1, платформа 8.3. Это нечто среднее между российскими БП 2.0 и БП 3.0.
Требуется:
Увеличить число знаков после запятой в количестве в ОСВ по счёту и карточке счёта.
В ресурсе регистра бухгалтерии и нескольких нужных документах изменил, в проводках переписал, всё делается правильно. Как сделать, чтобы в упомянутых отчётах показывало количество с бОльшим числом знаков? Перелопатил всю конфигурацию, в макетах сделал как надо (вроде бы), но оно не меняется
А не проще ли ввести множитель для количества,то есть считая,скажем,не в штуках,а в сотнях и т.п.?
(1) Нет, фирма занимается криптовалютами, поэтому "на вырост" пришлось сделать 18 знаков после запятой. Реально бывает кто-то из их клиентов продаёт тот же биткойн в количестве до нескольких знаков, а вводить какой-нибудь миллибиткойн, микробиткойн и т.д. не катит
(2) Я просто тупо убрал форматирование, но оно всё равно почему-то отображает не так как надо. Я думал, что где-то в модулях округляет, убил полдня в отладчике, но так и не нашёл
(3) > а вводить какой-нибудь миллибиткойн, микробиткойн и т.д. не катит.
Хи. Весь мир уже лет несколько как считает биткоин в сатоши, и только для вашей "фирмы, занимающейся криптовалютами" это не катит. Ну ок, удачи, чо. Семь футов под килем, побольше вам лохов и все такое.
Мдаааа. Ладно, повторю изначальный вопрос:
Как сделать, чтобы в упомянутых отчётах показывало количество с бОльшим числом знаков?
(6) Откройте отчёт ОборотноСальдоваяВедомостьПоСчету, его СхемаКомпоновкиДанных, перейдите на вкладку "Макеты", встаньте в правой части на макет любого поля (например СальдоНаНачалоПериода.БУНачальныйОстатокДт), вызовите по ПКМ свояства ячейки, обратите внимание на значение поля "Формат" (у меня это ЧДЦ=2).
Увеличьте число знаков после запятой.
радуйтесь
(3) я как-то не уверен, что взлетит 18 знаков после запятой
Какова максимальная точность после запятой в запросе?
18 знаков,то система проглотит,так как скуль в расчетах использует decimal,который такое число знаков умеет.
Однако,точность чисел,скажем в Excel это 17 знаков,так что при сохранении в другие форматы или даже при переносе итогов через Com-соединение будет обрезание.
(8) Форматирование я убрал, но оно почему-то округляет до 8 знаков. Всё перерыл, нигде 8 знаков не прописано
(9) Спасибо, прочитал, теперь буду думать насчёт использования ВЫРАЗИТЬ
(10) Excel и Com-соединение некритичны, затык именно в отображении в самой ОСВ и карточке счёта
Читайте также: