|
В общем - извратился следующим образом: Процедура ДобавитьОтборПоДопПолям(ТабПоле, СтруктураЗапроса, ИмяРеквизита, ИмяСоединения) Перем ДопОтбор, ТекстДопУсловий, ЗначениеОтбора, ВидСравнения, Инд; ДопОтбор=ТабПоле.Отбор.Получить(ИмяРеквизита); Если (ДопОтбор.Использование=0) Или (ПустоеЗначение(ДопОтбор.ВидСравнения)=1) Или (ПустоеЗначение(ДопОтбор.Значение)=1) Тогда Возврат; КонецЕсли; ВидСравнения=""+ДопОтбор.ВидСравнения; ТекстДопУсловий=?(ПустаяСтрока(СтруктураЗапроса.Условия)=0," And ", " Where ") +"$"+ИмяСоединения+"."+ИмяРеквизита +?(ВидСравнения="Равно"," = ",?(ВидСравнения="НеРавно"," != ",?(ВидСравнения="ВСписке"," In "," !In "))) ; ЗначениеОтбора=ДопОтбор.Значение; Если ТипЗначенияСтр(ЗначениеОтбора)="СписокЗначений" Тогда Для Инд=1 По ЗначениеОтбора.РазмерСписка() Цикл а.ПолучитьЗначение(Инд)); КонецЦикла; ТекстДопУсловий=ТекстДопУсловий+")"; Иначе ТекстДопУсловий=ТекстДопУсловий+ЗначениеВСтрокуБД(ЗначениеОтбора); КонецЕсли; СтруктураЗапроса.Условия=СтруктураЗапроса.Условия+ТекстДопУсловий; КонецПроцедуры // ДобавитьОтборПоДопПолям Процедура ТППриПолученииЗапроса(ТабПоле,СтруктураЗапроса) ДобавитьОтборПоДопПолям(ТабПоле,СтруктураЗапроса,"Склад","СпрЯчейки"); ДобавитьОтборПоДопПолям(ТабПоле,СтруктураЗапроса,"Участок","СпрЯчейки"); КонецПроцедуры // ПриПолученииЗапроса
|