|
Подкиньте мысль как менять текст запроса в зависимости от вида отбора? | ☑ | ||
---|---|---|---|---|
0
Cerera
27.07.12
✎
09:25
|
В отчете без использования СКД, использую объект типа "Отбор". Потом при формировании отчета получаю значения полей отбора и ВидСравнения
Для Индекс = 0 По ПолеОтбора.Количество()-1 Цикл Поле = ПолеОтбора[Индекс]; Если Поле.Использование=Истина Тогда Если Поле.ПутьКДанным="НоменклатурнаяГруппа" Тогда НоменклатурнаяГруппа=Поле.Значение; ВидСравненияНоменклатурнаяГруппа=Поле.ВидСравнения; КонецЕсли; КонецЕсли; КонецЦикла; Как мне по умному в зависимости ВидаСравнения менять запрос? Пока только такой вариант напрашивается - создать текст запроса и разрезать запрос на куски снабдив условиями типа Если ВидСравнения=Равно Тогда Запрос.Текст=Запрос.Текст+"Где НоменклатурнаяГруппа=....." ИначеЕсли ВидСравнения="Не равно" Тогда .... но мне кажется это неудобный способ. ведь так кучу вариантов перебирать придется. как то это реализуется по другому. |
|||
1
rasswet
27.07.12
✎
09:26
|
СтрЗаменить
|
|||
2
х86
27.07.12
✎
09:26
|
Построитель используй
|
|||
3
Cerera
27.07.12
✎
09:29
|
(1)а стрзаменить для каких целей?
|
|||
4
Zero on a dice
27.07.12
✎
09:32
|
либо построитель, либо пару функций для генерирования условия от переданного массива структур/отбора
|
|||
5
Cerera
27.07.12
✎
09:35
|
(4)а где эти функции есть?
|
|||
6
Лефмихалыч
27.07.12
✎
09:36
|
(0) Будь мужиком уже, юзай СКД, блеать
|
|||
7
Zero on a dice
27.07.12
✎
09:38
|
(5) напиши сам - делов на 20 минут
|
|||
8
Cerera
27.07.12
✎
09:43
|
(6)не получится. я а скд отчеты пишу. но здесь обработка. она многочего делает помимо вывода отчета.
|
|||
9
GoldenCalf
27.07.12
✎
09:45
|
(8) Да хоть в документе используй СКД, кто тебе мешает
|
|||
10
Cerera
27.07.12
✎
09:47
|
(9)да мне нужно в цикле построчно обходить группировки и выводить секции отчета
|
|||
11
Cerera
27.07.12
✎
09:48
|
и ещё заполнять документ и т.п. обрабатывать строки
|
|||
12
Cerera
27.07.12
✎
09:55
|
наверняка где-нибудь можно нарыть функций подобных
|
|||
13
Zero on a dice
27.07.12
✎
10:07
|
Дарю, но здесь не все учтено:
Процедура ОтборВУсловиеЗапроса(ОтборДонор, Построитель) Экспорт Если ОтборДонор = Неопределено Тогда Возврат; КонецЕсли; Для Каждого ЭлементОтбора Из ОтборДонор Цикл Если ЗначениеЗаполнено(ЭлементОтбора.ПутьКДанным) Тогда Построитель.Текст = Построитель.Текст + " | И Объект."+ ЭлементОтбора.ПутьКДанным+ " " + ВидСравненияДляЗапроса(ЭлементОтбора.ВидСравнения) + " (&" + ЭлементОтбора.ПутьКДанным+")"; Построитель.Параметры.Вставить(ЭлементОтбора.ПутьКДанным, ЭлементОтбора.Значение); КонецЕсли; КонецЦикла; КонецПроцедуры Функция ВидСравненияДляЗапроса(ТекВидСравнения) Если ТекВидСравнения = ВидСравнения.Равно Тогда Возврат "="; ИначеЕсли ТекВидСравнения = ВидСравнения.Больше Тогда Возврат ">"; ИначеЕсли ТекВидСравнения = ВидСравнения.БольшеИлиРавно Тогда Возврат ">="; ИначеЕсли ТекВидСравнения = ВидСравнения.Меньше Тогда Возврат "<"; ИначеЕсли ТекВидСравнения = ВидСравнения.МеньшеИлиРавно Тогда Возврат "<="; ИначеЕсли ТекВидСравнения = ВидСравнения.НеРавно Тогда Возврат "<>"; ИначеЕсли ТекВидСравнения = ВидСравнения.ВСписке Тогда Возврат "В"; ИначеЕсли ТекВидСравнения = ВидСравнения.ВИерархии Тогда Возврат "В Иерархии"; Иначе Возврат "="; КонецЕсли; КонецФункции |
|||
14
Лефмихалыч
27.07.12
✎
10:10
|
(8) в обработке тоже можно юзать СКД. СКД можно юзать где угодно, даже в СКД.
|
|||
15
Cerera
27.07.12
✎
10:25
|
(14)ну я одного не понял. скд это хорошо. но мне надо чтобы я видел в цикле как выводятся строчки запроса. а так же анализировать выборку. и вручную некоторые показатели просчитывать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |