Willkommen
Gast
. Bitte
einloggen
oder
registrieren
.
26.05.12 - 00:57:29
News:
Schnellsuche:
Das Notes Forum
Lotus Notes / Domino 8
ND8: Entwicklung
(Moderatoren:
Axel
,
Thomas Schulte
,
koehlerbv
)
Item ändern mit Aktion
« vorheriges
nächstes »
Seiten:
[
1
]
2
Autor
Thema: Item ändern mit Aktion (Gelesen 526 mal)
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Item ändern mit Aktion
«
am:
10.01.12 - 09:44:09 »
Guten Morgen.
Wir haben eine Anwendung zugekauft, in der wir Dokumente erstellt haben. In der Maske wird eine versteckte Teilmaske eingebunden und hier wird im Postsave geprüft, ob sich ein bestimmtes Feld geändert hat. Trifft dies zu, wird eine Mail versendet, die einer Mail-IN mitteilt, dass sich was geändert hat.
Jetzt muss in vielen Dokumenten dieses Feld nach einem bestimmten Kriterium geändert werden.
Ich dachte mir, ich schreibe einen Agenten (Formel, nicht Skript)), der zwei Dialogfelder hat "alter Wert" "neuer Wert" und sich dann die Dokumente sucht und den Wert des Items austauscht.
Irre ich mich, wenn ich mir denke, dass dabei aber diese Änderungsmail nicht versendet wird?
Wenn nein, was müsste ich machen, damit die Mail doch versendet wird? Ich brauche keinen Code, sondern nur eine formale Beschreibung der Vorgehensweise.
Vielen Dank schon mal.
Gruss
Gespeichert
Geri
umi
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1325
one notes to rule'em all, one notes to find'em....
Re: Item ändern mit Aktion
«
Antworten #1 am:
10.01.12 - 09:56:37 »
Guten Morgen
Wenn Du das Dokument im Backend (per Agent) änderst, wird der Postsave nicht ausgeführt. Daher wird kein Mail verschickt.
Ist das Mail zwingend nötig? Dann würde ich den entsprechenden Code aus dem Postsave Event in deinen Agenten einfügen oder die Meldung in deinem Agenten generieren.
Gruss
Gespeichert
Gruss
Urs
<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CAAD R6/6.5
CAAD R7
CAD R8
CAD R8.5
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
Twitter: umeli
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #2 am:
10.01.12 - 10:21:36 »
Hallo und Danke!
Zitat
Wenn Du das Dokument im Backend (per Agent) änderst, wird der Postsave nicht ausgeführt. Daher wird kein Mail verschickt.
Gut, dann hatte ich das schon richtig verstanden.
Zitat
Ist das Mail zwingend nötig?
Ja, absolut. Die Mail ist für die Buchhaltung, dass sich der Inventarstandort (=Kostenstelle) geändert hat und in der Anlagenbuchhaltung eine Umbuchung vorzunehmen ist.
Zitat
Dann würde ich den entsprechenden Code aus dem Postsave Event in deinen Agenten einfügen oder die Meldung in deinem Agenten generieren.
Dann muss ich aber statt Formel Script verwenden, der Code ist Script. Da bin ich nun gar nicht fit.
Hmm, Moment, ich könnte doch diesen Code in einen Agenten eintragen, welcher durch "Auswahl in der Agentenliste" von meinem Formelagenten aufgerufen wird?!
Gespeichert
Geri
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 19053
Re: Item ändern mit Aktion
«
Antworten #3 am:
10.01.12 - 11:06:11 »
Dazu müsstest Du aber das gerade bearbeitete Dokument an den Agent übergeben. Trivial wird das nicht, wenn man nicht in LS fit ist.
Bernhard
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #4 am:
10.01.12 - 11:43:09 »
Hallo Bernhard,
da hab ich mir auch eben die Zähne ausgebissen.
Den Code als Sub in einer Scriptbibliothek ablegen und dann per Formel aufrufen geht ja auch nicht, so wie ich das sehe. Zumindest finde ich in der Formelübersicht keinen entsprechenden Aufruf...
Per Formel Dokument öffnen, Feld verändern und dann speichern scheitert am Speichern.
Ich glaube, ich mach das dann doch komplett in Script. Hab ja hier ein sehr dickes Buch liegen...
Danke nochmal und beste Grüsse.
Gespeichert
Geri
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #5 am:
10.01.12 - 12:35:46 »
Nun denn - der Benutzer markiert sich in der Ansicht die gewünschten Dokumente oder sucht sich diese über Volltext.
Der Agent läuft auf "Alle ausgewählten Dokumente" und führt folgendes Script aus:
Zitat
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim Kostenstelle_neu As String
Set db := session.CurrentDatabase
Set dc := db.UnprocessedDocuments
Set doc := dc.GetFirstDocument
Kostenstelle_neu := (InputBox$("Bitte neue Kostenstelle angeben!"))
While Not doc Is Nothing
Set uidoc := ws.EditDocument(True, doc)
Call uidoc.FieldSetText(Kostenstelle, Kostenstelle_neu )
Call uidoc.Refresh
Call uidoc.Save
Call uidoc.Close
Set doc := dc.GetNextDocument(doc)
Wend
End Sub
Würde das tun? Im Moment ist mein Testsystem in Wartung, kann es also nicht ausprobieren.
Grüsse
Gespeichert
Geri
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 19053
Re: Item ändern mit Aktion
«
Antworten #6 am:
10.01.12 - 12:41:13 »
":=" ist falsch, in LS ist das "=".
Weiters: Warum machst Du das im Frontend? Du kannst doch gleich im Backend Deinen Wert setzen:
While Not doc Is Nothing
doc.Kostenstelle = Kostenstelle_neu
Call doc.Save (True, False, True)
Set doc = dc.GetNextDocument(doc)
Wend
Bernhard
«
Letzte Änderung: 10.01.12 - 13:19:10 von koehlerbv
»
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #7 am:
10.01.12 - 13:02:50 »
Zitat von: koehlerbv am 10.01.12 - 12:41:13
":=" ist falsch, in LS ist das "=".
Schande, zu viel PL/SQL im Kopf.
Zitat
doc.Kostenstelle = Kostenstelle_neu
Ja, da hab ich zu kompliziert gedacht.
Zitat
Weiters: Warum machst Du das im Frontend? Du kannst doch gleich im Backend Deinen Wert setzen:
Ich dachte, dann zieht doch das andere Script aus dem Postsave der Teilmaske nicht?
Gespeichert
Geri
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 19053
Re: Item ändern mit Aktion
«
Antworten #8 am:
10.01.12 - 13:05:50 »
Den entsprechenden Code bzw. die Aufrufe zu fertigen Routinen kannst Du doch in Deinem Agentileinchen auch einsetzen, Geri.
Bernhard
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #9 am:
10.01.12 - 13:17:13 »
Zitat von: koehlerbv am 10.01.12 - 13:05:50
Den entsprechenden Code bzw. die Aufrufe zu fertigen Routinen kannst Du doch in Deinem Agentileinchen auch einsetzen, Geri.
Bernhard
Du traust mir nun wahrlich zu viel zu. Das Büchlein, aus dem ich mir den Code zusammengesucht habe, hat nur über 1200 Seiten. Bis ich mir daraus dann zusammengesaugt habe, was das andere Script genau macht und es angepasst habe, werden wohl einige Sekunden vergehen...
Und der andere Code ist nicht in einer Bibliothek abgelegt, sondern direkt im Postsave (bzw. im Postopen wird sich da auch was gemerkt / zusammengebastelt).
Aber Du hast schon wahr!
Grundsätzlich würde mein Agent aber laufen?!
Edit: Wenn ich drüber nachdenke - ich habe die Befürchtung, dass das lange laufen wird und ein ziemliches Geflacker auf dem Bildschirm werden wird.
Ich versuch mal, ob ich die Scripte zusammen führen kann. Darf ich dann zur Überprüfung das Ding nochmal hier rein stellen?
Danke erstmal.
«
Letzte Änderung: 10.01.12 - 13:19:40 von smokyly
»
Gespeichert
Geri
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 19053
Re: Item ändern mit Aktion
«
Antworten #10 am:
10.01.12 - 13:20:23 »
Mein Vorschlag für das Backend würde aber nicht "flackern". Flott ist das auch.
Wie wird denn bzgl. was im PostSave aufgerufen?
Bernhard
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1356
Re: Item ändern mit Aktion
«
Antworten #11 am:
10.01.12 - 13:27:00 »
Das Verfahren über das Frontend hat neben dem Flackern auch noch einen weiteren Nachteil: Probier das mal mit mehreren Dokumenten aus. Spätestens beim 50. oder 60. Dokument raucht Dir nämlich der Client ab (ich habe solch eine Routine, die über das Frontend MUSS, das geht da leider nicht anders, dort haben wir eine Grenze von 40 eingestellt).
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #12 am:
10.01.12 - 13:32:52 »
Zitat von: koehlerbv am 10.01.12 - 13:20:23
Mein Vorschlag für das Backend würde aber nicht "flackern". Flott ist das auch.
Ja, das hatte ich verstanden, drum mein Umschwenken.
Zitat
Wie wird denn bzgl. was im PostSave aufgerufen?
Bernhard
Es wird eine Mail erstellt, durch einen Vergleich des aktuellen Wertes eines Items des Dokuments und einer Variablen(!, also kein Feld), die woher auch immer kommt und dann wird da noch was mit Workflow gesteuert und gemacht, aber da steig ich nicht durch, da dann Bibliotheken aufgerufen werden. Das mit der Mail war ne Schnellanpassung für uns, der Rest ist Standard des Herstellers.
So wie ich das sehe, zieht bei einer Änderung des Feldes im Dialog nur die Mailgeschichte, ganz sicher bin ich natürlich nicht.
Jetzt raucht die Birne...
Gespeichert
Geri
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1356
Re: Item ändern mit Aktion
«
Antworten #13 am:
10.01.12 - 13:38:00 »
Zitat von: smokyly am 10.01.12 - 13:32:52
... und einer Variablen(!, also kein Feld), die woher auch immer kommt ...
Die Variable ist bestimmt in den Declarations deklariert und wird im PostOpen gesetzt.
Das ist ein gängiges und gutes Verfahren:
Globale Variable im PostOpen mit dem aktuellen Feldwert setzen
Im PostSave (oder QuerySave) den nun aktuellen Feldwert mit der Variablen (also dem Wert zum Zeitpunkt des Öffnens) vergleichen und daraus Aktionen ableiten
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #14 am:
10.01.12 - 13:38:04 »
Zitat von: Peter Klett am 10.01.12 - 13:27:00
Das Verfahren über das Frontend hat neben dem Flackern auch noch einen weiteren Nachteil: Probier das mal mit mehreren Dokumenten aus. Spätestens beim 50. oder 60. Dokument raucht Dir nämlich der Client ab (ich habe solch eine Routine, die über das Frontend MUSS, das geht da leider nicht anders, dort haben wir eine Grenze von 40 eingestellt).
Danke für die Info. Gut zu wissen.
Gespeichert
Geri
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #15 am:
10.01.12 - 13:41:22 »
Zitat von: Peter Klett am 10.01.12 - 13:38:00
Die Variable ist bestimmt in den Declarations deklariert
Da hatte ich zuerst gesucht.
Zitat
und wird im PostOpen gesetzt.
Super, gefunden, hier deklariert und gesetzt.
Zitat
Das ist ein gängiges und gutes Verfahren:
Globale Variable im PostOpen mit dem aktuellen Feldwert setzen
Im PostSave (oder QuerySave) den nun aktuellen Feldwert mit der Variablen (also dem Wert zum Zeitpunkt des Öffnens) vergleichen und daraus Aktionen ableiten
OK, und nun hab ich auch schon die Idee, wie ich das dann im Backendscript umsetze.
Beste Grüsse!
Gespeichert
Geri
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1356
Re: Item ändern mit Aktion
«
Antworten #16 am:
10.01.12 - 13:49:06 »
Zitat von: smokyly am 10.01.12 - 13:41:22
Zitat
und wird im PostOpen gesetzt.
Super, gefunden, hier deklariert und gesetzt.
Wenn die Variable im PostOpen deklariert ist, kann sie nicht im PostSave zur Verfügung stehen. Sie muss in den Declarations der Maske oder den Declarations von Globals deklariert sein. Falls die gleiche Variable nochmal im PostOpen deklariert ist, gelangen die Daten nicht in die global deklarierte Variable, und der Inhalt ist wiederum nicht im PostSave verfügbar.
Sorry für meine Pingeligkeit, aber das ist für die Funktionsweise sehr wichtig.
Gespeichert
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #17 am:
10.01.12 - 13:59:45 »
Hallo Peter, das ist eine Teilmaske, da steht in den Deklarationen nichst drin. Im Postopen finde ich das:
Zitat
Kostenstelle = source.Document.Kostenstelle(0)
Also ist das keine implizite Deklaration mit Wertsetzen, sondern nur eine Zuweisung?
Hat natürlich für mein Anliegen nicht wirklich was zu tun, ist Interesse.
Gespeichert
Geri
smokyly
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 676
Nicht jeder ist ersetzbar.
Re: Item ändern mit Aktion
«
Antworten #18 am:
10.01.12 - 15:13:15 »
Also so sieht der Code für den Agenten im Initalize aus:
Zitat
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim Kostenstelle_neu As String
Dim Kostenstelle_alt As String
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Kostenstelle_neu = (InputBox$("Bitte neue Kostenstelle angeben!"))
While Not doc Is Nothing
Kostenstelle_alt=doc.Kostenstelle
doc.Kostenstelle = Kostenstelle_neu
Call doc.Save(True,False,True)
Call sendmail(doc,Kostenstelle_alt)
Set doc = dc.GetNextDocument(doc)
Wend
End Sub
Dann habe ich noch eine Sub "sendmail" gebastelt, die das Mail erstellt und noch die anderen benötigten Funktionen / Subs aus der Teilmaske in den Agenten geschoben. In den Options hab ich mit Use eine benötigte Bibliothek angegeben.
Konnte den Agenten ohne Fehler speichern.
A-Bär: Das verstehe ich noch nicht ganz - das sendmail hat ja zwei Übergabeparameter:
Zitat
Sub Sendmail(Source As NotesDocument, P_Kostenstelle_agent As String)
Muss ich Source und P_Kostenstelle_agent denn nun nochmal in den Declarations aufnehmen, oder sind diese denn nun implizit definiert? Ich behaupte mal Letzteres, da es in anderen Sprachen auch so ist.
Gespeichert
Geri
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 19053
Re: Item ändern mit Aktion
«
Antworten #19 am:
10.01.12 - 15:23:07 »
Das ist schon korrekt so, Geri. Subs / Functions deklarieren ihre Parameter implizit.
Bernhard
Gespeichert
Seiten:
[
1
]
2
« vorheriges
nächstes »
Gehe zu:
Bitte wählen Sie ein Ziel:
-----------------------------
ATNOTES TEAM
-----------------------------
=> Neuigkeiten - Wichtiges
===> Archiv
-----------------------------
Lotus Notes / Domino 8
-----------------------------
=> ND8: Administration & Userprobleme
=> ND8: Entwicklung
=> ND8: Entwicklung - XPages
-----------------------------
Lotus Notes / Domino 7
-----------------------------
=> ND7: Administration & Userprobleme
=> ND7: Entwicklung
-----------------------------
Lotus Notes / Domino 6
-----------------------------
=> ND6: Administration & Userprobleme
=> ND6: Entwicklung
-----------------------------
Domino 5 und frühere Versionen
-----------------------------
=> Administration & Userprobleme
=> Entwicklung
-----------------------------
Lotus Notes / Domino Sonstiges
-----------------------------
=> Tipps und Tricks
=> Tools & Downloads
=> Projekt Bereich
===> Help-Desk Applikation !!Help!!
=> Java und .NET mit Notes/Domino
=> Companion Products
=> OLE/COM-Programmierung
=> Aus- und Weiterbildung
-----------------------------
Best Practices
-----------------------------
=> At Notes Best Practices
=> Diskussionen zu Best Practices
-----------------------------
Sonstiges
-----------------------------
=> Offtopic
=> Kritik & Vorschläge
=> Infrastruktur
=> Job Suche/Angebote
1 Stunde
1 Tag
1 Woche
1 Monat
Immer
Einloggen mit Benutzername, Passwort und Sitzungslänge
Powered by SMF 1.1.16
|
SMF © 2006, Simple Machines
Impressum Atnotes.de -
Powered by Syslords Solutions -
Datenschutz
| Partner:
Tinte / Toner günstig