В целях оптимизации запросов рекомендуется заменять условие ИЛИ на "ОБЪЕДИНИТЬ ВСЕ". Это не сложно сделать для не иерархических условий. Но у меня есть такое:
Код
ВЫБРАТЬ * ИЗ РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
ГДЕ
ИСТИНА
И СебестоимостьТоваров.Период МЕЖДУ &НачалоПериода И &КонецПериода
И (ЛОЖЬ
ИЛИ (ИСТИНА
И СебестоимостьТоваров.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваров),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставНМА),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВЭксплуатациюБУНУ),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту))
И СебестоимостьТоваров.Подразделение = &Подразделение)
ИЛИ (ИСТИНА
И СебестоимостьТоваров.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваров),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаВСоставОС),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПересортицаТоваров),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПересортицаТоваровСПереоценкой),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику),
ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаПрочиеЦели))
И ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(СебестоимостьТоваров.АналитикаУчетаНоменклатуры.МестоХранения) = ТИП(Справочник.Склады)
ТОГДА ВЫРАЗИТЬ(СебестоимостьТоваров.АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.Склады).Подразделение = &Подразделение
КОГДА ТИПЗНАЧЕНИЯ(СебестоимостьТоваров.АналитикаУчетаНоменклатуры.МестоХранения) = ТИП(Справочник.СтруктураПредприятия)
ТОГДА (ВЫРАЗИТЬ(СебестоимостьТоваров.АналитикаУчетаНоменклатуры.МестоХранения КАК Справочник.СтруктураПредприятия)) = &Подразделение
ИНАЧЕ ЛОЖЬ
КОНЕЦ))
И СебестоимостьТоваров.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
И (ЛОЖЬ
ИЛИ СебестоимостьТоваров.РазделУчета В (ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах))
ИЛИ (ИСТИНА
И СебестоимостьТоваров.РазделУчета В (ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты))
И (ЛОЖЬ
ИЛИ ТИПЗНАЧЕНИЯ(СебестоимостьТоваров.Регистратор) = ТИП(Документ.ВнутреннееПотреблениеТоваров)
ИЛИ СебестоимостьТоваров.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)))))
И СебестоимостьТоваров.СтоимостьРегл + СебестоимостьТоваров.ДопРасходыРегл + СебестоимостьТоваров.ПостатейныеПостоянныеРегл + СебестоимостьТоваров.ПостатейныеПеременныеРегл <> 0
И НЕ (ПОДСТРОКА(ЕСТЬNULL(СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура.ГруппаФинансовогоУчета.Наименование, ""), 1, 2) ПОДОБНО "08")
Хотелось бы в Конструкторе запросов ИР видеть инструмент, который умеет "Разворачивать" такие запросы в несколько отдельных через ОБЪЕДИНИТЬ ВСЕ с учетом Иерархии условия.