Часто в Запросе требуется проверить заполнение реквизита типа Справочник, Документ, Перечисление или другого ссылочного типа на заполненность.
// ВидМаркированнойПродукции = Перечисление.ВидыМаркируемойПродукции
// Выбираем элементы справочника Номенклатура
// Где заполнен реквизит "ВидМаркированнойПродукции"
Запрос = Новый Запрос;
ТекстЗапроса = "
|ВЫБРАТЬ
| Спр.Ссылка,
| Спр.ВидМаркированнойПродукции
|ИЗ
| Справочник.Номенклатура КАК Спр
|
|ГДЕ
| НЕ Спр.ВидМаркированнойПродукции.ССылка is NULL
|";
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
{20} Переменной Выборка присвоено значение, но оно нигде не используется Орфографическая ошибка в Определние: Определние Орфографическая ошибка в ССылка: Сылка
ПустыеСсылкиТиповОбъектовАвторизации (БСП)
ПустаяСсылкаОбъектаМетаданных (БСП)
ПустыеСсылкиТиповЗначенийДоступаПоТипамГруппИЗначений (БСП)
#1, 02 февраля 2025 14:02
Еще можно так написать:
#2, ред. 03 февраля 2025 21:37
В приведенном запросе выполняется проверка не на заполненность, а на отсутствие строки в таблице по ссылке. Для битой ссылки она тоже сработает. Хотя она не является не заполненной.
#3, ред. 12 февраля 2025 14:09
Я бы написал
НЕ Спр.ВидМаркированнойПродукции.ССылка = Значение(Справочник.ВидыМаркированнойПродукции.ПустаяСсылка)
#4, ред. 12 февраля 2025 21:26
(3) Евгений В, Спр.ВидМаркированнойПродукции.ССылка = Значение(Справочник.ВидыМаркированнойПродукции.ПустаяСсылка)
и
Спр.ВидМаркированнойПродукции.ССылка is NULL
это две разных ситуации.
при этом надо понимать если Спр.ВидМаркированнойПродукции.ССылка равно Null , то первое условие дает Ложь.
И конечно хотелось бы увидеть когда Спр.Ссылка is NULL. В данном запросе это возможно?