Запрос . деление на ноль #666428


#0 by Domanoff26
скулы выдают в запросе деление на ноль. виновато вот это выражение ВЫБОР    КОГДА ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0                        ТОГДА 0        ИНАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) /  (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  * 100 КАК ЧИСЛО(10, 2)) КОНЕЦ КАК ПроцентОтклонения
#1 by Domanoff26
поменял на вот такое, но все равно ругается /ВЫБОР
#2 by acsent
Эта грустная история о прекрасной восточной девушке Наноль, которая любит двух прекрасных и мужественных юношей и не может выбрать. Юноши тоже любят ее. Казалось бы, в нынешние–то времена, зажить бы им простой и дружной семьей. Но трагедия в том, что Наноль делить нельзя.
#3 by zak555
и сделай проверку
#4 by zak555
бу га га
#5 by Domanoff26
ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН в полях равно нулю, тогда почему моя проверка не работает?
#6 by salvator
Где млять у тебя эта проверка?
#7 by Domanoff26
arithmetic overflow error converting numeric to data type numeric
#8 by Domanoff26
Выбор когда  не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец)
#9 by zak555
это не то же самое, что и ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН = 0 отличаются на ВлЗапрос.ФактическийПрофит
#10 by Domanoff26
это сообщение в консоли, нет конечно
#11 by salvator
#12 by PR
Мне кажется, ТС просто тупо троллит
#13 by Domanoff26
это по логике не верно, это же отклонение, отклонение в случае ноль должно быть 100 процентов
#14 by Domanoff26
короче тут что то хитрее смотрите какое сообщение странное  arithmetic overflow error converting numeric to data type numeric...может не только в нуле дело
#15 by hhhh
нет, это не хитрее, это тупо. Потому что ВЫРАЗИТЬ.
#16 by Domanoff26
вот я тоже дмаю об этом, а что конкретно?
#17 by zak555
ты лучше весь запрос покажи может проще внутренне соединение использовать ( тогда нули исключаться )
#18 by Domanoff26
да но строчку то надо выводить, запрос большой. смотреть никто не будет, без этого поля все норм отрабатывает
#19 by PR
ЕСТЬ NULL
#20 by Domanoff26
см
#21 by PR
см
#22 by hhhh
ты так и не показал, где у тебя эта проверка на ноль?
#23 by Domanoff26
в (Выбор когда  не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец)
#24 by Domanoff26
так что с выразить то?
#25 by Domanoff26
что на нул я должен проверять то, если я написал что делитель равен нулю в выборке этого запроса
#26 by PR
За "не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  = 0" вообще руки отрывать нужно.
#27 by PR
Все, что в формуле числовое.
#28 by НЕА123
ошибка арифметического переполнения, преобразовывающая числовой в числовой тип данных
#29 by Domanoff26
не понял, что значит ичсловой в числовой
#30 by Domanoff26
ну <> не спасает так же
#31 by НЕА123
в все сказано.
#32 by PR
Логично. Потому что выражение <> 0.
#33 by azernot
Вырази 100000000000 как число (10,2). Просто попробуй написать на бумажке.
#34 by Domanoff26
ну там нет такого числа, там 44000 делится на 1000 посмотри внимательно на проверку еще раз!
#35 by PR
Что мешает проверить?
#36 by Михаил 1С
Блин, зачем ты проверяешь на ноль Числитель? Если он ноль, то и все выражение будет ноль по правилам арифмитики! Все само получится! В условии надо поставить проверку на ноль знаменателью! И если он ноль, то тогда... пусть ответ тогда = бесконечность! Ну или сто сикстилионов!
#37 by azernot
ты можешь убрать своё вычисление и просто выполнить запрос с тремя полями в результате (ну кроме прочих): ФактическийПрофит, РеализацияПлан, ССПЛАН и запостить сюда результаты этих трёх колонок?
#38 by alextom81
#39 by azernot
Где у него ошибка в проверке? КОГДА ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН) = 0 ИЛИ (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  = 0 Почему-то все игнорируют часть после "ИЛИ"..
#40 by alextom81
Сдаётся мне, где-то раньше (во вложенном запросе) нет проверки на null
#41 by mistеr
Сначала ВЫРАЗИТЬ, потом делить.
#42 by 1Сергей
у него там вообще не понятно что куда, куча закоменчего кода в хаотическом порядке
#43 by Domanoff26
все что вы тут кричите про проверку - чушь, в выразить и правда большое число!   hhhh спасибо!
#44 by PR
Смешно. А ты ведь так спорил, помнится :))
#45 by Михаил 1С
Блин, сам ты чушь, я тебе дело говорил. Проверку на ноль знаменателю ставить необходимо!
#46 by Михаил 1С
А если у тебя на работало по другой причине, то значит у тебя на глюк больше.
#47 by Domanoff26
не гони она стоит там знаменателю, посмотри внимательнее
#48 by Domanoff26
я как раз и говорил что дело не в проверке не фига
#49 by Domanoff26
НАЧЕ ВЫРАЗИТЬ((ВлЗапрос.ФактическийПрофит - (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)) / (Выбор когда  не (ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН)  = 0 Тогда ВлЗапрос.РеализацияПлан - ВлЗапрос.ССПЛАН иначе 1 конец) * 100 КАК ЧИСЛО(10, 2)) - вот и деление и проверка на знаменатель!!!!
#50 by alextom81
У тебя просто выразить Null значение откидывает из построения результатов :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С