Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Падает запрос с переполнением при преобразовании numeric к типу данных numeric

Падает запрос с переполнением  при преобразовании numeric к типу данных numeric
Я
   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



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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.