|
СКД передача в параметр списка значений | ☑ | ||
---|---|---|---|---|
0
Pivas15
13.01.17
✎
13:38
|
Доброго времени суток! Столкнулся со следующей ситуацией, на платформе 8.2.19.83 для конфигурации УПП необходимо написать некий отчет на скд, в нем пользователь выбирает контрагента и период и получает определённые данные, тут все понятно, но теперь когда пользователю необходимо ввести несколько контрагентов, как поступать? По идее при настройке, в скд во вкладке параметры мы ставим галочку в поле "доступен список значений", заполняем значениями и тут платформа ругается что мы сравниваем либо строки неограниченной длинны либо несовместимые типы, тут все верно, ведь у параметра тип изначально стоит "СправочникСсылка.Контрагенты", как обойти данную ситуацию и позволить заполнение параметра контрагент, списком значений с целью получить данные по каждому значению в списке?
|
|||
1
Cool_Profi
13.01.17
✎
13:40
|
Запрос поменяй
|
|||
2
Pivas15
13.01.17
✎
13:46
|
(1) Логично что надо менять запрос, но что именно? Выставить другой тип у параметра?
|
|||
3
SergTheGreat
13.01.17
✎
13:55
|
(0) Вариант для программиста - поставить у параметра галку "доступен список", и пользователю для выбора конкретного контрагента нужно будет добавлять в список единственное значение.
Вариант для пользователя - заменить в СКД параметр на отбор. Соответственно пользователь сможет указывать как одно значение, так и список. А вот программисту придется переработать запрос :-) |
|||
4
mistеr
13.01.17
✎
14:07
|
(2) Сначала покажи, как в запросе используется параметр.
|
|||
5
Pivas15
13.01.17
✎
14:08
|
(4) Сам текст запроса:
ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, ВЫБОР КОГДА КонтактныеЛицаКонтрагентов.РольКонтактногоЛица = &РольКонтактногоЛица И КонтактныеЛицаКонтрагентов.ПометкаУдаления = ЛОЖЬ ТОГДА КонтактныеЛицаКонтрагентов.Ссылка КОНЕЦ КАК КонтактноеЛицо, ВЫБОР КОГДА _СтатусДистрибутиваСрезПоследних.СтатусОбслуживания = ИСТИНА ТОГДА _СтатусДистрибутиваСрезПоследних.Дистрибутив ИНАЧЕ NULL КОНЕЦ КАК Дистрибутив, ВЫБОР КОГДА _УсловияДоговора.Дата МЕЖДУ &ПериодНачало И &Период ТОГДА _УсловияДоговора.СуммаЗаГод ИНАЧЕ NULL КОНЕЦ КАК СуммаЗаГод, ВЫБОР КОГДА _УсловияДоговора.Дата МЕЖДУ &ПериодНачало И &Период ТОГДА _УсловияДоговора.Ссылка ИНАЧЕ NULL КОНЕЦ КАК Документ ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов ПО Контрагенты.Ссылка = КонтактныеЛицаКонтрагентов.Владелец ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._СтатусДистрибутива.СрезПоследних КАК _СтатусДистрибутиваСрезПоследних ПО Контрагенты.Ссылка = _СтатусДистрибутиваСрезПоследних.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ Документ._УсловияДоговора КАК _УсловияДоговора ПО Контрагенты.Ссылка = _УсловияДоговора.Контрагент ГДЕ Контрагенты.Ссылка = &Контрагент СГРУППИРОВАТЬ ПО Контрагенты.Ссылка, ВЫБОР КОГДА КонтактныеЛицаКонтрагентов.РольКонтактногоЛица = &РольКонтактногоЛица И КонтактныеЛицаКонтрагентов.ПометкаУдаления = ЛОЖЬ ТОГДА КонтактныеЛицаКонтрагентов.Ссылка КОНЕЦ, ВЫБОР КОГДА _УсловияДоговора.Дата МЕЖДУ &ПериодНачало И &Период ТОГДА _УсловияДоговора.СуммаЗаГод ИНАЧЕ NULL КОНЕЦ, ВЫБОР КОГДА _УсловияДоговора.Дата МЕЖДУ &ПериодНачало И &Период ТОГДА _УсловияДоговора.Ссылка ИНАЧЕ NULL КОНЕЦ, ВЫБОР КОГДА _СтатусДистрибутиваСрезПоследних.СтатусОбслуживания = ИСТИНА ТОГДА _СтатусДистрибутиваСрезПоследних.Дистрибутив ИНАЧЕ NULL КОНЕЦ |
|||
6
serg-lom89
13.01.17
✎
14:13
|
ГДЕ
Контрагенты.Ссылка = &Контрагент тут надо ставить другое условие если не ошибаюсь |
|||
7
serg-lom89
13.01.17
✎
14:13
|
в иерархии(&Контрагент)
|
|||
8
Pivas15
13.01.17
✎
14:23
|
(7) К сожалению не получилось.
|
|||
9
Pivas15
13.01.17
✎
14:30
|
(3) Собственно замена параметра на отбор работает, а все таки можно данную задачу решить именно через параметр? И попутно вопрос какая разница в производительности у отбора и параметра?
|
|||
10
serg-lom89
13.01.17
✎
14:33
|
(9) с параметром быстрее он сразу налаживается,а отбор сразу результат выполняется ,а затем отбор налаживается.(если память не изменяет)
|
|||
11
Pivas15
13.01.17
✎
14:34
|
(10) Ага, получается параметр отрабатывает в момент выполнения запроса, а отбор натягивается уже на результаты работы запроса... Тогда да, параметр быстрее выходит... Надо ещё замерить... Спасибо ))
|
|||
12
SergTheGreat
13.01.17
✎
15:23
|
(10) Не совсем так. Если отбор установлен для какой-либо части СКД, то он действительно будет накладываться на результат выборки СУБД. Если же отбор установлен на верхнем уровне "Отчет", то он будет добавлен в запрос, отправляемый к СУБД, наравне с параметрами.
|
|||
13
Pivas15
13.01.17
✎
15:30
|
(12) Это же отлично! Получается не надо мудрить с параметрами в надежде выиграть по времени лишнюю секунду.
|
|||
14
FIXXXL
13.01.17
✎
17:25
|
(13) отправь свои параметры на закладку Компановка в запросе и не люби мозги :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |