Имя: Пароль:
1C
 
еще раз про NULL в полях примитивных типов
0 Ненавижу 1С
 
гуру
25.08.10
17:02
почему 1С не дало простым смертным в элементарные (строки, числа, булево, даты) типы заносить значение NULL?
приходится вводить дополнительные флажки, как сами же сделали в договорах:
КонтролироватьСуммуЗадолженности и ДопустимаяСуммаЗадолженности,
КонтролироватьЧислоДнейЗадолженности и ДопустимоеЧислоДнейЗадолженности
вместо того, чтобы внести спокойно NULL
1 mikecool
 
25.08.10
17:04
ниче не понял
2 mikecool
 
25.08.10
17:04
типа не указано значение для тебя не нулл?
3 mikecool
 
25.08.10
17:05
и самый главный вопрос - нафига?
4 Ненавижу 1С
 
гуру
25.08.10
17:07
(2) не NULL ибо нужно знать отличие, что 0 и NULL это разные вещи
ибо 0 дней тоже можно контролировать, а NULL как раз тот самый флажок
5 Ненавижу 1С
 
гуру
25.08.10
17:07
к тому же теоретически тут может быть с флажком понос: флажок не стоит, а значение есть
6 Жан Пердежон
 
25.08.10
17:10
(0) еще в прошлых версиях 0 часто отображался как пустое значение...
7 rs_trade
 
25.08.10
17:10
составной тип, и инициализация начальная реквизита
8 H A D G E H O G s
 
25.08.10
17:12
Автор, я тебя узнал, даже не заходя в ветку!
9 Ненавижу 1С
 
гуру
25.08.10
17:12
(6) то есть гнилое наследие 7.7 и более ранних версий?
10 Ненавижу 1С
 
гуру
25.08.10
17:12
(8) я тебя поджидал здесь
11 Ненавижу 1С
 
гуру
25.08.10
17:13
(7) прелестно, нет лучше уж флажок
12 H A D G E H O G s
 
25.08.10
17:14
Засадный хищник, блин.
13 luns
 
25.08.10
17:14
(4) В типовых отдельно флаг: контролировать и отдельно поле: сколько
и думается что это верно.
иначе юзер фиг поймет глядя в пустое полу, что это? 0 или не заданное значение.
или надо в цифровое поле на форме Null писать?
14 Kreont
 
25.08.10
17:16
(0) Ага, и расширить для логических, что б было:
Ложь
Истина
Незнаю
Сомневаюсь
Вроде
Пофик
и т.д.)
15 NewNick
 
25.08.10
17:16
(13) надуманно.
(0) наверно потому что в простых типах нет места значению NULL - вишь как все просто
16 Megas
 
25.08.10
17:16
Предположим ты в число дней поставил null и что ты получил?

Делай тогда тип = Число/Строка и Пиши свой "NULL" если так желается!
17 Gisborn
 
25.08.10
17:18
(13) формат представления примитивных типов никто не отменял. Для чисел есть формат представления 0, можно было бы еще и NULL тоже самое сделать.
(16) получил что настройки контроля не заданы, следовательно, контролировать не надо.
18 Megas
 
25.08.10
17:18
Используй заместо null -666.66 (думаю мало у кого встречается такая цифра)
19 luns
 
25.08.10
17:18
(15) Да? Т.е. на форме в поле ввода должно быть или число или Null, как ты это представляешь?
20 rs_trade
 
25.08.10
17:19
как подумаешь что еще в операторах сравнения надо учитывать что null. на фиг все это надо
21 Megas
 
25.08.10
17:19
(17) Да я понял конечно ...  
Ещё 1 реквизит "КонтрольНеЗадан" - булево
22 NewNick
 
25.08.10
17:20
(19) канеш. нафига плодить сущности. от того что в одну мудреную переменную запихнуть сразу и флажок и цифирку не прибудет ни экономии памяти ни ясности при работе с оной.
23 Megas
 
25.08.10
17:21
А вообще правильно говорят что в "поле ввода" хрен поймёшь 0 или null иные Дятлопрограммеры то null от 0 не отличают , а ты пользователей хошь заставить!
24 NewNick
 
25.08.10
17:22
(23) ушел от темы - пользователей это ваще никак касаться не должно(если ты канеш не дятлопрограммер)
25 Ненавижу 1С
 
гуру
25.08.10
17:23
(18) "волшебные" константы? фигня
26 Ненавижу 1С
 
гуру
25.08.10
17:24
(13) не надо проблемы архитектуры оправдывать интерфейсом, интерфейс разберется сам - оставляй там запросто флажок
27 H A D G E H O G s
 
25.08.10
17:24
(25) По старой памяти - dBase поддерживает null ?
28 Ненавижу 1С
 
гуру
25.08.10
17:24
(14) не прикрытый слив
29 Ненавижу 1С
 
гуру
25.08.10
17:24
(27) каким он боком в 8?
30 H A D G E H O G s
 
25.08.10
17:25
(29) Как наследие от 7.7
31 Ненавижу 1С
 
гуру
25.08.10
17:25
(20) ну а так надо учитывать флажок, никак не лучше
32 Ненавижу 1С
 
гуру
25.08.10
17:26
(30) я уже писал, что такое хреновое наследие надо смело выкидывать напрочь
33 Жан Пердежон
 
25.08.10
17:28
(32) напиши в блог Нуралиеву
34 H A D G E H O G s
 
25.08.10
17:28
(32) Как бы это бы могло объяснять отсутствие поддержки null в полях.
Так поддерживается null в dBase?
35 Megas
 
25.08.10
17:28
Короче null было бы хорошо.
Не сделали наверное чтоб не заморачиваться.
Запретили во всех полях всех таблиц значение null наверное, может даёт прирост какой ?
36 Ненавижу 1С
 
гуру
25.08.10
17:30
никак не могу понять щенячьей радости и столь громких попыток оправдать этот продукт
нужно смело и критически признать, что в нем много недостатков, но приходится в этом ... ковыряться
37 Жан Пердежон
 
25.08.10
17:31
(36) а кто оправдывает? всё так...
38 Megas
 
25.08.10
17:31
(36) Даёт хлеб наш насущный!
А так да, есть куча мелких неудобств!
39 H A D G E H O G s
 
25.08.10
17:32
(36) Ты в 1С с Дельфи пришел?
40 Ненавижу 1С
 
гуру
25.08.10
17:32
(39) да, отчасти, хотя ничего коммерческого на нем не продал и толком не заработал
41 H A D G E H O G s
 
25.08.10
17:42
(40) А в 1С - значит заработал.

Почти уверен, что в Дельфи ты сможешь реализовать учетную систему с поддержкой NULL, многопроцессорностью, и прочими вкусностями.

Но вот 1С - таки юзаем.
Так какого хрена?
42 rs_trade
 
25.08.10
17:44
(41) дай человеку высказаться ))) может это у него больная тема с галочками, накипело....
43 H A D G E H O G s
 
25.08.10
17:46
(42) Которая длиться уже года два.
44 supremum
 
25.08.10
17:47
45 awa15
 
25.08.10
17:49
(0) Значения NULL в базе данных 1C использует в своих целях.
Например, реквизиты иерархических справочников при хранении в таблице БД допускают значение NULL. При этом значение NULL принимают только реквизиты, не имеющие смысла в текущей записи (например, запись является группой, а использование реквизита "для элемента").
46 supremum
 
25.08.10
17:50
(45) в (0) есть своя логика. Но ИМХО пофигу.
47 awa15
 
25.08.10
17:55
(46) Конечно, пофиг. 1С, имхо, сделала так, а не по другому, только чтобы удобнее было ей, а не Ненавижу 1С. Ненавижу 1С хочет, чтобы было удобней ему, а не 1С. Каждый остается при своем.
48 rs_trade
 
25.08.10
17:59
(47) и правильно сделала. в общем такие ситуации встречаются не так часто, поэтому  разработчик может реализовать подобную логику сам. а вот постоянно гемороиться с null как то не охота
49 supremum
 
25.08.10
18:04
+(46)
Переменная есть ссылка на некоторую область памяти.
Работа с ней состоит из следующих этапов:
1) Выделение памяти
2) Инициализация
3) Работа с ней
4) Освобождение памяти.
и вот какое значение в переменной должно быть после п. 1? Никакого.
И в (0), по сути, это и говорится.

В 1С этого не будет из-за отсутствия строгой типизации переменных, как в VB. Но есть в 1С так же "мягкая типизация". Вроде это должно упростить жизнь разработчикам.

Вот цитата Радченко:
"
Типизация переменных в языке не жесткая, т. е. тип переменной определяется ее значением. Переменные не обязательно объявлять в явном виде. Неявным определением переменной является ее первое упоминание в левой части оператора присваивания. Возможно также явное объявление переменных при помощи соответствующего оператора.

Еще по этому поводу написно здесь:  v8.1c.ru/overview/Common... »»

По поводу документированности/недокументированности неявного преобразования типов это скорее вопрос здравого смысла, а не вопрос использования тех или иных возможностей. Пишите код в соответствии с синтакс-помощником и тогда этот вопрос отпадет сам собой.
"
50 Расколбас
 
25.08.10
18:16
А NULL из базы кроме как запросом можно вытащить? В таблицах отсутствующее значение и так всегда NULL, несмотря на то какой тип реквизита у таблицы. Может быть и число и строка, а значение будет NULL.
З.Ы. Нифига не понял.
51 Расколбас
 
25.08.10
18:19
Блин, помню первую тему про NULL и Неопределено, вот народ зажигал. Не хуже чем в ветках про Луну.
52 Новенький_2009
 
25.08.10
18:27
просто задумайтесь: в каком пространстве находится автор, вопрошая (0) =)

Надо голосовалку прикрутить было: вы хоть раз над этим задумывались.
53 supremum
 
25.08.10
18:32
(52) Зачем? Думаю это пространство достаточно объективное.
54 sapphire
 
25.08.10
18:37
(49)
Переменная есть ссылка на некоторую область памяти только не внутри 1С.
Изначально, память выделяется при инициализации переменной.
55 supremum
 
25.08.10
18:54
+(49) Нужно добавить еще пункт 0
0) Объявление переменной.
После объявления переменная не ссылается на область памяти.
Ссылку она получает после пункта 1)

Ссылка, в общем случае есть просто адресс памяти - тип pointer в паскале. И вот после объявления переменной ссылка ее будет равна nil, аналог в 1С Неопределено (ИМХО).

После п. 2) переменная есть и есть структура и есть под эту струтктуру память. Аналог в 1С ПустаяСсылка().

п. 4) реализуется сборщиком мусора.
56 supremum
 
25.08.10
18:58
+(55) При этом использование типизированных указателей в паскале весьма просто и красиво решает вопросы в (0).
57 Ненавижу 1С
 
гуру
26.08.10
08:51
вы пожалуйста NULL с nil не путайте уважаемые
и вообще не надо объекты путать с stored-данными
58 patapum
 
26.08.10
09:01
(0) в другой ветке цитировали анекдот:
меня моя жена всем вроде устраивает, но одна поза из камасутры у нее никак не получается...
Ненавижу, тебе не кажется, что это и про тебя?
А если тебе так не нравится 1с, напиши свою платформу, великую и прекрасную, и, главное, поддерживающую значение NULL!!!
59 DmitrO
 
26.08.10
09:10
согласен с (0)
60 Sammo
 
26.08.10
09:12
Сразу проблемы с операциями сравнения, сумиирования (сколько будет 1 + NULL) и т.д.
Стоит ли овчинка выделки?
61 Sammo
 
26.08.10
09:19
Хотя есть забавность - в базе числовые (например) numeric, allow nuls = true

В общем, имхо, не сильно востребованная вещь, реализуемая другими методами.
62 Ненавижу 1С
 
гуру
26.08.10
09:40
(60) проблемы надуманные, 1+NULL даёт NULL, и это каждый страус знает, и нечего тут морочиться
63 supremum
 
26.08.10
09:50
(57) Никто и не путает. Просто нужно все разложить по полочкам, тогда станет всем ясно что вы имели ввиду в (0).
64 supremum
 
26.08.10
09:52
+(56) Далее, в 1С мы оперируем не таблицами базы данных, а прикладными объектами, которые отображаются в базу.

Логика работы с ними укладывается в (49) и (55).
65 Ненавижу 1С
 
гуру
26.08.10
11:19
(64) в 1С мы оперируем как записями таблиц (которые названы ссылками) так и прикладными объектами (через ссылки на них как в делфи/шарпе)
66 Speshuric
 
26.08.10
11:26
(62) Проблемы-то надуманные, но 1+NULL не всегда NULL:

ВЫБРАТЬ
   СУММА(Запросик.Значение) КАК Значение,
   1 + NULL КАК Значение2
ИЗ
   (ВЫБРАТЬ
       1 КАК Значение
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       NULL) КАК Запросик
67 Ненавижу 1С
 
гуру
26.08.10
11:28
(66) 1+NULL всегда NULL, а агрегатные функции это совсем про другое
я тоже знаю разницу между
СУММА(А+Б) и СУММА(А)+СУММА(Б)
68 supremum
 
26.08.10
12:00
(65)
1) Пояните мысль, что означит "оперировать записями таблиц, которые названы ссылками".
2) Думаю в (0) справедливее было бы тогда использовать Неопределено.
69 Ненавижу 1С
 
гуру
26.08.10
12:02
(68) всю жизнь знал про запись таблицы, нов 1С это ссылка на элемент справочника, подмена понятия
неудобно в плане того, что Ссылка в программировании закрепилось за другим понятием
70 Ненавижу 1С
 
гуру
26.08.10
12:03
(68) вот мы и подошли к главной теме, что нет никакой разницы между НЕОПРЕДЕЛЕНО и NULL, но 1С решило по другому
71 supremum
 
26.08.10
12:36
(69) Наверное, все-таки получаем ссылку не на строку БД, а на экземпляр класса элемента справочника, но заполнение его происходит на основании данных таблиц.
(70) Если NULL в смысле третьего правила Кодда, а НЕОПРЕДЕЛЕНО в смысле неинициализированного типизированного указателя, то да, разницы нет )
72 Ненавижу 1С
 
гуру
26.08.10
12:42
(71) Ссылка как не крути это ближе к записи, а вот объект это да
про NULL хоть сошлись ))
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn