Имя: Пароль:
1C
1С v8
Почему такая конструкция выдет ошибку?
0 espanol
 
29.01.14
15:30
ВЫБОР
        КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
                И ЕСТЬNULL(Итоговая.План, 0) = 0
            ТОГДА 0
        ИНАЧЕ 100
    КОНЕЦ КАК ПВ,


{Обработка.КонсольЗапросов.Форма.Форма.Форма(677)}: Ошибка при вызове метода контекста (Выполнить)
    мРезЗапроса = ОбъектЗапрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 10.0: Divide by zero error encountered.
HRESULT=80004005, SQLSrvr: SQLSTATE=22012, state=1, Severity=10, native=8134, line=1
1 Nenaviwu1c20
 
29.01.14
15:31
Весь запрос покажи.У тебя деление на 0
2 МойКодУныл
 
29.01.14
15:31
Точно эта?  у теяб формулы нет, где это поле в знаменателе?
Сервер ругается на деление на 0.:)
3 Ненавижу 1С
 
гуру
29.01.14
15:32
по-английски же написано "деление на ноль"
4 espanol
 
29.01.14
15:32
вот так было

ВЫБОР
        КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
                И ЕСТЬNULL(Итоговая.План, 0) = 0
            ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / Итого.План * 100
    КОНЕЦ КАК ПВ,
5 Maxus43
 
29.01.14
15:33
ЕСТЬNULL(Итого.Факт, 0) / ЕСТЬNULL(Итоговая.План, 1) * 100
6 VRednaia
 
29.01.14
15:34
(4) И когда  Итоговая.Вар.Наименование не будет ПОДОБНО "ППП%" а ЕСТЬNULL(Итоговая.План, 0) = 0 будет деление на ноль
7 espanol
 
29.01.14
15:34
(5) такаяже ошибка
8 Maxus43
 
29.01.14
15:34
ИЛИ поставь и не парься
КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
               ИЛИ ЕСТЬNULL(Итоговая.План, 0) = 0
9 Feunoir
 
29.01.14
15:34
(4) Значит у тебя Итоговая.Вар.Наименование не подобно "ППП%" и поэтому выполняется кусок ЕСТЬNULL(Итого.Факт, 0) / Итого.План * 100
10 Maxus43
 
29.01.14
15:34
(7) ни верю
11 Maxus43
 
29.01.14
15:35
ещё гденить в запросе делишь на 0, весь смотри
12 Nenaviwu1c20
 
29.01.14
15:35
ВЫБОР
        КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
                ИЛИ ЕСТЬNULL(Итоговая.План, 0) = 0
            ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / ЕСТЬNULL(Итоговая.План, 1) * 100
    КОНЕЦ КАК ПВ,
13 espanol
 
29.01.14
15:35
(11) нету больше деления... если убрать строку "Итоговая.Вар.Наименование ПОДОБНО "ППП%"", то ошшибка пропадает
14 Feunoir
 
29.01.14
15:35
(10) Ну и зря. Что выдаст ЕСТЬNULL(Итоговая.План, 1) если в первом аргументе передать 0?
15 espanol
 
29.01.14
15:36
(12) в (5) смотри ))
16 Maxus43
 
29.01.14
15:36
(14) точно
17 Nenaviwu1c20
 
29.01.14
15:36
(13) Это ты глаза протри)))и поставь условие или вместо и)))
18 VRednaia
 
29.01.14
15:37
(15) ищи отличия
19 Nenaviwu1c20
 
29.01.14
15:37
(15) спорим взлетит))
20 Maxus43
 
29.01.14
15:37
про ИЛИ говорил в (8) ещё
21 espanol
 
29.01.14
15:38
ИЛИ не прокатит, нужно чтобы два условия одновременно отрабатывались, а не одно из них
22 Maxus43
 
29.01.14
15:39
(21) тогда ещё одно условие одновременно делай с проверкой на 0.
Хотя результат будет одинаковый, что с ИЛИ, что с доп условием. всё равно 0
23 VRednaia
 
29.01.14
15:39
тогда так

ВЫБОР
        КОГДА ЕСТЬNULL(Итоговая.План, 0) = 0
            ТОГДА 0
        КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
            ТОГДА 0
        ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / ЕСТЬNULL(Итоговая.План, 1) * 100
    КОНЕЦ КАК ПВ,
24 Nenaviwu1c20
 
29.01.14
15:40
(23) И чем это от ИЛИ отличается?Где логика?))
25 VRednaia
 
29.01.14
15:41
тем что ИЛИ нет :)
26 Aprobator
 
29.01.14
15:43

...
        ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / ВЫБОР КОГДА ЕСТЬNULL(Итоговая.План, 1) = 0 ТОГДА 1 ИНАЧЕ Итоговая.План КОНЕЦ * 100
...
27 Nenaviwu1c20
 
29.01.14
15:44
D j,otv z gjyzk jlyj///Fdnjhf ujkjdjq fg cntye lf gjrhtgxt))
28 Nenaviwu1c20
 
29.01.14
15:44
В общем я понял одно ...Автора головой ап стену да покрепче))
29 mokak
 
29.01.14
15:58
ВЫБОР
     КОГДА Итоговая.Вар.Наименование ПОДОБНО "ППП%"
     ТОГДА ВЫБОР
               КОГДА ЕСТЬNULL(Итоговая.План, 0) = 0
               ТОГДА 0
               ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / Итого.План * 100
           КОНЕЦ
     ИНАЧЕ ВЫБОР
               КОГДА ЕСТЬNULL(Итоговая.План, 0) = 0
               ТОГДА 0
               ИНАЧЕ ЕСТЬNULL(Итого.Факт, 0) / Итого.План * 100
           КОНЕЦ
КОНЕЦ КАК ПВ
30 Aprobator
 
29.01.14
15:58
(29) Итого.План = 0 и все?
31 Aprobator
 
29.01.14
16:00
+(30) деление на ноль только тут возникать может, другого места то просто нет.
32 Aprobator
 
29.01.14
16:01
а - не досмотрел - соррь
33 Aprobator
 
29.01.14
16:01
уж больно понакручено.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший