Поделитесь в соцсетях

Null в запросе

Содержание[Убрать]

Null в запросе

Значение NULL и методы работы с ним "Есть Null" и "ЕстьNull".

 

Значение Null означает что переменная(поле) не содержит значения. Возникает оно например, при левом соединении таблиц, когда в правой таблице нет подходящего значения для левой таблицы. Присоединим к таблице Контрагенты таблицу Договоры:

"ВЫБРАТЬ
|	Контрагенты.Ссылка КАК Контрагент,
|	ДоговорыКонтрагентов.Ссылка КАК Договор
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|		ПО Контрагенты.ОсновнойДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка"

Если при выполнении данного текста запроса у контрагента не будет договора, то тогда в результате будет примерно следующее:

Контрагент Договор
Интенсивник ООО Договор подряда
Рога и копыта АО NULL
Колобок и Ко Договор поставки

Значение Null не имеет визуального представления - будет показываться как пустая строка.

Чтобы корректно обрабатывать такие ситуации и созданы методы "Есть Null" и "ЕстьNull".

Есть Null

Данное логическое выражение проверяет является ли значение значением Null. При проверке обязательно нужно использовать данное выражение т.к. сравнивать значение с Null(Договор.Ссылка = Null) не имеет смысла, это не даст необходимого результата.

Пример:

"ВЫБРАТЬ
|	Контрагенты.Ссылка КАК Контрагент,
|	ВЫБОР
|		КОГДА ДоговорыКонтрагентов.Ссылка ЕСТЬ NULL 
|			ТОГДА ""Договора нет""
|		ИНАЧЕ ДоговорыКонтрагентов.Ссылка
|	КОНЕЦ КАК Договор
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|		ПО Контрагенты.ОсновнойДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка
|ГДЕ
|	(НЕ ДоговорыКонтрагентов.Ссылка ЕСТЬ NULL )"

Здесь выражение используется в условии и в конструкции выбора в одном из выбираемых полей. Конечно бессмысленно в выбираемом поле ставить конструкцию выбора т.к. такие значения отсекаются в условии, это сделано только для ознакомления.

ЕстьNull

Метод позволяет заменять значение Null на выбранное нами значение.

Пример:

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

Недостаточно прав для комментирования