Имя: Пароль:
1C
 
Я, гуру, нарвался на ошибку, сравнивая Ложь с Нулем
0 Гений 1С
 
гуру
22.07.08
12:16
Я думал что Ложь и 0 - это разные значения, оказывается одинаковые, а у меня было улсовие:
Если Х <> 0, т.е. Х принимало значения Истина, Ложь и 0.
1 Дуб
 
22.07.08
12:17
(0) жениться тебе надо..
2 Guk
 
22.07.08
12:17
такой уж ты гуру...
3 Defender aka LINN
 
22.07.08
12:17
(0) Гуру не знает про неявное преобразование?
4 Ненавижу 1С
 
гуру
22.07.08
12:19
(0) поподробней напиши
5 Mitriy
 
22.07.08
12:21
(4)+1 желательно с примерами, проверками, доказательствами и солидными комментариями...
6 Кураж
 
22.07.08
12:21
(0) Ты гуру?!! Бу-га-га!!!
7 NcSteel
 
22.07.08
12:22
(5) а что тут демонстрировать? все и так ястно
8 wertyu
 
22.07.08
12:23
(0) поди хотел Null избежать, так это лучше в самом запросе
9 ЗлобнийМальчик
 
22.07.08
12:23
(0) Это точно??? как то странно это всё. Надо доку почитать...
На работу приду  - потестю...
10 Qvz
 
22.07.08
12:23
(0) Ложь и 0 - это разные значения. Тут неявное приведение типов. Ложь приводится к числу 0.
Следующая конструкция сработает как надо:

Если ТипЗнч(Х) = Тип("Число") И Х <> 0 тогда
КонецЕсли;

А еще радует то, что Булево иожет принимать значения Истина, Ложь и Неопределено - пару раз натукался на это, например

Если ЗначБулево тогда
КонецЕсли;

может вылетать с ошибкой, если ЗначБулево = Неопределено.
11 Кадош
 
22.07.08
12:24
Рекомендовать в базу знаний?
12 Zaval
 
22.07.08
12:24
Почему-то вспомнилось:
"В чем разница между Биллом Гейтсом и Богом? - Бог не считает себя Биллом Гейтсом..."
13 Terv
 
22.07.08
12:25
чувствую еще одна г*** статейка появиться в книге знаний
14 ЗлобнийМальчик
 
22.07.08
12:26
(10) как то нелогично, ИМХО. Ведь тогда, следую такой логике "123" =  123 должно давать истину
15 ЗлобнийМальчик
 
22.07.08
12:27
(13) воистину, кто хочет - читает, кто не хочет - не читает
16 Qvz
 
22.07.08
12:27
(0) Сорри, ошибся.

Если ТипЗнч(Х) = Тип("Булево") тогда
КонецЕсли;
17 Dimochek
 
22.07.08
12:28
(0) проф разработка рулит :)
18 Mitriy
 
22.07.08
12:28
(10) аха, любая переменная может принимать Неопределено...

обалдеть сколько открытий...
19 Qvz
 
22.07.08
12:30
(14) Это не для всех типов работает. В частности, Булево <-> число работает всегда в обе стороны.
20 Господин ПЖ
 
22.07.08
12:30
гуру разработки в условиях электрички опять сделал открытие...
21 Нуф-Нуф
 
22.07.08
12:31
есть такой статус с аське "гуру кунилингуса". мож он про это?
22 Qvz
 
22.07.08
12:32
(18) Речь идет не о переменных, а о типах значений. Не путай кислое с пресным.
23 TamerlanDE
 
22.07.08
12:33
(17) +1 Особенно листинг 4.20

Если "истина" Тогда
 Сообщить("Истина");
Иначе
 Сообщить("Ложь");
КонецЕсли;
24 Mitriy
 
22.07.08
12:39
(22) можно поподробнее? на примерах, желательно?
25 Stepa86
 
22.07.08
12:39
(19)

(0 = Ложь)                  - Истина
(1 = Истина)                - Истина
(2 = Истина) ИЛИ (2 = Ложь) - Ложь

После непонятных ошибок с переменными теперь всегда проверку булевых переменных пишу как

Если БулеваяПерем = Истина Тогда
26 Ненавижу 1С
 
гуру
22.07.08
12:43
все это тупой нетипизированный 1С-недоязык
27 Terv
 
22.07.08
12:42
вот оно поколение Бэйсика...
28 Qvz
 
22.07.08
12:44
(24) Угадай, что будет выведено в окно сообщений?

   Массив = новый Массив;
   Массив.Добавить(Тип("Число"));
   ОписаниеТиповЧисло = новый ОписаниеТипов(Массив);
   
   ТЗ = Новый ТаблицаЗначений;
   Тз.Колонки.Добавить("Число", ОписаниеТиповЧисло);
   
   Строка = ТЗ.Добавить();
   Строка.Число = Неопределено;
   
   Сообщить(Строка.Число);
29 КонецЦикла
 
22.07.08
12:43
Гениталий, ты мастер йодо!
30 Qvz
 
22.07.08
12:47
(19) Ага, нет, чтобы как в С: 0 - ложь, Не 0  - Истина.
Так, именно 0 <-> Ложь, 1 <-> Истина, <0,>0 - не ложь и не истина.
31 Vovan1975
 
22.07.08
12:47
(0) Скромно ты как: "Я, гуру"... Череп на мозг не давит?
32 Mitriy
 
22.07.08
12:48
(28) а при чем тут тип булево со значением Неопределено?
33 Terv
 
22.07.08
12:51
Булево(0)    ложь
Булево(1)    истина
Булево(-1)    истина
0 ИЛИ Истина    истина
0 И Истина    ложь


ЗЫ. что здесь непонятного?
34 Ненавижу 1С
 
гуру
22.07.08
12:53
(33) вот буквы, вот цифры...
35 Stepa86
 
22.07.08
12:57
(33) Настоящим гуру и так все понятно =)
36 Qvz
 
22.07.08
13:00
(32) Я ошибся, значения типа булево может принимать только Истина или Ложь. Если в указанный пример подставить везде Булево, то неопределено присвоить нельзя.
37 Медвед1Сник
 
22.07.08
13:01
(0) Настоящие гуру в таком случае делают харакири.
38 Mitriy
 
22.07.08
13:02
(36) угу :)
39 Поручик
 
22.07.08
13:12
«Акела промахнулся» — кричали молодые волки (С)
http://caricatura.ru/erotica/gorbachev/pic/257.jpg
40 Лефмихалыч
 
22.07.08
13:16
(0) чем думал?
41 hhhh
 
22.07.08
13:18
(36) может быть НЕОПРЕДЕЛЕНО.

Например, если реквизит типа Булево определен в справочнике. И у него флажок "Только для элементов". Тогда если взять группу справочника и посмотреть у нее этот реквизит: получим НЕОПРЕДЕЛЕНО!
42 Лефмихалыч
 
22.07.08
13:23
(36) можно, например, у элемента формы типа Булево есть флажок "Три состояния"
43 Mitriy
 
22.07.08
13:24
(41) (42) гы... как интересно... еще версии будут? :))
44 Mitriy
 
22.07.08
13:27
(42) кстати, добавь реквизит с типом Булево, вставь в форму элемент с данными этого реквизита и поставь галочку "три состояния"...
45 hhhh
 
22.07.08
13:27
(43) еще основная версия (0).
46 Лефмихалыч
 
22.07.08
13:31
от ить...
"При этом типом редактируемого значения является Число."
а мужики-то и не знают... (с)
47 Леха Дум
 
22.07.08
14:00
Думается мне, будет еще одна "хитрая" функция от Гения....
48 Гений 1С
 
гуру
22.07.08
17:37
(4) Ну у меня была функциия:

Функция ОбязательноеПоле(ИмяРеквизита)
   Р=Новый Структура("Использовать, Обязательно", ложь, ложь);
   Если ИмяРеквизита = "ИНН" Тогда
       Если обЗначениеНеЗаполнено(ВидКонтрагента) Тогда
           Р.Использовать = ложь;
       ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.ЧастноеЛицо ИЛИ ВидКонтрагента = Перечисления.ВидыКонтрагентов.Нерезидент Тогда
           Р.Использовать = истина;
           Р.Обязательно = ложь;
       ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Организация ИЛИ ВидКонтрагента = Перечисления.ВидыКонтрагентов.ИндивидуальныйПредприниматель Тогда
           Р.Использовать = истина;
           Р.Обязательно = истина;
       ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.ВнутреннееПодразделение Тогда
           Р.Использовать = ложь;
       КонецЕсли;
   КонецЕсли;
   Возврат Р;
КонецФункции

Так я возвращал истина, если обязательное, ложь если не обязательное и 0, если не используется.На том и попалился.
49 NewNick
 
22.07.08
17:47
(48) узнаю фирменный стиль "гуру" )))))))))
50 wPa
 
22.07.08
17:56
(48) а если лето и дождь то 1
51 Гений 1С
 
гуру
22.07.08
19:00
(49) Почерк таланта!
52 Gepard
 
22.07.08
19:03
(2) +1
53 Maлblш
 
22.07.08
19:07
(1)+2 :)
54 H A D G E H O G s
 
22.07.08
19:40
Пролетела стая птыц и закапало с ресниц. Так, все отметились? Согласен, круты. Завтра про Ну из Упп спрошу, чтоб все были!
55 wPa
 
22.07.08
19:57
(54) Забей и иди домой. Нет в УПП НУ. Это миф.
56 Маркетолог
 
22.07.08
20:06
(0) Если это тебя утешит , то я тоже сегодня списал товар со склада при проведении реализации по цене продажи, а не по себестоимости.
Теперь вот хожу и посыпаю голову пеплом.
57 Maлblш
 
22.07.08
20:15
(56) :D вроде до тяпницы далеко))
58 Маркетолог
 
22.07.08
20:24
(57) Тем не менее уже 7-й Хугарден в ход пошел