Имя: Пароль:
1C
1С v8
Избегаем деления на 0 в СКД
,
0 prilforreal
 
03.07.18
11:55
Доброго времени суток! В СКД пишу отчет, столкнулся с тем что СКД не дает делить на ноль, в запросе подменяю ноль на небольшое число, но ошибка повторяется

ВЫБРАТЬ
    ПроизводствоПечатьТабличнаяЧасть1.Ссылка.Дата,
    ПроизводствоПечатьТабличнаяЧасть1.Ссылка.Проведен,
    ПроизводствоПечатьТабличнаяЧасть1.Материал,
    ПроизводствоПечатьТабличнаяЧасть1.МатериалФакт,
    ПроизводствоПечатьТабличнаяЧасть1.ПлощадьМатериала,
    ПроизводствоПечатьТабличнаяЧасть1.Площадь,
    ВЫБОР КОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0
    ТОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь + 0.00000001
    ИНАЧЕ ПроизводствоПечатьТабличнаяЧасть1.Площадь
    КОНЕЦ,
    ПроизводствоПечатьТабличнаяЧасть1.Площадь / 100 * 5 + ПроизводствоПечатьТабличнаяЧасть1.Площадь КАК ПорогПерерасхода,
    ПроизводствоПечатьТабличнаяЧасть1.Ссылка,
    ПроизводствоПечатьТабличнаяЧасть1.ПлощадьМатериала / ПроизводствоПечатьТабличнаяЧасть1.Площадь КАК КИМ
        
ИЗ
    Документ.ПроизводствоПечать.ТабличнаяЧасть1 КАК ПроизводствоПечатьТабличнаяЧасть1
1 Nikoss
 
03.07.18
11:57
где ты в запросе, где деление, подменил 0 ?
2 piter3
 
03.07.18
11:57
не там где нужно подменил)
3 prilforreal
 
03.07.18
11:58
(1) ВЫБОР КОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0
    ТОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь + 0.00000001
    ИНАЧЕ ПроизводствоПечатьТабличнаяЧасть1.Площадь
    КОНЕЦ,
4 Мандалай
 
03.07.18
11:58
Выбор когда ЕстьNULL(ПроизводствоПечатьТабличнаяЧасть1.Площадь ,0) =  0 Тогда 1 Иначе ПроизводствоПечатьТабличнаяЧасть1.Площадь Конец
5 СвинТуз
 
03.07.18
11:59
Есть такой оператор . Называется "Выбор" . Слабо его использовать?
6 Dmitry1c
 
03.07.18
11:59
(3) в анналы истории

а если у тебя там NULL, а не 0?

NULL + 0.00001 = NULL
7 Мандалай
 
03.07.18
11:59
Ну хотя ЕстьNULL наверное лишнее.
8 Мандалай
 
03.07.18
12:00
(6)Я так понимаю данные берутся из ТЧ, откуда там NULL?
9 Мандалай
 
03.07.18
12:00
(0)То что тебе написали прям в сказуемое вставляй
10 Мандалай
 
03.07.18
12:01
100 * 5 + ПроизводствоПечатьТабличнаяЧасть1.Площадь должна вернуть 500 если ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0. Тут проверка не нужна.
11 SadrArt
 
03.07.18
12:05
ПроизводствоПечатьТабличнаяЧасть1.ПлощадьМатериала / ВЫБОР КОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0 ТОГДА 1 ИНАЧЕ ПроизводствоПечатьТабличнаяЧасть1.Площадь КОНЕЦ КАК КИМ
12 SadrArt
 
03.07.18
12:06
ПроизводствоПечатьТабличнаяЧасть1.ПлощадьМатериала / ВЫБОР КОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0 ТОГДА 1 ИНАЧЕ ПроизводствоПечатьТабличнаяЧасть1.Площадь КОНЕЦ КАК КИМ
13 prilforreal
 
03.07.18
12:08
(8) Да, конечно из ТЧ, (10) ПроизводствоПечатьТабличнаяЧасть1.Площадь / 100 * 5 + ПроизводствоПечатьТабличнаяЧасть1.Площадь КАК ПорогПерерасхода
Это расчет перерасхода, в вывод отчета попадают только те строчки, в которых материала израсходовано => 105%
14 SadrArt
 
03.07.18
12:08
(9) "Сказуемое" - вроде из другой пьесы, здесь "Знаменатель"
15 prilforreal
 
03.07.18
12:15
(12) (9) Спасибо, думал не обязательно в знаменатель вставлять)
16 Мандалай
 
03.07.18
12:16
(14)Ну да, эт я алгебру с русязом перепутал :)
17 Малыш Джон
 
03.07.18
12:16
(12) я так понимаю, если площадь=0, то там не площадь материала должна быть.
(15)КИМ - это ведь коэф. используемого места?
тогда:

ВЫБОР
  КОГДА ПроизводствоПечатьТабличнаяЧасть1.Площадь = 0
    ТОГДА "Хер вам, а не КИМ"
  ИНАЧЕ ПроизводствоПечатьТабличнаяЧасть1.ПлощадьМатериала / ПроизводствоПечатьТабличнаяЧасть1.Площадь
КОНЕЦ Как КИМ
18 VladZ
 
03.07.18
12:22
(0) "в запросе подменяю ноль на небольшое число". - круто, чо.  Ты своим "+ что-то там" намеренно вносишь искажения в данные. Зачем????

Используй "Выбор когда" и будет тебе Щастье!
19 prilforreal
 
03.07.18
12:29
(17) Только при таком запросе "Хер вам а не ким" будет писаться в поле площадь, на не в поле КИМ
20 Малыш Джон
 
03.07.18
12:40
(19) в площадь будет писаться площадь, а то, что в (17)  - будет писаться в поле КИМ.
21 Малыш Джон
 
03.07.18
12:40
Это разъяснение, для тех, кто пропустил слова "Как КИМ"
22 Малыш Джон
 
03.07.18
12:41
(19) у тебя деление на ноль происходит в коэффициенте, а не в площади
зачем площадь-то трогать?
23 prilforreal
 
03.07.18
12:47
(22) Спасибо, понял теперь