lalex23
4 - 20.02.2009 - 05:54
|
примерно так: ВидДокумента = СтрЗаменить(ЭлементыФормы.Список.Значение,"ДокументСписок.",""); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(Документ." + ПоказательСуммы + ") КАК Сумма |ИЗ | Документ." + ВидДокумента + " КАК Документ"; УсловиеЗапроса = ""; Для Каждого ЭлементОтбора Из ЭлементыФормы.Список.Значение.Отбор Цикл Если Не ЭлементОтбора.Использование Тогда Продолжить; КонецЕсли; Если ЭлементОтбора.Имя = "Дата" или ЭлементОтбора.Имя = "Номер" или ОбщегоНазначения.ЕстьРеквизитДокумента(ЭлементОтбора.Имя,Метаданные.Документы[ВидДокумента]) Тогда Если УсловиеЗапроса = "" Тогда УсловиеЗапроса = " ГДЕ "; Иначе УсловиеЗапроса = УсловиеЗапроса + " и "; КонецЕсли; Если ЭлементОтбора.ВидСравнения = ВидСравнения.Интервал или ЭлементОтбора.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы или ЭлементОтбора.ВидСравнения = ВидСравнения.ИнтервалВключаяОкончание или ЭлементОтбора.ВидСравнения = ВидСравнения.ИнтервалВключаяНачало Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя + "С",ЭлементОтбора.ЗначениеС); Запрос.УстановитьПараметр(ЭлементОтбора.Имя + "По",ЭлементОтбора.ЗначениеПо); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " МЕЖДУ &" + ЭлементОтбора.Имя + "С" + " И &" + ЭлементОтбора.Имя + "По"; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.Больше Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " > &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.БольшеИлиРавно Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " >= &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.Меньше Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " < &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.МеньшеИлиРавно Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " >= &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " В &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.Равно Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " = &" + ЭлементОтбора.Имя; ИначеЕсли ЭлементОтбора.ВидСравнения = ВидСравнения.НеРавно Тогда Запрос.УстановитьПараметр(ЭлементОтбора.Имя,ЭлементОтбора.Значение); УсловиеЗапроса = УсловиеЗапроса + "Документ." + ЭлементОтбора.Имя + " <> &" + ЭлементОтбора.Имя; КонецЕсли; КонецЕсли; КонецЦикла; Запрос.Текст = Запрос.Текст + УсловиеЗапроса; Рез = Запрос.Выполнить().Выгрузить(); Сообщить(Рез[0].Сумма); Дорисуешь остальные условия сам.. |