Filtereinstellungen Kontor 2008 vs. R4

Allgemeine Fragen zur Installation

Moderator: codegarden

jhoelzl
Beiträge: 462
Registriert: Dienstag 26. August 2008, 11:37

Filtereinstellungen Kontor 2008 vs. R4

Beitragvon jhoelzl » Sonntag 6. November 2016, 20:29

Hallo,

ich möchte gerne alle meine Filter, die ich in allen Kontor 2008 Modulen selbst hinzugefügt habe nach Kontor R4 übertragen.

1.
Wenn ich in Kontor R4 auf die Modulkonfiguration > Filtereinstellungen gehe, bekomme ich nur den XML-Code von allen Filtern für dieses Modul. Das ist leider sehr unübersichtlich und schwierig zu bearbeiten. In Kontor 2008 gab es noch eine grafische Übersicht aller Filter "als Ordner / Dateien", gibt es soetwas auch in Kontor R4?

2.
In Kontor 2008 habe ich einen Filter in einem Order "Standardlieferant" mit Namen "$GRUPPENLISTE" angelegt:

Code: Alles auswählen

Select A.Liefnr, ISNULL(L.Name1,'keine Zuordnung')
from ARTIK A
LEFT OUTER JOIN LIEFE L ON A.Liefnr = L.Liefnr
order by L.Name1

In Kontor R4 sehe ich, dass so ein Filter ganz anders angelegt wird. Wie würde denn der XML-Code für dieses Beispiel aussehen?
Danke!

LG Josef
FWENZL
Beiträge: 658
Registriert: Freitag 15. August 2008, 12:06

Re: Filtereinstellungen Kontor 2008 vs. R4

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
FWENZL
Beiträge: 658
Registriert: Freitag 15. August 2008, 12:06

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon FWENZL » Montag 7. November 2016, 14:49

Das Filter für Ihr Beispiel, müßte folgendermaßen formuliert werden:

Code: Alles auswählen

<tree>
   <groupedlist name="Lieferanten" translation="" levelvalue="Liefnr" leveldesc="Name" leveltranslation="">
      <levelquery>
         <![CDATA[SELECT DISTINCT ARTIK.Liefnr, ISNULL(L.Name1, 'keine Zuordnung') as Name
         from ARTIK
         LEFT OUTER JOIN LIEFE L ON ARTIK.Liefnr = L.Liefnr
         order by 2]]>
      </levelquery>
      <levelfilter>
         <![CDATA[ISNULL(ARTIK.Liefnr,'') = '{levelvalue}']]>
      </levelfilter>
   </groupedlist>
</tree>
jhoelzl
Beiträge: 462
Registriert: Dienstag 26. August 2008, 11:37

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon jhoelzl » Freitag 11. November 2016, 16:40

Hallo Herr Wenzl,

vielen Dank für die Erklärung. Ich habe den Warengruppen-Filter ausprobiert, es wird zwar die Wg1 richtig als Baum dargestellt und ist filterbar (= Artikel werden in Listenansicht gefiltert, aber wenn man bei einer Wg1 den Baum "aufklappen" will (also passende Wg2 einblenden), werden keine Wg2 dargestellt. Obwohl die gefilterten Artikel einer Wg2 zugeordnet sind.

Wenn man im Code

Code: Alles auswählen

and RefWg1 is not null

löscht, werden auch die richtige Wg2-Ebene als Baum beim Wg1 angezeigt, aber wenn man auf eine Wg2-Bezeichnung klickt wird die Filteransicht der Artikel nicht aktualisiert.
Für was wird die Spalte "RefWg1" in Tabelle ARTIK_WG2 überhaupt verwendet? Bei uns in der Datenbank ist diese immer NULL.

Auch das obige Beispiel mit den Lieferanten habe ich eingefügt. Die Lieferanten-Namen werden als Baum dargestellt, aber wenn ich auf einen Lieferanten klicke, wird in der Listenansicht nichts gefiltert, es sind immer alle Artikel sichtbar.

Vielleicht haben Sie da noch einen Tipp für mich...
LG Josef
FWENZL
Beiträge: 658
Registriert: Freitag 15. August 2008, 12:06

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon FWENZL » Montag 14. November 2016, 09:45

Hallo Josef,

Ich habe die Filter gerade selbst getestet und scheinbar funktionieren die Filter in der Version R4 840 aufgrund eines Bugs nicht immer korrekt.
Das Verhalten das Sie beschreiben, tritt bei uns auch so auf.
Die Anzeige der zweiten Ebene funktioniert, allerdings muß die Maske dafür neu geladen werden.
Das Filter auf der zweite Ebene wird dann aber nicht angewendet.

Mit dem nächsten Kontor Update (das hoffentlich bald freigegeben wird) wird dieses Problem behoben sein.
In unserer internen Testversion funktioniert alles korrekt.


In das Feld RefWg1 kann (optional) eine Warengruppe 1 eingetragen werden um eine Abhängigkeit zu bilden.
Wenn eine Abhängigkeit besteht, soll bei der Auswahl der Warengruppe 2 nur diese Einträge angezeigt werden.
Leider hat sich auch hier ein kleiner Tippfehler im Skript eingeschlichen. Schauen Sie bitte einmal nach folgenden Codeabschnitt:

Code: Alles auswählen

' Benutzerdefinierte Suchfunktion
Sub MskSearchlist(ByVal fldname As String, ByVal inpval As String, ByVal lookupmask As String, ByRef handled As Boolean, ByRef foundid As String) Handles KON.MskSearchlist
Try
   foundid = ""
   handled = False
   Select Case fldname.ToUpper()
      Case "ARTIK.ERLOESART"
         handled = True
         foundid = KON.DisplayQuickselection("FIBU_ERLOESARTEN", "Select Distinct Erloesart, 'Erlösart ' + Erloesart from FIBU_ERLOESARTEN Order by 1", False, "Erlösart auswählen:")
         KON.SetContextField("ARTIK.Erloesart", foundid)
         Exit Sub
      Case "ARTIK.Wg2"
         handled = True
         Dim wg1 As String = KON.GetContextField("ARTIK.Wg1")
         foundid = KON.DisplayQuickselection("ARTIK_WG2", "SELECT Wg2, ISNULL(Bez, Wg2) AS Bez FROM ARTIK_WG2 WHERE ISNULL(RefWg1, '') = '" & wg1 & "' ORDER BY 1", True, "Warengruppe 2 auswählen:")
         KON.SetContextField("ARTIK.Wg2", foundid)
         Exit Sub
      Case Else   
         ' normale Behandlung
      End Select
Catch ex As Exception
   MsgBox(KON.GetRSLocal("MSG04","Fehler: ") & ex.tostring,msgboxstyle.Critical,KONAPP.CGRESTranslate(0))
End Try
End Sub


Korrigieren Sie die Zeile "Case "ARTIK.Wg2" zu "Case "ARTIK.WG2", dann sollte die Auswahl auch mit Abhängigkeiten funktionieren.

Gruß,
Frank
jhoelzl
Beiträge: 462
Registriert: Dienstag 26. August 2008, 11:37

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon jhoelzl » Donnerstag 1. Dezember 2016, 08:23

Hallo Herr Wenzl,

wäre es möglich einen Bugfix-Release (oder nur die betreffende dll-Datei) bereitzustellen, die das Problem mit den Filtern löst?
Wieder auf die nächste Version warten kann bei eurem Versionszyklus noch 1 Jahr dauern ...

LG Josef
FWENZL
Beiträge: 658
Registriert: Freitag 15. August 2008, 12:06

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon FWENZL » Freitag 2. Dezember 2016, 09:44

Hallo Josef,

nun ja, Kontor Updates erscheinen normalerweise im Abstand von ca. einem Jahr.
Dieses Jahr sind wir zugegebenermaßen etwas spät.

In diesem speziellen Fall läßt sich der der Bugfix auch in die Basis der Version 840 integrieren.
Anbei ein Update für das "Filterproblem":

CG.Kontor.Dataform.dll.zip
(486.05 KiB) 549-mal heruntergeladen


Die im Zip enthaltene DLL-Datei ins Prog20 der Kontorinstallation (nur für Version 840).

Gruß,
Frank
jhoelzl
Beiträge: 462
Registriert: Dienstag 26. August 2008, 11:37

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon jhoelzl » Freitag 2. Dezember 2016, 10:14

Besten Dank!
jhoelzl
Beiträge: 462
Registriert: Dienstag 26. August 2008, 11:37

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon jhoelzl » Sonntag 11. Dezember 2016, 20:03

Wie kann man denn diese beiden einfachen Filter in einen Unterordner namens "Fehler" verschieben?

Code: Alles auswählen

<tree>

<item name="ohne Wg1" translation="">
<levelfilter><![CDATA[ARTIK.Wg1 = 999 or ARTIK.Wg1 IS NULL]]></levelfilter>
</item>

<item name="ohne Wg2" translation="">
<levelfilter><![CDATA[ARTIK.Wg2 = 999 or ARTIK.Wg2 IS NULL]]></levelfilter>
</item>

</tree> 


LG Josef
FWENZL
Beiträge: 658
Registriert: Freitag 15. August 2008, 12:06

Re: Filtereinstellungen Kontor 2008 vs. R4

Beitragvon FWENZL » Sonntag 11. Dezember 2016, 20:10

Code: Alles auswählen

<tree>
<folder name="Fehler">
<item name="ohne Wg1" translation="">
<levelfilter><![CDATA[ARTIK.Wg1 = 999 or ARTIK.Wg1 IS NULL]]></levelfilter>
</item>

<item name="ohne Wg2" translation="">
<levelfilter><![CDATA[ARTIK.Wg2 = 999 or ARTIK.Wg2 IS NULL]]></levelfilter>
</item>
</folder>
</tree>


Gruss,
Frank

Zurück zu „Allgemeine Fragen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste