|
СКД: как передать параметры в запрос из настроек отчета? | ☑ | ||
|---|---|---|---|---|
|
0
DSSS
14.01.10
✎
08:41
|
Всем доброго дня!
Пишу отчет на СКД, запрос выполняю в модуле формы, потом передаю таблицу значений полученную этим запросом в СКД через набор данных. Вот текст запроса: ВЫБРАТЬ РАЗЛИЧНЫЕ ПродажиОбороты.Номенклатура, ПродажиОбороты.Регистратор, ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК Количество, ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) КАК СтоимостьОбщая, ПродажиОбороты.Проект, ПродажиОбороты.Регистратор.Ответственный КАК Ответственный, ПродажиОбороты.Подразделение, ПродажиОбороты.ПериодМесяц КАК Месяц ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто,) КАК ПродажиОбороты Чтобы отчет сформировался с нужными отборами, я устанавливаю их в настройках отчета и отчет формируется правильно. Вопрос в следующем: получается, что сначала у меня исполняется запрос без параметров и на это уходит намного больше времени, чем если бы в текст запроса были переданы эти параметры. Подскажите, как параметры отборов отчета передать в запрос, учитывая, что заранее неизвестно, какие отборы установит пользователь? Пока только приходит в голову писать модуле перед исполнеем запроса примерно следующее: ПараметрДанных=КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); ПараметрЗапроса = ПараметрДанных.Значение; Запрос.УстановитьПараметр("КонецПериода",ПараметрЗапроса); Запрос.Текст = Запрос.Текст + какой-то текст для запроса. Однако при этом нужно учитывать каждое поле запроса, тип сравнения, тип значений и пр. Так я запарюсь все возможные варианты перебирать.. Может существует более простой способ решения такой проблемы, подскажите, кто в курсе? |
|||
|
1
Defender aka LINN
14.01.10
✎
08:48
|
А что мешает отчет на основании запроса делать?
|
|||
|
2
DSSS
14.01.10
✎
08:54
|
(1) Не понял малость вопроса. Я и делаю отчет на основании запроса, только он долго исполняется, потомучто без отборов. мне нужно эти отборы в запрос передать, чтобы быстрее работало.
|
|||
|
3
Stim
14.01.10
✎
08:55
|
(2) он тебя правильно спросил. Зачем вот это:
"Пишу отчет на СКД, запрос выполняю в модуле формы" ? Почему нельзя запрос выполнять в самой СКД? |
|||
|
4
DSSS
14.01.10
✎
08:58
|
(3) Мешает ряд особенностей ведения учета. Я сначала получаю таблицу значений, потом работаю с ней, в этой таблице пересчитывается себестоимость.
Это окончательный вариант, по другому не получается. Конечно намного логичней все в скд сделать, но в этом отчете мне приходится работать именно с набором данных. |
|||
|
5
Defender aka LINN
14.01.10
✎
09:00
|
(4) Тогда жии с этим.
Или для запроса сделай отдельную схему, копируй туда отбор и получай таблицу отфильтрованную. |
|||
|
6
Guk
14.01.10
✎
09:00
|
а что мешает прочитать значения отбора и запихнуть их в первоначальный запрос?...
|
|||
|
7
Defender aka LINN
14.01.10
✎
09:03
|
(6) Заколебешься.
|
|||
|
8
mikeA
14.01.10
✎
09:05
|
(14) Первый запрос делай на компоновке, у второго запроса в компоновке устанавливай параметры как у первого.
|
|||
|
9
Stim
14.01.10
✎
09:05
|
тогда проще создать отчет вручную. СКД для того и предназначен, чтобы брать всю рутинную работу на себя.. а автор хочет скрестить ноги с автомобилем..
|
|||
|
10
Guk
14.01.10
✎
09:06
|
(7) да ладно...
|
|||
|
11
Defender aka LINN
14.01.10
✎
09:11
|
(10) http://s004.radikal.ru/i207/1001/83/73930e1ffc07.jpg такой вот, например. Устанешь :)
|
|||
|
12
Guk
14.01.10
✎
09:13
|
(11) вдруг у него отбор попроще ;)...
|
|||
|
13
Defender aka LINN
14.01.10
✎
09:14
|
(12) Ну, мы ж частные случаи не решаем :)
|
|||
|
14
DSSS
14.01.10
✎
09:15
|
(12) Сложней намного. привел только часть запроса..
|
|||
|
15
mikeA
14.01.10
✎
09:15
|
(11) И что оно автоматом не обходится? Ну типа
Для каждого ЭлементНастройки из КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл... |
|||
|
16
Defender aka LINN
14.01.10
✎
09:17
|
(15) Обходится. Только что ты с ним делать будешь?
|
|||
|
17
mikeA
14.01.10
✎
09:18
|
(16) Скопировать в настройки компоновки второго запроса.
|
|||
|
18
Defender aka LINN
14.01.10
✎
09:20
|
(17) И давно у ЗАПРОСА появились настройки компоновки?
|
|||
|
19
mikeA
14.01.10
✎
09:21
|
(18) Я же говорю (8), тот запрос тоже на компоновке делать, только результат не выводить, а использовать его данные для обработки.
|
|||
|
20
Defender aka LINN
14.01.10
✎
09:25
|
(19) См. (5) :)
|
|||
|
21
mikeA
14.01.10
✎
09:28
|
(20) опаньки... ну, чукча - не читатель :)
|
|||
|
22
Freddy
14.01.10
✎
09:42
|
1. Юзай запрос в компоновщике, с которым связаны визуальные элементы.
2. Но в запрос добавь поля, которые расчитываешь. 3. Закрой по ним отбор. 4. Получи результат запроса и расчитай таблицу. 5. используй еще один компоновщик, который настрой на таблицу. 6. перекопируй настройки из первого компоновщика во второй... 7. сформируй и выведи результат вторым компоновщиком... Единственный минус нет отборов по расчитываемым полям... |
|||
|
23
detec
14.01.10
✎
09:54
|
Весь топик подробно не осилил.
Варианта 2. 1) Сделать в СКД тип набор данных - объект, и в него запихнуть объект - таблицу значений. Минусы тут уже описали плюс некоторые СУБД, в частности, Постргрес, ужасно тормозят на этой операции. 2) Написать сложный, поэтапный пакетный запрос. Не самый простой путь, но реальный. Я так примитивную обработку данных в коде 1С после прежних разработчиков почти полностью переложил на запрос в СКД. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |