tbischo
6th August 2003, 15:51
Hallo,

kennt jemand eine Möglichkeit aus dem Produktkonfigurator eine BaaN - Session zu starten und anschließend daraus einen Wert zurück an den Konfigurator zu geben?

Vielleicht gibt es ja eine Möglichkeit eines Calls aus der Beschränkung heraus? Wir haben BaaN IV C4 im Einsatz.

Danke, Thomas

Andreas
7th August 2003, 10:05
Hallo Thomas,

wir haben so etwas bei uns im Einsatz.
In den Konfiguratorskripten kannst du in der Regel alle 3gl-Befehle nutzen.
Wir haben es mit der Funktion zoom.to$ umgesetzt.
Die Übergabe eines Wertes ist ein bisschen tricky und hängt davon ab, ob die gestartete Session eine eigene oder eine Standardsession ist und/oder ob der zu übergebende Wert in einer Tabelle abgespeichert ist.
Solltest du noch Fragen haben, dann poste mal , was Du genau tun möchtest.

Gruß
Andreas

tbischo
7th August 2003, 11:22
Originally posted by Andreas
Hallo Thomas,

wir haben so etwas bei uns im Einsatz.
In den Konfiguratorskripten kannst du in der Regel alle 3gl-Befehle nutzen.
Wir haben es mit der Funktion zoom.to$ umgesetzt.
Die Übergabe eines Wertes ist ein bisschen tricky und hängt davon ab, ob die gestartete Session eine eigene oder eine Standardsession ist und/oder ob der zu übergebende Wert in einer Tabelle abgespeichert ist.
Solltest du noch Fragen haben, dann poste mal , was Du genau tun möchtest.

Gruß
Andreas


Hallo Andreas,

vielen Dank für Deine Hilfe.

Wir wollen bei uns generelle Artikel anlegen, die aus einem Standardartikel bestehen und zusätzlich noch verschiedene andere Merkmale haben. Ein Merkmal ist also die Standardartikelposition. Soweit kein Problem, funktioniert bei uns schon seit Jahren so. Dieses setzt allerdings voraus, dass man die Artikelnummer kennt. Der Artikel wird in der Beschränkung auf Gültigkeit geprüft, auch dieses funktioniert ohne Probleme. Wir möchten das ganze nun so erweitern, dass es möglich ist aus dem Produktmerkmal für den Standardartikel eine Suche nach dem Standardartikel zu machen, z.B. per Matchcode. Das aufzufrufende Programm könnte z. B. tiitm0502s000 sein (Wird auch bei der Auftragserfassung als Matchcodesuche im BaaN - Standard benutzt). Mein Problem ist nun, dass ich nicht weiß, ob der Aufruf der Session in der Beschränkung erfolgen kann/muss oder in einer BaaN - Session.

Für weitere Infos wäre ich sehr dankbar!

Thomas

Andreas
7th August 2003, 13:03
Hallo Thomas,

ich bin zwar auf Baan V und kenne die von dir erwähnte Session nicht, aber ich gehe davon aus, das das eine Session ist die dir den Artikelcode zeigt und das du diesen Artikelcode als Optionswert des Merkmals zurückgeben möchtest.

Hier besteht nun ein kleines Problem:
Wenn du die Session vom Konfigurator aus startest, stehen die Felder der Session als externe Felder zur Verfügung. Schließt du aber diese Session, so sind auch die Felder nicht mehr im Zugriff und du kannst den gewünschten Wert nicht in den Konfigurator importieren, es sei denn er wird in der aufgerufenen Session auf eine im Konfiguratorskript definierte externe Variable exportiert.

Wenn du keinen Zugriff auf die Baan-Sourcen hast oder den Standard nicht verändern möchtest, würde ich folgendermaßen vorgehen:

Eine neue Session erstellen auf deine Artikeldatei. in dieser Session in der Zoom-Section bei on exit die Variable exportieren (auf eine vorher in Konfiguratorscript definierte externe Variable) und diese dann in den Konfigurator importieren.

Ich hoffe das hilft,

Andreas

tbischo
7th August 2003, 17:52
Originally posted by Andreas
Hallo Thomas,

ich bin zwar auf Baan V und kenne die von dir erwähnte Session nicht, aber ich gehe davon aus, das das eine Session ist die dir den Artikelcode zeigt und das du diesen Artikelcode als Optionswert des Merkmals zurückgeben möchtest.

Hier besteht nun ein kleines Problem:
Wenn du die Session vom Konfigurator aus startest, stehen die Felder der Session als externe Felder zur Verfügung. Schließt du aber diese Session, so sind auch die Felder nicht mehr im Zugriff und du kannst den gewünschten Wert nicht in den Konfigurator importieren, es sei denn er wird in der aufgerufenen Session auf eine im Konfiguratorskript definierte externe Variable exportiert.

Wenn du keinen Zugriff auf die Baan-Sourcen hast oder den Standard nicht verändern möchtest, würde ich folgendermaßen vorgehen:

Eine neue Session erstellen auf deine Artikeldatei. in dieser Session in der Zoom-Section bei on exit die Variable exportieren (auf eine vorher in Konfiguratorscript definierte externe Variable) und diese dann in den Konfigurator importieren.

Ich hoffe das hilft,

Andreas

Hallo Andreas!

Danke, das mit der Session klappt jetzt, nur die Variable kommt nicht zurück. Weißt Du wir man diese in der Beschränkung deklarieren muss? Muss man sie dort importieren? Die BaaN Session für die Artikelsuche habe ich geändert, dort wird die Variable nun exportiert...

Danke nochmals, Thomas

Andreas
8th August 2003, 12:11
Hallo Thomas,

ich habe noch mal ein bisschen probiert.

Die Variable im Konfigurator kannst du mit dem Keyword extern definieren. Baan rät zwar davon ab, eine Variable in einer function (Konfiguratorskripte werden als einzelne functions in dem Objekt behandelt) extern zu deklarieren, aber es funktioniert (zumindest bei mir).

In der aufgerufenen Session mußt Du dann deinen Item-Code auf diese Variable exportieren:
entweder mit export(...) oder (mach ich lieber) mit
put.var(parent,...,...)
Damit steht sie dem Konfigurator zur Verfügung.
Aber Achtung:
Da Du mit zoom.to$ die session nicht modal aufrufen kannst, kannst du die Variable nicht innerhalb der selben function verwenden, sondern erst in der nächsten aufgerufenen function.

Wie du die Beschränkung anlegen mußt hängt nun davon ab, ob die gerufene Session als Modale Session gestartet wird.
Also, bei eigener neuer Session in Maintain Sessions den Windowtype auf 'Modal with Menu stellen'.

Dann in der Beschränkung (Vor der Eingabe) zoom.to$ ausführen und Wert setzen.
Hier mal ein Beispiel:

extern string test1(47)
if [LB001] <> "" and [LB012] = "" then
zoom.to$("tiipd0501m000",Z.SESSION,"","",1)
message ("%s", test1)
[LB012] = test1(9;8)
else
endif

Die if-clause steuert, das der Zoom nur unter bestimmten Bedingungen stattfindet (Vor der Eingabe wird sehr häufig ausgeführt).

Wenn Du die Session nicht modal starten kannst, dann läßt sich das ganze mit Hilfe der function wait() steuern.

Solltest Du noch Fragen haben, schick mir doch mal ne Mail.
Vielleicht können wir dann ja mal telefonieren.

Gruß
Andreas

tbischo
8th August 2003, 15:37
Hallo Andreas!


Super! Vielen Dank für Deine Hilfe, es funktioniert jetzt. Dein Posting hat mit sehr geholfen.


Thomas