Имя: Пароль:
1C
1С v8
деление на 0
,
0 manti
 
18.09.12
12:05
в этой формуле не может быть в знаменателе 0, поскольку  переменная мКолЕдИзмВМесте при нулевом значении дает отрицательный результат. Попробовал приветси к типу Число - не помогло. В отладчике смотрю - показывает что мКолЕдИзмВМесте неопределено.  Как еще можно?

Если  Значения.Значение = Неопределено тогда
                       мКолЕдИзмВМесте = Число(0);
                       Иначе
                       мКолЕдИзмВМесте = Значения.Значение;    
                       КонецЕсли;
                       //
                       мЦенаСоСкидкой = (ВыборкаСтрокТовары.Цена / Число(мКолЕдИзмВМесте) - (Скидка/(ВыборкаСтрокТовары.Количество)));
1 Нуф-Нуф
 
18.09.12
12:08
нулю может быть равно как Число(мКолЕдИзмВМесте) - (Скидка/(ВыборкаСтрокТовары.Количество)) так и ВыборкаСтрокТовары.Количество
отладчик рулит
2 Maxus43
 
18.09.12
12:08
чо?
в какой строке ошибка, что хочеш то? что такое Значения.Значение ?
3 Ненавижу 1С
 
гуру
18.09.12
12:09
во первых деления там два, во вторых чему равно Значения.Значение и что есть мКолЕдИзмВМесте по сути
4 Classic
 
18.09.12
12:10
Делить на ноль нельзя
5 Sammo
 
18.09.12
12:10
ВыборкаСтрокТовары.Цена / Число(мКолЕдИзмВМесте) в случае, когда Значения.Значение = Неопределено
6 Maxus43
 
18.09.12
12:10
(4) нас обманывали на высшей математике?)
7 Жан Пердежон
 
18.09.12
12:10
(0) Вы не из раковки?
8 Classic
 
18.09.12
12:11
(6)
Да
9 Ненавижу 1С
 
гуру
18.09.12
12:14
(6) вы делили на ноль? у вас какая то другая была математика ))
10 salvator
 
18.09.12
12:15
А Чак Норрис умеет делить на ноль.
11 Шапокляк
 
18.09.12
12:17
А Валуев матрешек не по порядку собирать.

Что-то ТС подозрительно притих.
12 Maxus43
 
18.09.12
12:17
(9) в высшей математике бесконечность - не есть ошибка. деление на ноль даёт бесконечность)
13 Ненавижу 1С
 
гуру
18.09.12
12:18
(12) в высшей математике деление на ноль это неопределенность, а не бесконечность
не путайте с пределами
14 Maxus43
 
18.09.12
12:20
(13) давно учился, слова забыл. суть в том что деление на ноль запрещено только в рамках стандартной арифметики
15 Ненавижу 1С
 
гуру
18.09.12
12:20
(14) суть в том, что не надо подменять понятия
16 Balabass
 
18.09.12
12:22
(15) Вот ненадо тут вот это, а то сами знаете как у нас было это, когда вот так начинали, как вы!
17 Ненавижу 1С
 
гуру
18.09.12
12:22
(16) ща расскажу про Неопределено
18 Никола_
Питерский
 
18.09.12
12:23
(17) Давай на БИС !
19 Ненавижу 1С
 
гуру
18.09.12
12:23
(18) плати денег
20 Balabass
 
18.09.12
12:23
Давай! А то я еще не слышал.
21 Maxus43
 
18.09.12
12:24
(20) а ты скажи что Ненавижу 1С ничо не понимает в Неопределено, и воще он не прав, тогда раскажет)
22 Ненавижу 1С
 
гуру
18.09.12
12:25
23 Balabass
 
18.09.12
12:27
Создал переменную - это неопределено. ТК она может быть всех мастей.
А вот когда ты её обнулил - тогда это нул.
Чё тут годать?
24 manti
 
18.09.12
12:30
(23) ну я ее и обнуляю мКолЕдИзмВМесте = Число(0);
----
Значения = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
                       Значения.Объект = ВыборкаСтрокТовары.Номенклатура;
                       Значения.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.КоличествоЕдиницВМесте;
                       Значения.Прочитать();
25 Ненавижу 1С
 
гуру
18.09.12
12:31
(24) то есть на первые несколько постов ты отвечать не будешь?
26 Balabass
 
18.09.12
12:31
обнулить <> присвоить 0
27 ChAlex
 
18.09.12
12:32
(24) крутое обнуление. :) А скажи нафиг функция Число? Или 0 - уже не число?
28 Balabass
 
