Как в запросе выполнить отбор по «объект не найден»
(1С: 8.1: Программисту)
Вопрос Как в запросе отобрать элементы, значение которых — «битая ссылка», т.е. «объект не найден»
Ответ Для этого используется логический оператор ЕСТЬ NULL функций языка запросов.
Например, допустим, в регистре накопления «ПартииТоваровНаСкладах» мы хотим найти записи, в которых измерение «ДокументОприходования» оказалось такой вот битой ссылкой на «объект не найден». Запрос будет выглядеть примерно так:
ВЫБРАТЬ
ПартииТоваровНаСкладах.Регистратор,
ПартииТоваровНаСкладах.Номенклатура,
ПартииТоваровНаСкладах.СерияНоменклатуры,
ПартииТоваровНаСкладах.ДокументОприходования,
ПартииТоваровНаСкладах.Качество,
ПартииТоваровНаСкладах.Склад,
ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры,
ПартииТоваровНаСкладах.СтатусПартии,
ПартииТоваровНаСкладах.Заказ
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
ПартииТоваровНаСкладах.ДокументОприходования.Ссылка ЕСТЬ NULL
Обратите внимание, если в запросе требуется получить ссылку на регистратор регистра накопления, то запрос должен быть построен не к остаткам и не к оборотам, а просто к регистру (как в этом примере).
По сведениям наших коллег в некоторых случаях может потребоваться отбор не по
ГДЕ
ПартииТоваровНаСкладах.ДокументОприходования.Ссылка ЕСТЬ NULL
а по представлению, т.е. с использованием конструкции вида:
ГДЕ
ПартииТоваровНаСкладах.ДокументОприходования.Ссылка.Представление ЕСТЬ NULL
Мы думаем, что это может быть связано с различными видами «битости» ссылок. В любом случае, один из способов должен Вам помочь. Поэтому рекомендуем поэкспериментировать с обоими этими условиями.