В восьмерке условия в запросе срабатывают немного не так, как к тому привык “семерочник”, т.е. как это заведено в семерке. Например, в 7.7, если указать в запросе условие вида
Условие (Товар в ВыбТовар);
и при этом переменная ВыбТовар – пустой элемент справочника, в выборку попадут все варианты значений переменной Товар: пустые, группы, элементы.
В восьмерке есть похожий вариант наложения условия:
ГДЕ ПартииТоваров.Товар В ИЕРАРХИИ(&Товар);
если в параметр запроса Товар передать пустую ссылку, то в результат запроса попадут все непустые значения, т.е. группы и элементы, но не попадут записи регистра, где значение этого измерения не заполнено. Чтобы условие сработало также, как и в семерчном варианте нужно либо программно вообще убрать условие из текста запроса или переписать его например так:
ГДЕ (ПартииТоваров.Товар В ИЕРАРХИИ(&Товар) ИЛИ ПартииТоваров.Товар = &ПустаяСсылкаТовар);
потом в параметр запроса передать пустую ссылку справочника:
Запрос.Параметры.Вставить(“ПустаяСсылкаТовар”, Справочники.Товары.ПустаяСсылка());
Возможно есть способ и покрасивее, но я пока нашел только такой.
UPD для платформы 8.2 Пустую ссылку можно получить прямо в запросе с помощью функции ЗНАЧЕНИЕ, примерно в таком виде: ЗНАЧЕНИЕ(Справочник.Товары.ПустаяСсылка).