Имя: Пароль:
1C
 
Деление на 0
,
0 Shmidt
 
02.09.14
10:17
ВЫБРАТЬ
    ХозрасчетныйОстатки.Счет,
    ХозрасчетныйОстатки.Субконто1 КАК Контр,
    ХозрасчетныйОстатки.Субконто2 КАК Товар,
    СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,
    СУММА(ХозрасчетныйОстатки.КоличествоОстаток) КАК КоличествоОстаток,
    ХозрасчетныйОстатки.СуммаОстаток / ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 1) КАК Цена
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
            &Дата,
            Счет = &Счет,
            ,
            Организация = &Организация
                И Субконто2 В (&СЗТоваров)
                И Субконто1 = &Контр) КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Счет,
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.Субконто2,
    ХозрасчетныйОстатки.СуммаОстаток / ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 1)
1 Wobland
 
02.09.14
10:17
круто
2 PR
 
02.09.14
10:18
(0) Несомненно
3 _fvadim
 
02.09.14
10:18
ноль не ЕСТЬNULL
4 Shmidt
 
02.09.14
10:19
Вываливается с ошибкой, деление на ноль
5 PR
 
02.09.14
10:19
(4) Продолжай, мы заинтригованы
6 _fvadim
 
02.09.14
10:19
всё правильно
7 Shmidt
 
02.09.14
10:19
ХозрасчетныйОстатки.СуммаОстаток / ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 1) КАК Цена

Это безобразие может появится только в этой строке
8 barrgand
 
02.09.14
10:20
(4) Используй ЕСТЬНОЛЬ()
9 Рэйв
 
02.09.14
10:20
Выбор Когда ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, )=0 Тогда 1
   Иначе
   ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 1)
Конец КАК Цена
10 PR
 
02.09.14
10:20
(3) Не пали интригу
11 bodri
 
02.09.14
10:20
ХозрасчетныйОстатки.СуммаОстаток = ?
12 Wobland
 
02.09.14
10:20
(7) это очень хорошо
13 PR
 
02.09.14
10:20
(7) Так так
14 КонецЦикла
 
02.09.14
10:21
(11) 1С сообщает про деление, думаете делимое также влияет?
15 shuhard
 
02.09.14
10:21
(7) если в запросе единственный оператор деления, то он один
16 bodri
 
02.09.14
10:21
(14) а почему нет? тем более без оглашения ошибки трудно ванговать
17 magicSan
 
02.09.14
10:22
там ресурсы с типом число там всегда ноль
18 Рэйв
 
02.09.14
10:22
ТС наверное подсознательно читает ЕстьNULL как ЕстьНуль:-)
19 Рэйв
 
02.09.14
10:22
(16)Делимое может быть =0. Делитель -нет.
20 _fvadim
 
02.09.14
10:22
(18) а ещё делит на единицу, раз на ноль нельзя
21 Wobland
 
02.09.14
10:23
а откуда мысль про нулл в остатках? я тоже хочу таких веществ
22 Рэйв
 
02.09.14
10:24
(20)Так единица у него получается только если там NULL,а если 0, то будет ноль,т.к. как сказали выше NULL и 0 - это две большие разницы
23 bodri
 
02.09.14
10:24
(19) запрос вроде всегда вываливается если или делитель, или делимое = 0, ломает проверять. но я на всякий случай всегда проверку на ноль стараюсь делать (так сказать на всякий пожарный)
24 Рэйв
 
02.09.14
10:24
(21)Перестраховался на всякий случай:-)
25 Wobland
 
02.09.14
10:25
(23) а при сложении не проверяешь на переполнение?
26 Рэйв
 
02.09.14
10:25
(20)Только если делитель.Запрос чтит правила математики.
27 magicSan
 
02.09.14
10:25
(23) там ресурсы там не будет нулл
28 Рэйв
 
02.09.14
10:25
(26) к (23)
29 _fvadim
 
02.09.14
10:25
(22) тоже покурил?
30 bodri
 
02.09.14
10:26
(25) ну-ка по подробней про переполнение.
31 Fish
 
02.09.14
10:26
(23) " запрос вроде всегда вываливается если или делитель, или делимое = 0" - с математикой в школе нелады были?
32 break
 
02.09.14
10:26
про деление на ноль на хабре есть статья habrahabr.ru/post/233103/
33 Рэйв
 
02.09.14
10:26
(29)Обоснуй?:-)  1 будет только если NULL, ты возражаешь?
34 _fvadim
 
02.09.14
10:27
(33) я то это вижу, ещё в (3) написал, а вот то, что делить на единицу, когда получаем ноль, чтобы получить цену тебя не смутило.
35 Wobland
 
02.09.14
10:28
(30) ч=240+20 сколько будет, если ч типа char?
36 Рэйв
 
02.09.14
10:28
(34)Нет. Списывать то надо всю сумму.Нахрена она при нулевом количестве?  Я сам так всегда делаю. А при делении на 1 как раз всю сумму и получаем.
37 magicSan
 
02.09.14
10:28
(35) я думал сейчас будет про 32 разряда )))
38 Shmidt
 
02.09.14
10:29
Всем спасибо! Терпеть ненавижу чужой код!!!
39 BuHu
 
02.09.14
10:29
(34) а что не так ?
40 Рэйв
 
02.09.14
10:30
(38)Привыкай:-) Лопатить чужой код это практически 80% работы адинесника:-)
41 Bigbro
 
02.09.14
10:30
(30) Пошел Иван-царевич биться со Змеем-Горынычем, срубил ему голову, на ее месте 2 выросло, размахнулся срубил обе, а заместо них 4, поднапрягся Иванушка срубил 4 головы, а заместо них глянь уже 8... Шла битва не на жизнь а насмерть, и вот уж силы на исходе, срубил Иван-царевич 128 голов Змею-Горынычу, и помер Змей-Горыныч, потому как был он 8-разрядным.
42 BuHu
 
02.09.14
10:31
(38) ) ты просто свой еще не видел , который был написан несколько лет назад
43 _fvadim
 
02.09.14
10:32
(36) а зачем тебе цена, если ты списываешь всю сумму?
44 Рэйв
 
02.09.14
10:33
(43)ну..Это типа и будет ценой. Потому что ее надо все равно убирать. Зависшая сумма при количестве=0 - это не есть хорошо.
45 BuHu
 
02.09.14
10:35
(43) поле цена наверно все равно должно быть заполнено , в случае с делением на 1 меньше когда , чем "выбор когда..."
46 Timon1405
 
02.09.14
10:35
(41) Начальник отдела программистов увольнял их по одному, пока программисты не кончились. После этого он уволил еще одного. Теперь у него FFFFFFFF программистов.
47 Рэйв
 
02.09.14
10:35
(43)вернее не ценой, а всей себестоимостью:-)  Ну, ты понял:-)
48 Bigbro
 
02.09.14
10:36
46 так тоже хорошо )
49 BuHu
 
02.09.14
10:36
+(45) меньше кода
50 Bigbro
 
02.09.14
10:37
(46) даже лучше, потому что если змей горыныч реализован через RRL то после 128 будет не ноль а 1 голова снова.
51 Рэйв
 
02.09.14
10:43
(50)Скорее всего будет Overflow :-)
52 Bigbro
 
02.09.14
10:49
не-не. RCL он на то и Cyclic чтобы норм результат выдавать. хотя флаг переполнения по-моему ставится действительно, но это не является ошибкой.
53 hhhh
 
02.09.14
11:48
(49) почему меньше? Тоже ведь нужно ВЫБОР КОГДА делать.
54 BuHu
 
02.09.14
11:51
(53) да , ты прав