Что с чем путают в 1С
Неопределено, NULL и пустая ссылка в 1С:
три разных ситуации
«Тут ничего нет» — слишком неточное объяснение для программы. Значение может быть не задано, строка соединения не найдена, а выбор товара оставлен пустым. Проверки будут разными.

- Отсутствие значения другого типа
- Нет строки после соединения
- Пустой выбор конкретного справочника
- Ноль не заменяет неизвестность
Содержание
Неопределено: значение ещё не задано
Объявленная переменная до присваивания имеет значение Неопределено. Оно также встречается, например, когда соответствие не нашло ключ. У функции можно договориться о таком результате, если нужных данных нет.
Договорённость нужно соблюдать у вызывающей стороны. Если функция может вернуть число или Неопределено, нельзя сразу умножать результат на количество. Сначала отдельно обработайте отсутствие цены.
Воспроизвести отсутствие ключа можно в примере соответствия с ценами.

Цены = Новый Соответствие;
Цена = Цены.Получить("НЕИЗВЕСТНО");
Если Цена = Неопределено Тогда
Сообщить("Цена не найдена.");
КонецЕсли;NULL: проверьте результат соединения
Представьте запрос: слева список товаров, справа цены. При левом соединении товар останется в результате, даже если подходящей цены нет. Поле цены из отсутствующей правой строки получит NULL.
В языке запросов используйте ЕСТЬ NULL для проверки и ЕСТЬNULL для осмысленной замены. Но замена цены на 0 меняет смысл: неизвестный товар выглядит бесплатным. Для первого упражнения оставьте признак отсутствия и покажите его отдельно.
Как условие запроса может убрать такую строку целиком, показываю в разборе товара без остатка.
ВЫБРАТЬ
Товары.Наименование,
Цены.Цена,
ВЫБОР
КОГДА Цены.Цена ЕСТЬ NULL ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЦенаНеНайдена
ИЗ
Справочник.Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
ПО Товары.Ссылка = Цены.ТоварПустая ссылка: тип известен, элемент не выбран
У справочника «Товары» есть своя пустая ссылка. Это не пустая строка и не Неопределено. Поле с единственным типом СправочникСсылка.Товары может быть пустым, но его тип остаётся известным.
Получайте пустую ссылку через менеджер нужного справочника на сервере. Для простого пользовательского выбора часто достаточно ЗначениеЗаполнено. После успешной проверки уже переходите к действиям с выбранным элементом.
ПустойТовар = Справочники.Товары.ПустаяСсылка();
Сообщить(ЗначениеЗаполнено(ПустойТовар));Ноль и пустая строка тоже требуют смысла
У числа значением по умолчанию будет 0, у строки — пустая строка. Это не делает их одинаковыми с NULL. Иногда ноль допустим: остаток закончился или услуга бесплатная. Иногда это ошибка ввода.
Запишите правила словами: количество строго больше нуля; цена неотрицательная; товар выбран. Не переносите проверку из соседней задачи, пока не сравнили эти условия.
Проверьте четыре учебных случая
Сделайте таблицу ожиданий: цена 500, цена 0, цена не найдена, товар не выбран. Для каждого случая заранее запишите сообщение или итог, который должен увидеть человек.
Запустите случаи по одному и посмотрите тип значения в отладчике. Затем объясните, почему условие Цена = 0 не решает все четыре задачи. Если объяснение получается только после подстановки разных проверок наугад, вернитесь к месту получения данных.
Самопроверка
Частые вопросы
NULL — то же, что ноль?
Нет. NULL может означать отсутствие данных со стороны соединения, а ноль — реальное числовое значение.
Неопределено равно пустой ссылке?
Нет. Пустая ссылка имеет конкретный ссылочный тип, а Неопределено — отдельный тип.
ЕСТЬNULL всегда нужно добавлять?
Нет. Замена уместна, только если её смысл согласован. Иначе она скрывает отсутствие данных.
Первичные источники
Что проверить дополнительно
Полезный материал
Поделиться статьёй
Сохраните материал или отправьте его тому, кому он пригодится.
Шаг 3 из 5
Данные в 1С: как выбирать значения, читать и проверять результат
Разберите запрос внутри цикла. Сравните исходные данные, исправление и результат, когда одна из цен не найдена.
Следующий шаг
От прочитанного примера — к своему решению
В «1С код» — 153 бесплатные задачи по языку, коллекциям и запросам. Формат похож на LeetCode: небольшое условие, ваше решение и результат проверки. Начните с простой задачи и попробуйте объяснить свой код.
Нужен бесплатный вход. AI-раздел и практика с проверкой ментором имеют отдельные условия доступа. В «1С код» действуют лимиты попыток и восстановление жизней.