Имя: Пароль:
1C
1С v8
Деление на 0 в запросе
,
0 Zombi
 
24.07.12
10:38
В запросе есть поле с таким выражением:

ВЫБОР
   КОГДА ПартииТоваровНаСкладахОбороты.КоличествоРасход <> 0
       ТОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
   ИНАЧЕ 0
КОНЕЦ

При выполнении все равно ругается на деление на 0. Я что то не так сделал?
1 vicof
 
24.07.12
10:39
Весь запрос покажи
2 Zombi
 
24.07.12
10:40
ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма + РеализацияТоваровУслугТовары.СуммаНДС
   КОНЕЦ КАК СНДС,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ КАК БезНДС,
   РеализацияТоваровУслугТовары.Ссылка,
   ВЫБОР
       КОГДА ПартииТоваровНаСкладахОбороты.КоличествоРасход <> 0
           ТОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
       ИНАЧЕ 0
   КОНЕЦ КАК Себестоимость,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход КАК ВаловаяПрибыль,
   (ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100 КАК Эффективность,
   РеализацияТоваровУслугТовары.Склад,
   РеализацияТоваровУслугТовары.Ссылка.Организация,
   РеализацияТоваровУслугТовары.Ссылка.Подразделение,
   РеализацияТоваровУслугТовары.Ссылка.Контрагент
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(, , Регистратор, ) КАК ПартииТоваровНаСкладахОбороты
       ПО РеализацияТоваровУслугТовары.Номенклатура = ПартииТоваровНаСкладахОбороты.Номенклатура
           И РеализацияТоваровУслугТовары.Склад = ПартииТоваровНаСкладахОбороты.Склад
           И РеализацияТоваровУслугТовары.Ссылка = ПартииТоваровНаСкладахОбороты.Регистратор
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
3 х86
 
24.07.12
10:40
(0)скобки расставь
4 Ork
 
24.07.12
10:40
(0) Возможно здесь : РеализацияТоваровУслугТовары.Количество тоже "0".
5 romale
 
24.07.12
10:40
(0) Может тебя ещё и ПартииТоваровНаСкладахОбороты.КоличествоРасход = NULL?
6 vicof
 
24.07.12
10:40
ПартииТоваровНаСкладахОбороты.СтоимостьРасход
7 Zombi
 
24.07.12
10:40
+ (2) это все в СКД
8 hhhh
 
24.07.12
10:43
(7) ну там ниже еще вторая операция деления. Для нее тебе влом на 0 проверять?
9 Zombi
 
24.07.12
10:43
Так тоже деление на 0:

ВЫБОР
   КОГДА ПартииТоваровНаСкладахОбороты.КоличествоРасход <> 0
           И ПартииТоваровНаСкладахОбороты.КоличествоРасход <> NULL
       ТОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
   ИНАЧЕ 0
КОНЕЦ
10 romale
 
24.07.12
10:43
ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0) = 0
           ТОГДА 0
ИНАЧЕ
ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
   КОНЕЦ КАК Себестоимость,
11 chelentano
 
24.07.12
10:43
(ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100 КАК Эффективность
12 Kashemir
 
24.07.12
10:43
(9) Кто ж так на NULL проверяет. Смотри (10)
13 chelentano
 
24.07.12
10:44
+(11) здесь нет проверки на ноль
14 Zombi
 
24.07.12
10:44
(8) Ошибка появилась, когда я именно это деление добавил
15 rool
 
24.07.12
10:44
а причем тут скд? просто ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество где то равно нулю. проверяй все произведение на ноль
16 sash-ml
 
24.07.12
10:46
можно просто скобки дописать (а/в)*с
17 hhhh
 
24.07.12
10:47
(15) РеализацияТоваровУслугТовары.Количество в числителе, если что.
18 rool
 
24.07.12
10:48
ага. гоню :)
19 Zombi
 
24.07.12
10:49
ВЫБОР
   КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0) = 0
       ТОГДА 0
   ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
КОНЕЦ

так тоже не хочет. А как лучше во втором делении на 0 проверить?
20 Kashemir
 
24.07.12
10:50
(19) Ошибки деления на 0 здесь не может в принципе. Какое еще второе деление ?
21 Classic
 
24.07.12
10:51
(0)
Может не на это поле ругается?
22 Ненавижу 1С
 
гуру
24.07.12
10:51
(19) точно также
23 Zombi
 
24.07.12
10:51
(20) ниже там еще одно деление есть, но раньше работало, вот это деление добавил и теперь:


Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0
по причине:
Ошибка SQL: Деление на 0
по причине:
Деление на 0 значения типа Numeric
24 Classic
 
24.07.12
10:53
(23)
Наверняка на второе ругается. Ты ж там на ноль и нул не проверяешь
25 Zombi
 
24.07.12
10:53
Вот щас весь запрос:

ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма + РеализацияТоваровУслугТовары.СуммаНДС
   КОНЕЦ КАК СНДС,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ КАК БезНДС,
   РеализацияТоваровУслугТовары.Ссылка,
   ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0) = 0
           ТОГДА 0
       ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
   КОНЕЦ КАК Себестоимость,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход КАК ВаловаяПрибыль,
   (ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100 КАК Эффективность,
   РеализацияТоваровУслугТовары.Склад,
   РеализацияТоваровУслугТовары.Ссылка.Организация,
   РеализацияТоваровУслугТовары.Ссылка.Подразделение,
   РеализацияТоваровУслугТовары.Ссылка.Контрагент
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(, , Регистратор, ) КАК ПартииТоваровНаСкладахОбороты
       ПО РеализацияТоваровУслугТовары.Номенклатура = ПартииТоваровНаСкладахОбороты.Номенклатура
           И РеализацияТоваровУслугТовары.Склад = ПартииТоваровНаСкладахОбороты.Склад
           И РеализацияТоваровУслугТовары.Ссылка = ПартииТоваровНаСкладахОбороты.Регистратор
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата

на что еще ругаться может?
26 Kashemir
 
24.07.12
10:54
У тебя 2 операции деления - неужели так сложно определить ?
27 Ненавижу 1С
 
гуру
24.07.12
10:54
ну епта

(ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100 КАК Эффективность,
28 Zombi
 
24.07.12
10:55
(24) щас сделал вот так:

ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма + РеализацияТоваровУслугТовары.СуммаНДС
   КОНЕЦ КАК СНДС,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ КАК БезНДС,
   РеализацияТоваровУслугТовары.Ссылка,
   ПартииТоваровНаСкладахОбороты.СтоимостьРасход КАК Себестоимость,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход КАК ВаловаяПрибыль,
   (ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100 КАК Эффективность,
   РеализацияТоваровУслугТовары.Склад,
   РеализацияТоваровУслугТовары.Ссылка.Организация,
   РеализацияТоваровУслугТовары.Ссылка.Подразделение,
   РеализацияТоваровУслугТовары.Ссылка.Контрагент
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(, , Регистратор, ) КАК ПартииТоваровНаСкладахОбороты
       ПО РеализацияТоваровУслугТовары.Номенклатура = ПартииТоваровНаСкладахОбороты.Номенклатура
           И РеализацияТоваровУслугТовары.Склад = ПартииТоваровНаСкладахОбороты.Склад
           И РеализацияТоваровУслугТовары.Ссылка = ПартииТоваровНаСкладахОбороты.Регистратор
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата

все работает.
29 Zombi
 
24.07.12
10:56
(27) Подскжите, пожалуйста, как тут проверку на 0 лучше поставить, я вставлю. Но по моему не в этом проблема.
30 Kashemir
 
24.07.12
10:57
(29) Это точно - проблема не в этом
31 Classic
 
24.07.12
11:04
(28)
И какая у тебя эффективность в результате?
32 Zombi
 
24.07.12
11:08
33 Classic
 
24.07.12
11:27
Твой запрос в (25) в конструктор проваливается?
34 Zombi
 
24.07.12
11:38
(33) Да, запросы делаю конструктором в основном, если что то руками дописываю, всегда конструктором открываю для проверки и выравнивания.
35 Oleg_Kag
 
24.07.12
11:47
ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество

Из чего следует, что РеализацияТоваровУслугТовары.Количество=0 в каком-то документе.
Попробуй умножение убрать.
36 Zombi
 
24.07.12
11:53
(35) Деление же первым выполниться должно, потом на 0 можно и умножить. Но щас попробую уберу.
37 Zombi
 
24.07.12
11:57
(35) Вот так:

ВЫБОР
   КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0) = 0
       ТОГДА 0
   ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход
КОНЕЦ

тоже ошибка
38 olegves
 
24.07.12
11:58
(19)
а так?

ВЫБОР
   КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество, 0) = 0
       ТОГДА 0
   ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
КОНЕЦ
39 Zombi
 
24.07.12
12:33
Сделал все таки проверку во втором делении, все заработало. Странно как раньше работало.

ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Номенклатура,
   РеализацияТоваровУслугТовары.Количество,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма + РеализацияТоваровУслугТовары.СуммаНДС
   КОНЕЦ КАК СНДС,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ КАК БезНДС,
   РеализацияТоваровУслугТовары.Ссылка,
   ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.КоличествоРасход, 0) = 0
           ТОГДА 0
       ИНАЧЕ ПартииТоваровНаСкладахОбороты.СтоимостьРасход / ПартииТоваровНаСкладахОбороты.КоличествоРасход * РеализацияТоваровУслугТовары.Количество
   КОНЕЦ КАК Себестоимость,
   ВЫБОР
       КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
               И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
           ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
       ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
   КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход КАК ВаловаяПрибыль,
   ВЫБОР
       КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОбороты.СтоимостьРасход, 0) = 0
           ТОГДА 0
       ИНАЧЕ (ВЫБОР
               КОГДА РеализацияТоваровУслугТовары.Ссылка.УчитыватьНДС
                       И РеализацияТоваровУслугТовары.Ссылка.СуммаВключаетНДС
                   ТОГДА РеализацияТоваровУслугТовары.Сумма - РеализацияТоваровУслугТовары.СуммаНДС
               ИНАЧЕ РеализацияТоваровУслугТовары.Сумма
           КОНЕЦ - ПартииТоваровНаСкладахОбороты.СтоимостьРасход) / ПартииТоваровНаСкладахОбороты.СтоимостьРасход * 100
   КОНЕЦ КАК Эффективность,
   РеализацияТоваровУслугТовары.Склад,
   РеализацияТоваровУслугТовары.Ссылка.Организация,
   РеализацияТоваровУслугТовары.Ссылка.Подразделение,
   РеализацияТоваровУслугТовары.Ссылка.Контрагент
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(, , Регистратор, ) КАК ПартииТоваровНаСкладахОбороты
       ПО РеализацияТоваровУслугТовары.Номенклатура = ПартииТоваровНаСкладахОбороты.Номенклатура
           И РеализацияТоваровУслугТовары.Склад = ПартииТоваровНаСкладахОбороты.Склад
           И РеализацияТоваровУслугТовары.Ссылка = ПартииТоваровНаСкладахОбороты.Регистратор
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.