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