Имя: Пароль:
1C
 
Пустые значения
0 NWsFF
 
27.03.09
09:05
Подскажите пожалуйста, в чем отличие следующих значений
Null
Неопределено
ПустоеЗначениеТипа("Тип")
как они связанны друг с другом, в частности интересует как они хранятся в БД.
Спасибо!
1 Rie
 
27.03.09
09:07
(0) Неужели это v7? :-)
2 n2m3m
 
27.03.09
09:08
NULL - это отсутствие значения. С NULL сравнивать нельзя. (NULL = NULL - Ложь, NULL <> NULL - тоже Ложь).
Неопределено - это значение неопределенного типа. Сравнение работает как обычно.
3 NWsFF
 
27.03.09
09:08
извиняюсь, 8.1 просто первый раз на форуме
4 Rie
 
27.03.09
09:09
(0) ПустоеЗначениеТипа - посмотри в общем модуле ОбщегоНазначения
5 NWsFF
 
27.03.09
09:14
Rie
Спасиба :)
n2m3m
Null = Null истина в дебагере(табло)

Так если я не задаю значение реквизиту(обьекту) в базе хранится Null или ПустаяСсылка
6 Valery
 
27.03.09
09:34
1.Null отсутсвие значение в базе данных.
2.Неопределено - пустое значение неопределенного типа
3.ПустоеЗначениеТипа("Тип") - пустое значение определенного типа.
(5) будет ответ 3. Реквизит может иметь и нессылочный тип н-р число.
7 NWsFF
 
27.03.09
10:01
(6)
Спасибо Валерий, вроде все понял. Поэкспериментировал в дебагере.
8 Ненавижу 1С
 
гуру
27.03.09
10:05
это бред от 1С, достаточно было одного NULL и не тип данных, а ко всем типам литерал добавить
9 НЕА123
 
27.03.09
10:06
(7) утверждение в (2) насчет NULL верно для запросов!
в самом языке по другому.
10 Rie
 
27.03.09
10:10
(8) Различие между NULL и пустыми значениями ощущается при левых соединениях и т.п.
11 PR
 
27.03.09
10:16
(0) Читай ИТС
12 Ненавижу 1С
 
гуру
27.03.09
10:20
(10) они бы не отличались и запросы легче строились бы
13 PR
 
27.03.09
10:25
(8) Бред - это восьмой пост в этой ветке.
Умнее фирмы 1С, напиши свое.
14 Ненавижу 1С
 
гуру
27.03.09
10:27
(13) знаешь, SQL используется во многих СУБД, в том числе и процедурный SQL
и почти всем хватает только NULL
15 Ненавижу 1С
 
гуру
27.03.09
10:28
(13) объясни зачем три сущности: NULL, Неопределено, ПустаяСсылка
16 hhhh
 
27.03.09
10:38
(15) в SQL тоже пустые ссылки есть
17 Ненавижу 1С
 
гуру
27.03.09
10:39
(16) ага, это NULL
18 hhhh
 
27.03.09
10:41
(17) почему? пустая строка, пустое число = 0. Разве 0 заменяется NULL-ом.
19 PR
 
27.03.09
10:42
(15) NULL - это отсутствие значения вообще, то есть по сути заявление типа "Здесь рыбы нет. И водоема.".
А Неопределено и ПустаяСсылка - это значение есть, но оно пустое. То есть что-то типа "Здесь рыбы нет. Но водоем есть.".
20 Ненавижу 1С
 
гуру
27.03.09
10:42
(18) нет, но ссылка в SQL это FOREIGN KEY, а он либо NULL либо заполнен действительным ключом (кроме битых)
21 Ненавижу 1С
 
гуру
27.03.09
10:43
(19) и что это дает?
22 Рэйв
 
27.03.09
10:43
(19)Продолжая аналогию...

Неопределено -- здесь бывают рыбы разных сортов, но сейчас ни одной нет.
ПустаяСсылка -- здесь обычно классная селедка(килька/карась), но в данный момент ее всю выловили
23 PR
 
27.03.09
10:44
(21) Это дает информацию о том, есть ли у нас вообще сущность, в запросе например можно понять, есть ли запись или нет.
24 Rie
 
27.03.09
10:47
(21) Тогда уж претензии не к 1С, а к Кодду :-)
У него же и примеры, "что это даёт".

Вообще говоря, в теории баз данных есть два взгляда на NULL. У каждого - свои достоинства и недостатки.

Спор по этому поводу - попросту holy war.
25 Ненавижу 1С
 
гуру
27.03.09
10:48
(23) пример
26 Ненавижу 1С
 
гуру
27.03.09
10:48
(24) возможно
27 hhhh
 
27.03.09
10:51
(20) но это и есть ПустаяСсылка() в 1С. Ты перепутал, увидел одинаковые названия, там NULL и здесь. На самом деле - NULL в 1С - это совсем другое. Оно и к базе-то не имеет отношения, а возникает в результате запроса.
28 Ненавижу 1С
 
гуру
27.03.09
10:54
(27) если ты простой запрос к таблице делаешь в 1С то незаполненные это ПустаяСсылка или Неопределено, NULL только в соединениях
если в SQL, то NULL неважно где
29 Valery
 
27.03.09
10:57
NULL это и есть SQl NULL. Он используеся только для работы базами данных.
Но кроме данных базы, 1С имее свои собственные типы данных. Они имеют свою структуру, свои методы. А SQL не имеет таковых как впрочем и другие СУБД. Они им просто не нужны. Поэтому NULL длЯ СУБД вполне хватает. Неопределено и ПустаяСсылка, это для работы с 1С данными. Чтобы мух с котлетами не мешать
30 Ненавижу 1С
 
гуру
27.03.09
11:00
Получишь ты NULL или ПустуюСсылку метод все равно работать будет одинаково, так что не убедил
31 PR
 
27.03.09
11:01
(25) NULL
Выбрать всех контрагентов с левым соединением по расходным накладным.
Контрагент есть, а расходных накладных по нему нет.

ПустаяСсылка
Выбрать всех контрагентов, у которых основной договор пустой.
Поле основной договор есть, но оно пустое.

Для NULL недоступны реквизиты, доступные для пустых значений.
И NULL в SQL достаточно потому, что там тупо нет ссылок, там исключительно примитивные типы данных.
32 Ненавижу 1С
 
гуру
27.03.09
11:06
(31) ну я в курсе результате запроса, ну были бы там и там NULL и что?
>>Для NULL недоступны реквизиты, доступные для пустых значений.
и чему они равны? тоже ПустаяСсылка = NULL
>>И NULL в SQL достаточно потому, что там тупо нет ссылок, там исключительно примитивные типы данных.
внешние ключи с примитивным типом можно интерпретировать как ссылки
33 Ненавижу 1С
 
гуру
27.03.09
11:28
Как то все неубедительно
34 PR
 
27.03.09
11:33
(33) Печально.
35 Ненавижу 1С
 
гуру
27.03.09
11:34
(34) особенно если посмотреть за рамки 1С
36 Rie
 
27.03.09
11:35
(33) См. Дейт, Введение в базы данных, гл. 18.
Там как раз разбирается различие между NULL и UNKNOWN.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn