При работе с документацией платформы 1С:Предприятие разработчики часто сталкиваются с особенностями навигации в Системе Проектирования (СП). Одной из таких проблем является некорректная работа индекса справки: при попытке найти описание ЕСТЬNULL система ошибочно перенаправляет пользователя на описание функции Вычислить (Eval). Разберем, почему это происходит и как правильно пользоваться инструментами языка запросов.
Описанная ситуация является известным артефактом индексации документации в различных релизах платформы. Чтобы гарантированно найти нужный раздел, рекомендуем придерживаться следующих правил:
Язык запросов -> Функции.Часто путаница возникает из-за того, что в языке запросов 1С присутствуют два разных инструмента для работы с NULL, которые имеют схожие названия. Важно понимать их функциональное назначение, чтобы не допускать ошибок при написании кода.
Оператор ЕСТЬ NULL — это логический оператор. Его основная задача — вернуть результат типа Булево (ИСТИНА или ЛОЖЬ). Он не преобразует данные, а лишь проверяет текущее состояние поля в базе данных. Этот оператор применяется в секциях ГДЕ, ИМЕЮЩИЕ или в условиях соединения таблиц.
Рассмотрим пример использования:
ВЫБРАТЬ
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.ЗакупочнаяЦена
ГДЕ
Справочник.Номенклатура.ЗакупочнаяЦена ЕСТЬ NULL
Функция ЕСТЬNULL() — это полноценный инструмент для преобразования значений. Она принимает два аргумента и возвращает первое значение, если оно не равно NULL, или второе значение (значение по умолчанию), если первое является NULL. В других SQL-диалектах эта функция известна как COALESCE.
Разберем пример обработки итогов:
// Получить сумму по полю количество.
// В случае, если нет записей, вернуть 0
ВЫБРАТЬ
ЕСТЬNULL(СУММА(Количество), 0) КАК Количество
ИЗ
Документ.РасхНакл.Состав
Для повышения качества кода и производительности запросов, обратите внимание на следующие аспекты:
Функция ЕСТЬNULL() выполняет принудительное приведение типов. Если первый параметр является строкой или числом, платформа попытается привести второй аргумент к типу первого. Учитывайте это, чтобы избежать ошибок при выполнении запроса.NULL — это специфическое состояние, возникающее при левых соединениях (когда данные в правой таблице отсутствуют). Значение Неопределено — это полноценное значение системного типа, которое проверяется оператором сравнения =, а не через ЕСТЬ NULL.NULL возвращают NULL. Использование ЕСТЬNULL() при расчете сумм является критически важным для получения корректного результата отчета.ЕСТЬNULL() в левой части выражения в условии ГДЕ. Использование функций в секции отбора может привести к тому, что СУБД не сможет использовать индексы таблицы, что существенно замедлит выполнение запроса.Понимая эти различия, вы сможете эффективнее проектировать запросы и быстрее находить нужную информацию в документации, не опираясь на автоматический индекс, который иногда дает сбои.