Имя: Пароль:
1C
1С v8
Падает запрос с переполнением при преобразовании numeric к типу данных numeric
0 Dirk Diggler
 
21.12.20
18:07
В запросе есть вот такая строка:

ВЫБРАТЬ
ЕСТЬNULL(СУММА(ЗаказПокупателяТовары.Сумма) - СУММА(ЗаказПокупателяТовары.Количество * ЗаказПокупателяТовары.Коэффициент / ЗаказПокупателяТовары.КоэффициентЕдХр * ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент / ЗаказПокупателяТовары.КоэффициентЕдХр * КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность), 0) КАК Маржа


Падает именно на ней. На одном документе. Убрал агрегирующие функции, разделил на множители

        |ВЫБРАТЬ
        |    ЗаказПокупателяТовары.Сумма КАК Сумма,
        |    ЗаказПокупателяТовары.Количество * ЗаказПокупателяТовары.Коэффициент / ЗаказПокупателяТовары.КоэффициентЕдХр КАК КолвоЕдХр,
        |    ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент / ЗаказПокупателяТовары.КоэффициентЕдХр * КурсыВалютСрезПоследних.Курс / КурсыВалютСрезПоследних.Кратность КАК ЦенаЕдХр,
        |    ЗаказПокупателяТовары.Номенклатура КАК Номенклатура



http://joxi.ru/KAx616PCKb48wm

Номенклатура    ЦенаЕдХр    КолвоЕдХр    Сумма
Шайба d 8,4 zn DIN 125 A (~ ГОСТ 11371-70)    187,129152    0,000333333    0,17
Шайба d10,5 zn DIN 125 A (~ ГОСТ 11371-70)    233,91144    0,46666662    235,2
Шайба d13 DIN 125 A    2,9888684    28    183,12



Неожиданно. Подскажите, как от переполнения избавиться? Не избавляясь от агрегатных функций.
1 novichok79
 
21.12.20
18:08
например, все округлять
ВЫРАЗИТЬ(x как ЧИСЛО(15,6))
тогда на postgres и mssql будут одинаковые результаты расчетов
2 H A D G E H O G s
 
21.12.20
18:08
Выразить()
3 Dirk Diggler
 
21.12.20
18:13
округлять каждое поле, входящее в строку запроса?
4 Dirk Diggler
 
21.12.20
18:13
И я думал, такое только если число слишком большое
5 novichok79
 
21.12.20
18:14
(3) прежде всего то поле, которое может превысить разрядность при вычислениях, а далее по обстоятельствам.
6 mikecool
 
21.12.20
19:49
использовать подряд сначала умножения все, а затем - деления
7 ДедМорроз
 
21.12.20
23:10
(6) ну и как бы за разряды вылезти гарантированно,нужно использовать так,чтобы не вылазить ни в большие разряды ни в длинную дробь.