18.09.12
12:32
(25) Хаха. Клёвая футболка в ЛК!. На машине такую надпись нужно сделать.
29 Infsams654
 
18.09.12
12:35
(24) а еще есть
Перем мКолЕдИзмВМесте;
которая никогда не заполнится, если из ЗначенияСвойствОбъектов ничего не прочитается
30 manti
 
18.09.12
12:37
(1) ВыборкаСтрокТовары.Количество точно не пустое,
(29) вот при незаполнении ей нужно прислвоить 0.
так
мКолЕдИзмВМесте = 0; не присваивает(
31 Ненавижу 1С
 
гуру
18.09.12
12:40
(30) значит это реквизит, причем не числовой
32 МишКа
 
18.09.12
12:44
(14) Запрещено в рамках языка 1С. Этого достаточно.
33 ZanderZ
 
18.09.12
12:46
(30) замени мКолЕдИзмВМесте на ммммКолЕдИзмВМесте например и проверь
34 Noroving
 
18.09.12
13:07
(1) Для этого есть метод Если Значения.Выбран() Тогда ......
35 manti
 
18.09.12
13:11
Если  ТипЗнч(Значения.Значение) = Тип("Неопределено") тогда
                       мКолЕдИзмВМесте = 0;
вот так получилось. Как итог - требовалось сравнивать типы а не значения, ГОСПОДА
36 Ненавижу 1С
 
гуру
18.09.12
13:12
(35) феерический бред
Тип Неопределено имеет только одно значение - Неопределено
37 manti
 
18.09.12
13:17
(36) пусть так по ТВОЕМУ, зато сработало!
38 Ненавижу 1С
 
гуру
18.09.12
13:18
(37) по-моему, ты быдлокдер
39 МишКа
 
18.09.12
13:19
(36) Феерический бред - сама 1С.
В нормальных языках неопределенность ничему не равна, в том числе самой себе.
Т.е. из

а=неопределено;
б=неопределено;

следует
а<>б

Как это решено в 1С даже разбираться лень. Ясно, что как бог на душу положит.
40 Mort
 
18.09.12
13:20
(39) В тёплых ламповых языках ?
41 ptiz
 
18.09.12
13:22
(39) "Неопределено" в 1С - это конкретное значение.
42 Noroving
 
18.09.12
13:23
Значения.Значение -  если у тебя никаких значений из регистра не прочиталось, то ты в результате получиш всегда тип "Неопределено" , но значение на которое ты приравнивал сначала у тебя скорее всего будет Null... вот ты и получал неопределено а условие никогда не выполнялось...

Но чтобы не смешить народ я бы написал воттак -

мКолЕдИзмВМесте = ?(Значения.Выбран(), Значения.Значение, 0);
43 Ненавижу 1С
 
гуру
18.09.12
13:24
(39) не путай NULL и Неопределено
только я могу критиковать данную парадигму типов 1С, ибо только я понял ее феерический бред
44 МишКа
 
18.09.12
13:25
(40) Что такое - теплый ламповый язык?
45 МишКа
 
18.09.12
13:28
(43) Согласен. Наличие двух неопределенностей в 1С я даже и не пытаюсь понять. Бесполезно.
46 Ненавижу 1С
 
гуру
18.09.12
13:33
(45) какие времена были
v8: NULL<>Неопределено
ностальгия
47 Mort
 
18.09.12
13:33
(44) Любой язык, который Труъ, в отличие от этого вашего б-гомерзкого 1С
48 Infsams654
 
18.09.12
14:13
из (0)
мКолЕдИзмВМесте = Число(0);

а так если ?
мКолЕдИзмВМесте = Число(Ложь);
мКолЕдИзмВМесте = Число("0");

что-то, вроде напоминает
мКолЕдИзмВМесте = 0;
49 manti
 
18.09.12
15:15
(42) хорошее предложение, нужно попробовать на досуге)
50 Infsams654
 
18.09.12
15:19
(49) в (34) уже было, а если подумать, то и в (29)
51 ssh2006
 
18.09.12
16:15
Процедура Успех()
   
   Перем а, б;
   
   Сообщить(а = б);
   
КонецПроцедуры
52 Mort
 
18.09.12
16:25
(51) Ну по крайней мере в 1С эта функция четко вернет Да. В других языках результат зачастую зависит исключительно от компилятора.
53 Ненавижу 1С
 
гуру
18.09.12
17:04
(52) в 1С процедуры не возвращают значения ))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший