|
Как добавить пользовательский отбор во внутренний запрос пакета в СКД | ☑ | ||
---|---|---|---|---|
0
koresh
13.01.16
✎
20:58
|
Добрый день!
Имеется пакетный запрос в отчете на СКД. Нужно дать возможность пользователю устанавливать произвольный отбор по полю SellOut.ТипРегистрации во внутреннем запросе, где идет запись во временную таблицу тмпSellOut. ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, NULL КАК Модель, ПродажиОбороты.КоличествоОборот КАК КолвоПродаж, 0 КАК КолвоАвто ПОМЕСТИТЬ тмпПродажи ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ДоговорКонтрагента.Владелец В ИЕРАРХИИ (&Покупатели)) КАК ПродажиОбороты ИНДЕКСИРОВАТЬ ПО Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ SellOut.Автомобиль.Модель КАК Модель, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ SellOut.Автомобиль) КАК КолвоАвто ПОМЕСТИТЬ тмпSellOut ИЗ РегистрСведений.SellOut КАК SellOut ГДЕ SellOut.RetailDate МЕЖДУ &НачалоПериода И &КонецПериода СГРУППИРОВАТЬ ПО SellOut.Автомобиль.Модель ИНДЕКСИРОВАТЬ ПО Модель ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫРАЗИТЬ(КатегорииОбъектов.Объект КАК Справочник.Номенклатура) КАК Номенклатура, КатегорииОбъектов.Категория.Наименование КАК Модель ПОМЕСТИТЬ тмпКатегорииОбъектов ИЗ РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов ГДЕ КатегорииОбъектов.Объект ССЫЛКА Справочник.Номенклатура ИНДЕКСИРОВАТЬ ПО Модель ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КатегорииОбъектов.Номенклатура КАК Номенклатура, SellOut.Модель КАК Модель, 0 КАК КолвоПродаж, SellOut.КолвоАвто КАК КолвоАвто ПОМЕСТИТЬ тмпSellOutСНоменклатурой ИЗ тмпКатегорииОбъектов КАК КатегорииОбъектов ВНУТРЕННЕЕ СОЕДИНЕНИЕ тмпSellOut КАК SellOut ПО КатегорииОбъектов.Модель = SellOut.Модель ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Модель КАК Модель, Продажи.КолвоПродаж КАК КолвоПродаж, Продажи.КолвоАвто КАК КолвоАвто ПОМЕСТИТЬ тмпИтоговаяТаблица ИЗ тмпПродажи КАК Продажи ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ SellOut.Номенклатура, SellOut.Модель, SellOut.КолвоПродаж, SellOut.КолвоАвто ИЗ тмпSellOutСНоменклатурой КАК SellOut ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ИтоговаяТаблица.Номенклатура КАК Номенклатура, СУММА(ИтоговаяТаблица.КолвоПродаж) КАК КолвоПродаж, СУММА(ИтоговаяТаблица.КолвоАвто) КАК КолвоАвто, ВЫБОР КОГДА СУММА(ИтоговаяТаблица.КолвоАвто) = 0 ТОГДА 0 ИНАЧЕ ВЫРАЗИТЬ(СУММА(ИтоговаяТаблица.КолвоПродаж) / СУММА(ИтоговаяТаблица.КолвоАвто) * 100 КАК ЧИСЛО(15, 2)) КОНЕЦ КАК КоэфУстановки ИЗ тмпИтоговаяТаблица КАК ИтоговаяТаблица СГРУППИРОВАТЬ ПО ИтоговаяТаблица.Номенклатура ИМЕЮЩИЕ СУММА(ИтоговаяТаблица.КолвоПродаж) <> 0 Проблема в том, что это поле находится во внутреннем запросе пакета, и в список доступных для отбора полей оно не попадает. Можно, конечно, использовать отбор с помощью параметра. Например, SellOut.ТипРегистрации = &ТипРегистрации Но это очень неудобно, так как нужно обязательно указывать значение параметра, и проверка выполняется только на равенство. Как быть в подобной ситуации? Используем платформу 8.2.17.169. |
|||
1
XLife
13.01.16
✎
21:09
|
{ГДЕ
SellOut.ТипРегистрации КАК ТипРегистрации} |
|||
2
koresh
15.01.16
✎
13:07
|
(1) Отбор стал доступен, но в отчет выводится пустота :(.
|
|||
3
Nuobu
15.01.16
✎
13:09
|
(2) Галочку в параметре убери, тогда и отбор уйдёт.
|
|||
4
koresh
15.01.16
✎
14:11
|
(1) Все работает. Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |