Как присвоить значению типа Неопределенно null 1с в коде?
---
у как присвоить полю с типом Ссылка тип NUL Полю с типом Ссылка ни как. Делайте поле составного типа и добаляйте тип Null
А потом Поле = Null;
---
Никак. Тип null и тип Неопределено это разные типы.
---
(3) (5) (8)

Ребята есть один стопроцентный способ.

1) Узнать имя таблицы на SQL
2) собрать запрос.
3) Поставить в реквизите железный NULL.

Я бы сказал, что монолитный.

Попробуйте может понравиться, способ может всю базу угробить, если кривые руки.
---
Вы вполне можете присвоить "Неопределено" в коде
Переменная=Неопределено;

Null - это не значение, это Результат запроса и его присвоить невозможно.
---
Ну как присвоить полю с типом Ссылка тип NULL!!!
---
функцию сделайте, в которой запросом "Выбрать Null" получите значение с типом NULL, а дальше переменной приравнять значение из этой функции. или просто приравнять null (может и прокатит, не пробовал).
---
у как присвоить полю с типом Ссылка тип NUL Полю с типом Ссылка ни как. Делайте поле составного типа и добаляйте тип Null
А потом Поле = Null;
---
Что вы подразумеваете под Типом NULL? Нету такого типа...

В случае составного типа при не внесении в него никаких значений в нем будет "Неопределено" , что опять же не является NULL

Сам по себе NULL еще раз повторюсь можно только получить, увидеть и обработать как результат в запросе к базе данных....
---
Соглашусь, в базу данных Null записать нельзя. Поторопился. Но заснуть null в запрос, ни чего не мешает.
---
Зачем его в запрос засовывать?
Задача - изменить данные , а не их вид...
Ну засунете вы в один запрос , а другой отчет покажет совсем другую картину...
---
Зачем?
---
Поддерживаю предыдущего оратора. Скажите зачем, и мы сможем посоветовать, как это реализовать
---
В регистре бухгалтерии хозрасчеты необходимо присвоить Субконто вместо ссылки NULL
---
А чем неопределено не подходит?
---
Нельзя так делать. Необходимо устанавливать значение Неопределено.
Установив значение NULL, вы потом в бух отчетах будете видеть "разъехавшиеся" остатки и обороты по казалось бы одному пустому значению аналитики.
---
+(11) NULL <> NULL
---
Вы изначально не верно понимаете суть NULL, и от этого ваши трудности....
NULL - это не значение реквизита.
NULL - это отсутствие реквизита в принципе, то есть в запросе , или другой выборке вы смотрите набор каких-то данных, так вот если где-то NULL то это не значение каких-то данных, это полное отсутствие данных в этой выборке.
NULL не может сравниваться ни с чем в принципе исходя из своей сущности. Ибо NULL - это не Неопределено , - это Отсутствие , и это 2 большие разницы.

Поэтому ваше желание невыполнимо на мой взгляд, записать в регистр NULL невозможно.

Если кто-то сможет меня переубедить - буду счастлив получить просещение.....
---
Да, всё так. Но бывают исключения.
Как-то пришлось указывать как в (10) через скрипт NULL вместо какой-то левой валюты в регистре бухгалтерии, вероятно, вышло так что "вдруг" стало два рубля, один удалили, но он в NULL не превратился. Поэтому пришлось скриптом.

(1)
может быть тестирование и исправление поможет?
---
А удаляли программно и без проверки ссылочной целостности?
Так вы просто родили скорее всего битую ссылку и именно ее показывал ваз запрос... Нет?
---
Как удаляли не знаю. Было уже сильно давно, поэтому даже не могу сказать, что было записано в качестве значения измерения Валюта, то ли какое-то значение, то-ли куча "нулей" - пустая ссылка. Но в данном контексте это не важно.
Важно, что нужно было как раз NULL установить. То есть не как "отсутствие реквизита", а как отсутствие значения.

Не очень понял про запрос, показывающий битую ссылку? Речь совсем о другом.
---
Я собственно не согласен , что существует принципиальная возможность записать куда-то NULL.

Ваше "отсутствие значения" - это
0 для реквизитов числовых,
"" - пустая строка для строковых
01.01.0001 - для даты
ПустаяСсылка - для ссылочных типов.

Ни в один реквизит вы Никогда не сможете записать NULL!
---
Посмотрите, пожалуйста, на скрин. Там вроде как NULL... Нет?
---
Нет... ;-)
Вы смотрите результат выполнения запроса.
Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было.
Ни записать NULL никуда нельзя ни увидеть этот NULL при открытии объекта напрямую в его собственной форме .
---
"Ни записать NULL никуда нельзя" - Я спрошу, ещё раз, а Вы (15) внимательно читали?
Или нельзя писать "записать", а следует писать "установить"?
---
Чем принципиально , а не по количеству букв отличаются "присвоить значение" , "записать", "установить" (в смысле значения ясно) для программиста 1С в контексте обсуждаемого вопроса конечно?
;-)
Тем более автор изменил уже текст вопроса, в пояснение - ему нужно "присвоить значение"
---
На мой взгляд, в (10) был дан правильный ответ. (15) я привел для своей проблемы и способе её решения.

Ps
а присвоить Null в коде: будет так =>
"Переменная = Null;"

PPs
И да, в (22) написано, что типа Null нет, но отладчик не согласен с Вами.
---
ну какой ответ был дан в (10) - там намеки , причем на мой взгляд шуточные...
Вы и в SQL не сможете присвоить NULL, так же как сейчас не смогли в программе 1С.
Именно потому что NULL - не значение , а именно "Результат поиска" если ничего не нашли вот это и есть NULL
---
Отладчик и показывает вам , что Тип ващей переменной не найден ибо вы его не описали ----
А я уже писал, что NULL - это перевод - "Не найден" (вариант - "Отсутствует" менее подходит, ибо русский язык очень богат)
---
Ну как не найден...
Даже СП с Вами спорит.
---
Подытоживая всю беседу можно сказать одно-
Сохранить NULL в любой объект базы данных не выйдет.
Можно установить промежуточной переменной и она даже покажет в отладчике его как Null, но при сохранении в базу данных
установится значение "Неопределено" и будет отображаться именно как Неопределено , при чем даже в запросе.

Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе.
---
а как же Внешние Источники Данных и их реквизиты полей допускающие null?
---
Внешние они и есть ВНЕШНИЕ - это не собственность базы данных...
Слово "Внешний" несет в себе смысл - что есть область данных базы и есть что-то вне ее...
Я повторюсь Сохранить NULL в любой объект базы данных не выйдет.
Иначе покажите как и куда вы предлагаете внести NULL
---
Иначе покажите как и куда вы предлагаете внести NULL
Я про это высказывание: "Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе."
Поля внешних источники данных можно использовать как реквизиты формы.
Null можно внести в допустимые типы поля ввода. Без них не будет работать обмен с полями допускающими null, если нужно очистить реквизит.
Так что чистый NULL можно увидеть не только в результате выполнения текста запроса к базе.
---
Готов уточнить свою фразу
 "Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса к базе и никак иначе." = "Чистый же NULL можно увидеть исключительно в результате выполнения текста запроса и никак иначе."
---
еще раз: Null можно внести в допустимые типы поля ввода.
Использовать вообще не в запросах, а как тип данных 1С.
---
Вы невнимательны...
Покажите мне картинку, на которой будет отображен NULL, как значение любого реквизита базы данных,обязательно - не результат любого запроса и не временной переменной...
От того что можно использовать как ТИП ничего не меняется....
Картинку в студию!
---
Я вот даже и не знаю. Вы точно понимаете, что такое NULL? Какое такое значение NULL реквизита базы данных? Null это вообще отсутствие значения. Null может быть только типом и никак иначе.
---
Я уже устал ЭТО объяснять в этой ветке, и тут вы со своим "Fe"...
В теме был вопрос "Как присвоить значение NULL..."
Я же и утверждаю уж несколько дней подряд здесь, что Невозможно присвоить и соответственно увидеть БЕЗ запроса.

На вашей картинке Null не относящийся к теме.
Я прошу показать не в отладке и уж тем более не в типе, а в форме любого элемента, и вы прекрасно понимаете что это невозможно, так зачем же вы противоречите мне?

Либо вы не читали тему вообще...
---
Т.е. в запросе Вы точно можете показать Значение Null? Могу Вас разуверить. Там не Значение, а Тип.
Т.е. говоря объективно, по Вашим словам, что только в запросе есть Null, а в элементах формы (допустимые типы) его не может быть, потому что это тип, а не значение.
Теперь понятно?
---
Уж будьте так любезны прочтите всю тему...
Честно повторять только что написанное - Нонсенс.
Но для тех кому видимо лень читать...
Вы смотрите результат выполнения запроса.
Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было.
Ни записать NULL никуда нельзя ни увидеть этот NULL при открытии объекта напрямую в его собственной форме .
---
что не понятно в фразе: "в запросе Вы точно можете показать Значение Null? Могу Вас разуверить. Там не Значение, а Тип. "
Теперь Ваши слова: "Так вот только в запросе и можно увидеть NULL, это и есть именно отсутствие в принципе чего бы то ни было."
Слова по форме правильные, но Вы вкладываете в них смысл, что Null это значение. А это не так.
---
по ходу вы просто желаете поспорить на ровном месте...
Я НЕ ВКЛАДЫВАЮ в свои слова ИНОГО смысла - NULL - это не значение , это полное отсуствие любого значения! И именно поэтому его Невозможно никуда записать или установить. Установить можно значение "Неопределено"...
И даже начинающему 1С-нику видны 2 большие разницы между Значением и Полным его отсутствием...
---
Тогда какого.. "Так вот только в запросе и можно увидеть NULL" и требуете показать Значение Null в реквизитах?
Какой Null Вы видите в запросе?
---
А видим не Null - NULL!
Попробуйте увидеть Null )))))
---
а скрин (49) посмотреть? :)
---
В результате запроса попробуйте увидеть а не в отладке...
Я же изначально отказался про отладку говорить....
Ведь пользователь не имеет доступа к отладкам...
Это область программиста
---
как пользователь не имея доступа к отладке будет иметь доступ к результату запроса? Это вообще про что?

Вот для кода:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 3
    | Товары.Ссылка КАК Ссылка,
    | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
    |ИЗ
    | Справочник.Номенклатура КАК Товары
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    | ПО ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка
    | И (ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL)";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Сообщить("Количество = "+ВыборкаДетальныеЗаписи.КоличествоОстаток);
    Сообщить("Тип = "+ТипЗнч(ВыборкаДетальныеЗаписи.КоличествоОстаток));
    КонецЦикла;
```

Результат на скрине:
---
Вы снова подтасовываете!
Я прошу результат запроса а не сообщения...
Покажите результат запроса в любой консоли и тогда вы поймете о чем я...
Консоль покажете - я соглашусь!
---
я начал догадываться. Вы текстовое представление типа для показа пользователю в СКД пытаетесь подсунуть? А если текстовое представление будет "Данные не обнаружены", то тоже это сообщение типом посчитаете?
---
Я не про СКД, я про ГОЛЫЕ данные!
Консоль запросов , без всяких СКД...
---
А так вы вместо СКД подсовываете свое видение ТипЗн - это еще зачем пользователю?
Он данные просил, а не типы! ;-) )))))
---
Он данные просил, а не типы
По второму кругу пойдем?
---
Речь про то ЧТО мы видим в результате запроса . ВСЕ без всевозможных обработок ЭТОГО результата, ибо я нигде не упоминал о какой либо обработке результата запроса, я говорил именно о результате.
---
неужели не понятно, что видите постобработку в текстовом представлении для показа пользователю? Там же простое текстовое поле табличного документа. В нем Null просто невозможно представить. Вот и переводят в текстовое представление, которое может быть любым тестом и которое программисты платформы вот так придумали представлять.
---
Хорошо - где вы предлагаете увидеть результат запроса БЕЗ постобработки.
Будем смотреть!
---
сначала нужно определиться с понятием "БЕЗ постобработки". Любые полученные данные в 1С проходят постобработку. Типы подтягиваются не sql, а уже 1С.
Наиболее близкий результат, это обход выборки.
---
а, вот хороший вариант узнать тип в самом sql:

```1c
    ВЫБРАТЬ ПЕРВЫЕ 3
    Товары.Ссылка КАК Ссылка,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК ТипNull
    ИЗ
    Справочник.Номенклатура КАК Товары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    ПО (ТоварыНаСкладахОстатки.Номенклатура = Товары.Ссылка)
    И (ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ NULL)
```

Попробуйте его в консоле запросов выполнить.
---
Нам тип значения зачем изначально ?
Мы говорили о возможности записи в данные и о том что в этих данных (не в типах ) вы не увидите Null.
То что существует ТИП Null никто же не спорит!
Мы не ищем ТИП в запросах, мы ищем ДАННЫЕ!
Но видим NULL...

Человек изначально спросил КАК этот NULL Записать в какие-то данные.
Вы пристали со своими типами...
Мы не о типах беседуем!
Тип есть и ясно, что если в элементе данных нет , то тип у этого элемента Null . Ну и что?
---
если Вы после всего вышесказанного поняли, что такое Null и как он представляется и используется, то уже хорошо.
---
Я изначально знаю, что NULL Это NULL(полное отсутствие данных) и Null- это Null (это тип данных), и что это разные вещи.
И если вы наконец поняли что я говорил с самого начала , то это тоже хорошо...
---
вы обрабатываете результат уже программно, и ясно что это НЕ результат запроса, или точнее не ЧИСТЫЙ результат, то есть подтасовка
---
(61) хаха. вот это вообще жесть. По Вашему в СКД(Консоль запросов) показывает "ЧИСТЫЙ" результат, показывает внутренние тиы sql?
Т.е. показывая в текстовом поле: <NULL> это будут читые Значения? Именно с угловыми скобками и большими буквами? Именно значение, так как в поле показывается не тип, а значение?
Так вот, это просто текстовое представление пользователю, что там не пустое значение, а именно отсутствует значение. Что бы пользователь не спутал с пустой строкой.
И попробуйте дважды щелкнуть по такому "значению". Откроется его тип.
---
СКД и Консоль запросов - это 2 большие разницы
---
результат представления в табличном документе, а именно он показан на скрине в (65), ничем не отличается.
---
А <NULL> - я вам в 100 раз повторяю ОТСУТСТВИЕ значения а не Значение
---
Вы мне что пытаетесь доказать?
Что NULL запросе - это Тип? - это глупость...
В запросе вы получаете значения , либо в случае с NULL - их отсутствие.
Запрос не выдает типы значений...
---
А проверить?
---
ладно давайте остановимся на том что Null - это Тип полного отсутствия значения.
---
вот этого я и добивался. Давайте остановимся на этом.
---
Переменная =Null Присвоит переменной на самом деле "Неопределено" .
NULL же вы не увидите после присвоения , а увидите см рисунок
---
видимо 1С изгаляются ... В различных платформах разные названия вот в самой последней как у меня...
---
Я вроде понял наши расхождения...!
Я размышляю категорией 1С программиста...
Вы же после (10) расширили обсуждение до прямого изменения данных SQL. NULL в 1С и в SQL немного не совпадают возможно (глубочайшими познаниями SQL не похвастаюсь)...
Но мы то обсуждаем 1С...

Тогда уточните как можно "установить" NULL для файловой базы?

Ну смоделируйте любой элементарный справочник (или регистр - это не принциально) и покажите мне отрыв его в 1С , что в нем "установлен" NULL в любой вами назначенный реквизит...
---
"Тогда уточните как можно "установить" NULL для файловой базы?" - не знаю.

"или регистр - это не принциально) и покажите мне отрыв его в 1С" -

ВЫБРАТЬ ПЕРВЫЕ 5
 Хозрасчетный.Период КАК Период,
 Хозрасчетный.НомерСтроки КАК НомерСтроки,
 Хозрасчетный.Активность КАК Активность,
 Хозрасчетный.СчетДт КАК СчетДт,
 Хозрасчетный.СчетКт КАК СчетКт,
 Хозрасчетный.ВалютаДт КАК ВалютаДт,
 Хозрасчетный.ВалютаКт КАК ВалютаКт,
 ВЫБОР
  КОГДА Хозрасчетный.ВалютаДт ЕСТЬ NULL
   ТОГДА "Это нал"
  ИНАЧЕ "Это НЕ нал"
 КОНЕЦ КАК НалИлиНеНал
ИЗ
 РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
Вот запрос.
Данные попадают при проведении документов, которые являются регистраторами РБ.
Записать самостоятельно, если через SQL Скрипт никак не считается :) можно через ВнешнийИсточникДанных - это вроде как "1С".

Человеку нужно было решить задачу, со своей колокольни я предложил то, что знаю.
---
Ну так я и не спорю что в результате запроса вы получите и увидите NULL. Я как раз именно об этом и говорю с сакмого начала, что только в запросе вы можете его получить, но именно присвоить не выйдет.
Ибо присвоится "Неопределено"...
При чем для меня сегодня вообще новостью было , что

Переменная=Null;

вообще будет работать... Но как оказалось да =Присваивает "Неопределено".

Спасибо за беседу, она была интересной...
---
Код "Переменная=Null", не присваивает Неопределено, а присваивает Null". Ну если конечно, можно употреблять "присваивает" для отсутствующего значения. Однако тип точно Null устанавливает, см.

Кстати, Видели? - https://infostart.ru/public/1142232/

За беседу взаимно, если это не подкол, разумеется.
---
Код "Переменная=Null", не присваивает Неопределено, а присваивает Null"
Вы не правы - посмотрите отладчиком результат выполнения строки
Переменная=Null....
и этот вопрос отпадет.
Я именно проверял и видел в отладчике позавчера , что
  на самом деле такие присвоение
=Неопределено
=Null
Сейчас равноценны, ибо приводят к одинаковому результату
---
Да типы устанавливаются различные у Null и Неопределено.
СОГЛАСЕН
---
Хочется теперь продолжить наш диспут...
А в чем по вашему различие между Null и Неопределено?
Сейчас у меня четкого понимания именно этого нету...
В диспутах истина становится ближе и ее легче рассмотреть... )))
---
А на приведенном сайте даже высказывался...
---
Спасибо
---
Может не в тему, но для некоторых полей "виртуальных" таблиц, допускается NULL как значение на уровне sql. Для этого есть отдельное свойство у поля.
---
Почему же, как раз в (15) примерно об этом.
---
Не в тему хотя бы потому , что речь точно не про SQL.
Там свои законы, правила и разработчик - мелкомягкий... )))
---
Я коротко - https://its.1c.ru/db/metod8dev/content/2614/hdoc