Имя: Пароль:
1C
1С v8
v8: Деление на ноль в запросе
0 Темный
 
23.08.11
11:58
Не пойму. Вроде все проверки сделал, а все равно запрос выдает деление на ноль.... Вот запрос:
ВЫБРАТЬ
   ВЫБОР
       КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
               ИЛИ ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0
           ТОГДА 0
       ИНАЧЕ ВЫБОР
               КОГДА ПартииТоваровНаСкладахОстатки.СтоимостьОстаток ЕСТЬ NULL
                       ИЛИ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток = 0
                   ТОГДА 0
               ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
           КОНЕЦ
   КОНЕЦ КАК Себестоимость,
   ПартииТоваровНаСкладахОстатки.Номенклатура,
   ПартииТоваровНаСкладахОстатки.КоличествоОстаток,
   ПартииТоваровНаСкладахОстатки.СтоимостьОстаток
ИЗ
   РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаОст, ) КАК ПартииТоваровНаСкладахОстатки
ГДЕ
   ВЫБОР
           КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
               ТОГДА 0
           ИНАЧЕ ВЫБОР
                   КОГДА ПартииТоваровНаСкладахОстатки.СтоимостьОстаток ЕСТЬ NULL
                       ТОГДА 0
                   ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
               КОНЕЦ
       КОНЕЦ < 10
1 kosts
 
23.08.11
12:01
ГДЕ
   ВЫБОР
           КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток ЕСТЬ NULL
~~~~~~~~~
ИЛИ ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0
~~~~~~~~~~~
               ТОГДА 0
           ИНАЧЕ ВЫБОР
                   КОГДА ПартииТоваровНаСкладахОстатки.СтоимостьОстаток ЕСТЬ NULL
                       ТОГДА 0
                   ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
               КОНЕЦ
       КОНЕЦ < 10
2 Wassily
 
23.08.11
12:01
в последнем условии на NULL проверка есть, а на 0 - нет
3 Tahallus
 
23.08.11
12:02
Проверяешь "ПартииТоваровНаСкладахОстатки.СтоимостьОстаток = 0" а делишь на "ПартииТоваровНаСкладахОстатки.КоличествоОстаток"
4 Шапокляк
 
23.08.11
12:04
ВЫБРАТЬ
   ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.КоличествоОстаток,0)=0 Тогда
5 Темный
 
23.08.11
12:22
Блин, точно. Переменную подправил, а в условии старая конструкция осталась. Действительно, туплю :-)
Всем спасибо!
6 Aprobator
 
23.08.11
12:25
еще бы выяснить откуда NULL может взяться в виртуальной таблице и при отсутствии соединения.
7 kosts
 
23.08.11
12:35
Вот кстати должен быть тот же результат...

ВЫБОР
КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток = 0 ТОГДА 0
ИНАЧЕ ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток, 0)
КОНЕЦ КАК Себестоимость
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn