Beitragvon FWENZL » Montag 7. November 2016, 10:25
Hallo Josef,
zu 1.
Die Filter werden recht selten bearbeitet, daher gibt es keinen Editor mehr an dieser Stelle.
Ich kopiere mir den XML Text in Notepad++, bearbeite Ihn dort und kopiere ihn dann zurück zu Kontor.
zu 2.
Das Format der Filter hat sich in R4 einwenig geändert, ist aber gut übertragbar, da die Logik die gleiche ist.
Es gibt drei Arten von FIltern:
Einfache Abfrage:
<tree>
<item name="Sets / Stücklisten" translation="">
<levelfilter>
<![CDATA[ARTIK.Artnr IN (SELECT Artnr FROM STKLIST_HD WHERE ISNULL(Aktiv, 0) = 1)]]>
</levelfilter>
</item>
</tree>
Baumstruktur:
<tree>
<groupedlist name="Warengruppen" translation="en:product groups1" levelvalue="Wg1" leveldesc="Bez" leveltranslation="">
<levelquery>
<![CDATA[Select Distinct ARTIK.Wg1, isnull(W.Bez, '_keine') as Bez from ARTIK LEFT OUTER JOIN ARTIK_WG1 W On W.Wg1 = ARTIK.Wg1 where {filter} Order By 2]]>
</levelquery>
<levelfilter>
<![CDATA[ISNULL(ARTIK.Wg1,'') = '{levelvalue}']]>
</levelfilter>
<groupedlist levelvalue="Wg2" leveldesc="Bez" leveltranslation="">
<levelquery>
<![CDATA[Select Distinct ARTIK.Wg2, isnull(W.Bez, '_ keine') as Bez from ARTIK LEFT OUTER JOIN ARTIK_WG2 W On W.Wg2 = ARTIK.Wg2 where {filter} and RefWg1 is not null Order by 2]]>
</levelquery>
<levelfilter>
<![CDATA[ISNULL(ARTIK.Wg2,'') = '{levelvalue}']]>
</levelfilter>
</groupedlist>
</groupedlist>
</tree>
Rekursive Baumstruktur:
<tree>
<groupedlist name="Verkaufsplattformen" translation="" levelvalue="Attrid" leveldesc="Attrname" rootvalue="Kategorie" leveltranslation="">
<levelquery>
<![CDATA[
Select ATTR.Attrid, ISNULL(P1.Katglobal, cast(P2.Platform as nvarchar(50))) as Kategorie, isnull(ATTR.Attrname, '- keine -') as Attrname, -1 as Anzahl from ATTR
LEFT OUTER JOIN OSA_PLATFORMS P1 ON P1.Attrglobal = ATTR.Attrid
LEFT OUTER JOIN OSA_PLATFORMS P2 ON P2.Attrshop = ATTR.Attrid
Where ATTR.Osakategorie is not null
And (P1.Platform is not null or P2.Platform is not null)
Group By ATTR.Attrid, ATTR.Attrname, ISNULL(P1.Katglobal, cast(P2.Platform as nvarchar(50)))
Order By 3
]]>
</levelquery>
<levelfilter>
<![CDATA[
ARTIK.Artnr
IN (
Select W.Srcvalue from ATTR_WERTE W
LEFT OUTER JOIN ATTR A ON A.Attrid = W.Attrid
LEFT OUTER JOIN OSA_KATWERTE K ON K.Katid = W.Dstvalue And K.Kategorie = A.Osakategorie
Where W.Attrid = '{rootid}' AND K.Kategorie = '{rootvalue}' And W.Dstvalue = '{levelvalue}'
) ]]>
</levelfilter>
<recursivelist levelvalue="Katid" leveldesc="Katname" leveltranslation="" childcount="Childcount">
<levelquery>
<![CDATA[
Select X.Katid, X.Katname, X.Anzahl, C.Childcount from
(
Select K.Katid, K.Katname, count(*) as Anzahl
from OSA_KATWERTE K
LEFT OUTER JOIN ATTR_WERTE W ON W.Attrid = {rootid} And W.Dstvalue = K.Katid
Where
K.Kategorie = '{rootvalue}'
And ISNULL(K.Katidparent,'') = '{parentvalue}'
Group By K.Katid, K.Katname, K.Katidparent
) X
LEFT OUTER JOIN (
Select P2.Katid, count (*) as Childcount from OSA_KATWERTE P1
LEFT OUTER JOIN OSA_KATWERTE P2 ON P2.Katid = P1.Katidparent And P2.Kategorie = P1.Kategorie
Where P1.Kategorie = '{rootvalue}'
Group By P2.Katid
) C ON C.Katid = X.Katid
order by case when ISNULL(C.Childcount,0) > 0 then 0 else 1 end, X.Katname
]]>
</levelquery>
<levelfilter>
<![CDATA[ISNULL(OSA_KATWERTE.Katid,'') = '{levelvalue}' And ISNULL(OSA_KATWERTE.Kategorie,'') = '{rootvalue}']]>
</levelfilter>
</recursivelist>
</groupedlist>
</tree>
Gruß,
Frank