Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Oracle reports использование supermag.RepTools.LoadClass : Супермаг Плюс (Супермаг 2000)

24.04.2024 5:17


01.04.2016 12:11
xray84
 
Доброго дня!
Понадобился отчет по заказам, у которых нет подтверждения заказов.
Не могу понять как в отчет добавить фильтр по поставщикам.

supermag.RepTools.LoadClass(:P_SUPP, :P_SuppAll, :P_SuppId); - вот эту функцию бы в запрос засунуть. Но как и куда?

Вот часть запроса:
Цитата:
(select distinct d.id, d.createdat, cl.name, st.docstatename, loc.name, d.totalsum from supermag.smdocuments d, supermag.SMclientinfo cl, supermag.SMStoreLocations loc, supermag.SSdocstates st
where (d.createdat between :P_FIRSTDATE and :P_LASTDATE) and (d.docstate = '2' OR d.docstate = '3') and d.doctype = 'OR' and cl.id = d.clientindex and loc.id = d.location
and d.doctype = st.doctype and d.docstate = st.docstate)
01.04.2016 16:28
svtl
 
эта не функция, а процедура. Заполняет временную таблицу TTSupplList (или TTClientList - В зависимости от входных параметров.
01.04.2016 16:35
svtl
 
править не получается почему-то. по-моему, RepTools.LoadClass - это процедура для заполнения ttidgroup, входные параметры связаны с выбором групп/ассортиментов/номенклатур и группировкой по группам товаров.
для контрагентов используется RepTools.LoadCompanies
01.04.2016 16:36
vdm
 
А откуда это вытащено: supermag.RepTools.LoadClass(:P_SUPP, :P_SuppAll, :P_SuppId). LoadClass это же для товаров.
Для контрагентов есть Supermag.RepTools.LoadSuppl(:P_SUPPALL, :P_SUPPID).
В WHERE запроса подставляется текст возвращаемый supermag.RepTools.SupplString(0,'d.ClientIndex').
01.04.2016 16:39
svtl
 
LoadSuppl - давно, тогда отдельно были поставщики, отдельно клиенты.
Сейчас можно брать LoadCompanies
07.04.2016 07:36
xray84
 
supermag.RepTools.LoadClass - вот это взял по аналогии с товарами да ранее делал отчет, конечно неправ я тут был..

LoadCompanies -- вот этот пытался в AFTER PARAMETR FORM подставлять, ругается оракл репортс на него, а Supermag.RepTools.LoadSuppl вот этот норм. идет!

Вот в чем загвоздка у меня: подставил в WHERE но у меня работает он только когда одного только поставщика выбрать, если несколько или все то просто пустой отчет.
Вот полный текст запроса:

SQL код:
:P_SQL := '(select distinct d.id, d.createdat, cl.name, st.docstatename, loc.name, 
d.totalsum from supermag.smdocuments d, supermag.SMclientinfo cl, supermag.SMStoreLocations loc, 
supermag.SSdocstates st where (d.createdat between  :P_FIRSTDATE and :P_LASTDATE) 
and (d.docstate = ''2'' OR d.docstate = ''3'') and d.doctype = ''OR'' and cl.id = d.clientindex and loc.id = d.location
 and (d.clientindex in :P_SUPPID) and d.doctype = st.doctype and d.docstate = st.docstate and d.ClientIndex = d.ClientIndex '
 
||  supermag.RepTools.SupplString(0,'d.ClientIndex') || 
 
') 
 MINUS (select distinct d.id, d.createdat, cl.name, st.docstatename, loc.name, 
 d.totalsum from supermag.smdocuments d, supermag.SMclientinfo cl, supermag.SMStoreLocations loc, 
 supermag.SSdocstates st, supermag.Smcommonbases comm where (d.createdat between  :P_FIRSTDATE and :P_LASTDATE) 
 and (d.docstate = ''2'' OR d.docstate = ''3'') and d.doctype = ''OR'' and cl.id = d.clientindex and loc.id = d.location 
 and (d.clientindex in :P_SUPPID) and d.doctype = st.doctype 
 and d.docstate = st.docstate and comm.doctype = ''OE'' and comm.baseid = d.id and d.ClientIndex = d.ClientIndex '
 
||  supermag.RepTools.SupplString(0,'d.ClientIndex') || 
 
');'
19.04.2016 14:25
vdm
 
Это зачем?
Код:
and (d.clientindex in :P_SUPPID)
20.04.2016 03:29
xray84
 
эмм лишнее похоже..
теперь когда выбираю 2 поставщика, выводится норм., но когда захожу для выбора поставщика, когда тоже самое оставляю (2 ранее выбранных), то в итоге получается что 1 выходит...второго нет.
20.04.2016 05:56
xray84
 
все норм! ))
спасиб большущее!!!!!

вот рабочий вариант (с фильтром по классификатору):

Цитата:
:P_SQL := '(select distinct d.id, d.createdat, cl.name, st.docstatename, loc.name,
d.totalsum from supermag.smspec s, supermag.smdocuments d, supermag.SMclientinfo cl, supermag.SMStoreLocations loc,
supermag.SSdocstates st,'
||
supermag.RepTools.ClassString(2) ||
'supermag.smcard c

where (d.createdat between :P_FIRSTDATE and :P_LASTDATE)
and (d.docstate = ''2'' OR d.docstate = ''3'') and d.doctype = ''OR'' and cl.id = d.clientindex and loc.id = d.location
and d.doctype = st.doctype and d.docstate = st.docstate and d.id = s.docid and d.ClientIndex = d.ClientIndex '
|| supermag.RepTools.SupplString(0,'d.ClientIndex') ||
' and s.article = c.article ' ||
supermag.RepTools.ClassString(3,'c') ||
')
MINUS (select distinct d.id, d.createdat, cl.name, st.docstatename, loc.name,
d.totalsum from supermag.smspec s, supermag.smdocuments d, supermag.SMclientinfo cl, supermag.SMStoreLocations loc,
supermag.SSdocstates st, supermag.Smcommonbases comm,'
||
supermag.RepTools.ClassString(2) ||
'supermag.smcard c

where (d.createdat between :P_FIRSTDATE and :P_LASTDATE)
and (d.docstate = ''2'' OR d.docstate = ''3'') and d.doctype = ''OR'' and cl.id = d.clientindex and loc.id = d.location
and d.doctype = st.doctype
and d.docstate = st.docstate and comm.doctype = ''OE'' and d.id = s.docid and comm.baseid = d.id and d.ClientIndex = d.ClientIndex '
|| supermag.RepTools.SupplString(0,'d.ClientIndex') ||
' and s.article = c.article ' ||
supermag.RepTools.ClassString(3,'c') ||
');';
Часовой пояс GMT +3, время: 05:17.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.