Имя: Пароль:
1C
 
Чем отличается значение типа Неопределено и значение типа Null?
0 Pitbull-1С
 
19.01.09
00:49
Внизу использовано неодназначное определение.У меня с ним возникает путаница. Кто нибудь для себя определил эти понятия? Делимся...

"Значение типа Неопределено используется прежде всего как значение по умолчанию (незаданное значение) для полей с составным типом. Например, если есть реквизит, который имеет составной тип, включающий СправочникСсылка.Товары и СправочникСсылка.Материалы, то значением реквизита по умолчанию будет Неопределено. Так же это значение используется и в других случаях для обозначения неуказанного значения.

Значение типа Null используется при работе с таблицами прикладных объектов. Оно обозначает отсутствие значения поля в выборке. Прежде всего оно используется в результатах запросов выполняющих левое или правое соединение. Поля невыбранных записей таблиц участвующих в таких соединениях будут иметь значение Null. Кроме того, значение типа Null будет иметь, например, реквизит иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами."
1 ТелепатБот
 
гуру
19.01.09
00:49
2 Adept
 
19.01.09
00:55
(0) че непонятного? null вполне определенное пустое значение, которое возникает в результате соединений таблиц в запросах. Неопределенно это то требует определение, поле типа составного, переменная не инициализированная и тд.
3 sam_sam
 
19.01.09
00:56
ты ж сам на свой вопрос ответил. Неопределено это значение. А NULL  это результат, вернее его отсутствие. Что тоже вобщем то результат.
4 Naumov
 
19.01.09
00:57
(0) Вот не правда. Null это не "вполне определенное пустое значение". Это означает, что значения не существует.
5 Naumov
 
19.01.09
00:58
(4) к (1)
6 Adept
 
19.01.09
01:08
(5) - (4) к (2) :)
ну я что то типа того и хотел сказать, нет пересечения множества, из одной таблицы, с множеством из другой, такое множество можно еще назвать пустым и оно вполне определено
7 Pitbull-1С
 
19.01.09
01:12
Вывод

Null = не существует в базе данных
Неопределенно = не выбранно или не определенно
8 Pitbull-1С
 
19.01.09
01:15
А пустая ссылка какой имеет тип?
9 JustBeFree
 
19.01.09
01:20
(8) NULL
10 Dmitrii
 
гуру
19.01.09
01:21
(8) :)) Тип того объекта, на который ссылается. Если поле имеет составной тип, то Неопределено.

Пустая ссылка на справочник Номенклатура имеет Тип("СправочниСсылка.Номенклатура").

(7) Можно еще добавить, что данные в базе не могут иметь тип Null (исключение "реквизит иерархического справочника для элементов-групп, если в метаданных указано, что этот реквизит используется только для элементов не являющихся группами"). А вот тип Неопределено - могут - это реквизиты составного типа, пока они пустые (не определены).

(9) ошибаешься.
11 JustBeFree
 
19.01.09
01:22
(9)Да, я уже понял что поторопился с ответом.
12 Pitbull-1С
 
19.01.09
01:33
(10)Вывод

Null = не существует в базе данных
Неопределенно = существуют в базе данных,но не определенно
13 Dmitrii
 
гуру
19.01.09
01:34
(12) да
14 Pitbull-1С
 
19.01.09
01:48
Вот теперь законченное определение для потомков 8)

NULL это тип данных, принадлежащее отсутствующему значению в базе данных.

НЕОПРЕДЕЛЕННО это тип данных, принадлежащее значению в базе данных, тип которого еще не определен.
15 Dmitrii
 
гуру
19.01.09
01:51
(14) Null - это тип ЗНАЧЕНИЯ, а не тип ДАННЫХ. Данных типа Null нет в природе.
16 Pitbull-1С
 
19.01.09
01:54
NULL это тип, принадлежащее отсутствующему значению в базе данных.
НЕОПРЕДЕЛЕННО это тип, принадлежащее значению в базе данных, тип которого еще не определен.
17 Dmitrii
 
гуру
19.01.09
02:00
Данные - это то что в базе лежит.
Значения - это то, что мы получили из базы, а также то что мы создали пока рботали (переменные всякие). При этом в результате запросов поля типа Null - это то что прикрутила нам платформа 1С в таблицу, а не то что было в базе.

(16) Смотря что ты имеешь под фразой "отсутствующему значению в базе данных". Пустое (не заполненное) значение реквизита имеет тип не Null.
Для числового реквизита - это 0;
Для булевого - Ложь;
Для Строкового - "" (пустая строка);
Для даты - Дата("00010101000000") (пустая дата);
Для ссылочного - пустая ссылка типа ссылка на соответствующий объект;
Для составного - Неопределено;
18 Pitbull-1С
 
19.01.09
02:05
NULL это тип, принадлежащее несуществующему значению в базе данных.
НЕОПРЕДЕЛЕННО это тип, принадлежащее значению в базе данных, тип которого еще не определен.
19 Dmitrii
 
гуру
19.01.09
02:07
(18) Спать пора однако.

Ну и хватка у питбулей. Загрызет кого угодно...
20 Pitbull-1С
 
19.01.09
02:13
(19) спасибо за помощь
21 Dmitrii
 
гуру
19.01.09
02:14
Читать перед сном:

http://ru.wikipedia.org/wiki/NULL_(SQL)

При этом учитывать, что 1С НЕ относиться к числу баз данных, которые поддерживают понятие NULL, для поля таблицы. Поля типа NULL 1C djpdhfoftn только в результате выполнения запросов с левым или правым соединениями.
22 Dmitrii
 
гуру
19.01.09
02:14
djpdhfoftn = возвращает
23 Pitbull-1С
 
19.01.09
02:20
Так как у NULL один литерал, то можно для простоты

NULL это несуществующее в базе данных значение.