(3) функцию сделайте, в которой запросом "Выбрать Null" получите значение с типом NULL, а дальше переменной приравнять значение из этой функции. или просто приравнять null (может и прокатит, не пробовал).
(36) Зачем его в запрос засовывать?
Задача - изменить данные , а не их вид...
Ну засунете вы в один запрос , а другой отчет покажет совсем другую картину...
(7)Нельзя так делать. Необходимо устанавливать значение Неопределено.
Установив значение NULL, вы потом в бух отчетах будете видеть "разъехавшиеся" остатки и обороты по казалось бы одному пустому значению аналитики.
(7) Вы изначально не верно понимаете суть NULL, и от этого ваши трудности....
NULL - это не значение реквизита.
NULL - это отсутствие реквизита в принципе, то есть в запросе , или другой выборке вы смотрите набор каких-то данных, так вот если где-то NULL то это не значение каких-то данных, это полное отсутствие данных в этой выборке.
NULL не может сравниваться ни с чем в принципе исходя из своей сущности. Ибо NULL - это не Неопределено , - это Отсутствие , и это 2 большие разницы.
Поэтому ваше желание невыполнимо на мой взгляд, записать в регистр NULL невозможно.
Если кто-то сможет меня переубедить - буду счастлив получить просещение.....
(14)
Да, всё так. Но бывают исключения.
Как-то пришлось указывать как в (10) через скрипт NULL вместо какой-то левой валюты в регистре бухгалтерии, вероятно, вышло так что "вдруг" стало два рубля, один удалили, но он в NULL не превратился. Поэтому пришлось скриптом.
(1)
может быть тестирование и исправление поможет?
(15) А удаляли программно и без проверки ссылочной целостности?
Так вы просто родили скорее всего битую ссылку и именно ее показывал ваз запрос... Нет?
(16)
Как удаляли не знаю. Было уже сильно давно, поэтому даже не могу сказать, что было записано в качестве значения измерения Валюта, то ли какое-то значение, то-ли куча "нулей" - пустая ссылка. Но в данном контексте это не важно.
Важно, что нужно было как раз NULL установить. То есть не как "отсутствие реквизита", а как отсутствие значения.
Не очень понял про запрос, показывающий битую ссылку? Речь совсем о другом.
(19) Нет... ;-)
Вы смотрите результат выполнения запроса.
Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было.
Ни записать NULL никуда нельзя ни увидеть этот NULL при открытии объекта напрямую в его собственной форме .
(21) Чем принципиально , а не по количеству букв отличаются "присвоить значение" , "записать", "установить" (в смысле значения ясно) для программиста 1С в контексте обсуждаемого вопроса конечно?
;-)
Тем более автор изменил уже текст вопроса, в пояснение - ему нужно "присвоить значение"
(25) ну какой ответ был дан в (10) - там намеки , причем на мой взгляд шуточные...
Вы и в SQL не сможете присвоить NULL, так же как сейчас не смогли в программе 1С.
Именно потому что NULL - не значение , а именно "Результат поиска" если ничего не нашли вот это и есть NULL
(25) Отладчик и показывает вам , что Тип ващей переменной не найден ибо вы его не описали ----
А я уже писал, что NULL - это перевод - "Не найден" (вариант - "Отсутствует" менее подходит, ибо русский язык очень богат)
(31) Подытоживая всю беседу можно сказать одно-
Сохранить NULL в любой объект базы данных не выйдет.
Можно установить промежуточной переменной и она даже покажет в отладчике его как Null, но при сохранении в базу данных
установится значение "Неопределено" и будет отображаться именно как Неопределено , при чем даже в запросе.
Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе.
(35) Внешние они и есть ВНЕШНИЕ - это не собственность базы данных...
Слово "Внешний" несет в себе смысл - что есть область данных базы и есть что-то вне ее...
Я повторюсь
Сохранить NULL в любой объект базы данных не выйдет.
Иначе покажите как и куда вы предлагаете внести NULL
Иначе покажите как и куда вы предлагаете внести NULL
Я про это высказывание: "Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе."
Поля внешних источники данных можно использовать как реквизиты формы.
Null можно внести в допустимые типы поля ввода. Без них не будет работать обмен с полями допускающими null, если нужно очистить реквизит.
Так что чистый NULL можно увидеть не только в результате выполнения текста запроса к базе.
(39) Готов уточнить свою фразу
"Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе." = "Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса и никак иначе."
(41) Вы невнимательны...
Покажите мне картинку, на которой будет отображен NULL, как значение любого реквизита базы данных,обязательно - не результат любого запроса и не временной переменной...
От того что можно использовать как ТИП ничего не меняется....
Картинку в студию!
(42) Я вот даже и не знаю. Вы точно понимаете, что такое NULL? Какое такое значение NULL реквизита базы данных? Null это вообще отсутствие значения. Null может быть только типом и никак иначе.
(43) Я уже устал ЭТО объяснять в этой ветке, и тут вы со своим "Fe"...
В теме был вопрос "Как присвоить значение NULL..."
Я же и утверждаю уж несколько дней подряд здесь, что Невозможно присвоить и соответственно увидеть БЕЗ запроса.
На вашей картинке Null не относящийся к теме.
Я прошу показать не в отладке и уж тем более не в типе, а в форме любого элемента, и вы прекрасно понимаете что это невозможно, так зачем же вы противоречите мне?
(44) Т.е. в запросе Вы точно можете показать Значение Null? Могу Вас разуверить. Там не Значение, а Тип.
Т.е. говоря объективно, по Вашим словам, что только в запросе есть Null, а в элементах формы (допустимые типы) его не может быть, потому что это тип, а не значение.
Теперь понятно?
(45) Уж будьте так любезны прочтите всю тему...
Честно повторять только что написанное - Нонсенс.
Но для тех кому видимо лень читать...
Вы смотрите результат выполнения запроса.
Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было.
Ни записать NULL никуда нельзя ни увидеть этот NULL при открытии объекта напрямую в его собственной форме .
(46) что не понятно в фразе: "в запросе Вы точно можете показать Значение Null? Могу Вас разуверить. Там не Значение, а Тип. "
Теперь Ваши слова: "Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было."
Слова по форме правильные, но Вы вкладываете в них смысл, что Null это значение. А это не так.
(48) по ходу вы просто желаете поспорить на ровном месте...
Я НЕ ВКЛАДЫВАЮ в свои слова ИНОГО смысла - NULL - это не значение , это полное отсуствие любого значения! И именно поэтому его Невозможно никуда записать или установить. Установить можно значение "Неопределено"...
И даже начинающему 1С-нику видны 2 большие разницы между Значением и Полным его отсутствием...
(55) В результате запроса попробуйте увидеть а не в отладке...
Я же изначально отказался про отладку говорить....
Ведь пользователь не имеет доступа к отладкам...
Это область программиста
(56) как пользователь не имея доступа к отладке будет иметь доступ к результату запроса? Это вообще про что?
Вот для кода:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 3
| Товары.Ссылка КАК Ссылка,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
|ИЗ
| Справочник.Номенклатура КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
| ПО ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка
| И (ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL)";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("Количество = "+ВыборкаДетальныеЗаписи.КоличествоОстаток);
Сообщить("Тип = "+ТипЗнч(ВыборкаДетальныеЗаписи.КоличествоОстаток));
КонецЦикла;
(57) Вы снова подтасовываете!
Я прошу результат запроса а не сообщения...
Покажите результат запроса в любой консоли и тогда вы поймете о чем я...
Консоль покажете - я соглашусь!
(58) я начал догадываться. Вы текстовое представление типа для показа пользователю в СКД пытаетесь подсунуть? А если текстовое представление будет "Данные не обнаружены", то тоже это сообщение типом посчитаете?
(64) Речь про то ЧТО мы видим в результате запроса . ВСЕ без всевозможных обработок ЭТОГО результата, ибо я нигде не упоминал о какой либо обработке результата запроса, я говорил именно о результате.
(65) неужели не понятно, что видите постобработку в текстовом представлении для показа пользователю? Там же простое текстовое поле табличного документа. В нем Null просто невозможно представить. Вот и переводят в текстовое представление, которое может быть любым тестом и которое программисты платформы вот так придумали представлять.
(70) сначала нужно определиться с понятием "БЕЗ постобработки". Любые полученные данные в 1С проходят постобработку. Типы подтягиваются не sql, а уже 1С.
Наиболее близкий результат, это обход выборки.
(70) а, вот хороший вариант узнать тип в самом sql:
ВЫБРАТЬ ПЕРВЫЕ 3
Товары.Ссылка КАК Ссылка,
ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК ТипNull
ИЗ
Справочник.Номенклатура КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ПО (ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка)
И (ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL)
(72) Нам тип значения зачем изначально ?
Мы говорили о возможности записи в данные и о том что в этих данных (не в типах ) вы не увидите Null.
То что существует ТИП Null никто же не спорит!
Мы не ищем ТИП в запросах, мы ищем ДАННЫЕ!
Но видим NULL...
Человек изначально спросил КАК этот NULL Записать в какие-то данные.
Вы пристали со своими типами...
Мы не о типах беседуем!
Тип есть и ясно, что если в элементе данных нет , то тип у этого элемента Null . Ну и что?
(74) Я изначально знаю, что NULL Это NULL(полное отсутствие данных) и Null- это Null (это тип данных), и что это разные вещи.
И если вы наконец поняли что я говорил с самого начала , то это тоже хорошо...
(60)(61) хаха. вот это вообще жесть. По Вашему в СКД(Консоль запросов) показывает "ЧИСТЫЙ" результат, показывает внутренние тиы sql?
Т.е. показывая в текстовом поле: <NULL> это будут читые Значения? Именно с угловыми скобками и большими буквами? Именно значение, так как в поле показывается не тип, а значение?
Так вот, это просто текстовое представление пользователю, что там не пустое значение, а именно отсутствует значение. Что бы пользователь не спутал с пустой строкой.
И попробуйте дважды щелкнуть по такому "значению". Откроется его тип.
(45) Вы мне что пытаетесь доказать?
Что NULL запросе - это Тип? - это глупость...
В запросе вы получаете значения , либо в случае с NULL - их отсутствие.
Запрос не выдает типы значений...
(21) Я вроде понял наши расхождения...!
Я размышляю категорией 1С программиста...
Вы же после (10) расширили обсуждение до прямого изменения данных SQL. NULL в 1С и в SQL немного не совпадают возможно (глубочайшими познаниями SQL не похвастаюсь)...
Но мы то обсуждаем 1С...
Тогда уточните как можно "установить" NULL для файловой базы?
Ну смоделируйте любой элементарный справочник (или регистр - это не принциально) и покажите мне отрыв его в 1С , что в нем "установлен" NULL в любой вами назначенный реквизит...
(24)
"Тогда уточните как можно "установить" NULL для файловой базы?" - не знаю.
"или регистр - это не принциально) и покажите мне отрыв его в 1С" -
ВЫБРАТЬ ПЕРВЫЕ 5
Хозрасчетный.Период КАК Период,
Хозрасчетный.НомерСтроки КАК НомерСтроки,
Хозрасчетный.Активность КАК Активность,
Хозрасчетный.СчетДт КАК СчетДт,
Хозрасчетный.СчетКт КАК СчетКт,
Хозрасчетный.ВалютаДт КАК ВалютаДт,
Хозрасчетный.ВалютаКт КАК ВалютаКт,
ВЫБОР
КОГДА Хозрасчетный.ВалютаДт ЕСТЬ NULL
ТОГДА "Это нал"
ИНАЧЕ "Это НЕ нал"
КОНЕЦ КАК НалИлиНеНал
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
Вот запрос.
Данные попадают при проведении документов, которые являются регистраторами РБ.
Записать самостоятельно, если через SQL Скрипт никак не считается :) можно через ВнешнийИсточникДанных - это вроде как "1С".
Человеку нужно было решить задачу, со своей колокольни я предложил то, что знаю.
(29) Ну так я и не спорю что в результате запроса вы получите и увидите NULL. Я как раз именно об этом и говорю с сакмого начала, что только в запросе вы можете его получить, но именно присвоить не выйдет.
Ибо присвоится "Неопределено"...
При чем для меня сегодня вообще новостью было , что
Переменная=Null;
вообще будет работать... Но как оказалось да =Присваивает "Неопределено".
(33)
Код "Переменная=Null", не присваивает Неопределено, а присваивает Null". Ну если конечно, можно употреблять "присваивает" для отсутствующего значения. Однако тип точно Null устанавливает, см.
Код "Переменная=Null", не присваивает Неопределено, а присваивает Null"
Вы не правы - посмотрите отладчиком результат выполнения строки
Переменная=Null....
и этот вопрос отпадет.
Я именно проверял и видел в отладчике позавчера , что
на самом деле такие присвоение
=Неопределено
=Null
Сейчас равноценны, ибо приводят к одинаковому результату
(78) Хочется теперь продолжить наш диспут...
А в чем по вашему различие между Null и Неопределено?
Сейчас у меня четкого понимания именно этого нету...
В диспутах истина становится ближе и ее легче рассмотреть... )))