0

do as transaction oder do as deferred ?

let title := "Sammel E-Mail an alle versenden?";
let message := "Möchtest du wirklich alle Verkäufer anschreiben?
Der Vorgang dauert einige Sekunden.";
let answerOptions := ["Ja, ich möchte alle anschreiben", "Nein"];
if dialog(title, message, answerOptions) = "Ja, ich möchte alle anschreiben" then

        for i in select 'Aufbewahrung XXX-Verträge' do
            i.if 'Fzg. zugelassen?' = 1 and 'an Bank versendet?' = 2 and 'Eingang Bankunterlagen' = 2 and
                (days('Letzte Sammel E-Mail:', today()) > 4 or 'Letzte Sammel E-Mail:' = null) then
                sendEmail({
                    from: "XXX",
                    to: 'Verkäufername'.'E-Mail',
                    replyTo: "XXX",
                    bcc: "XXX",
                    subject: "Bankunterlagen fehlen" + " / " + 'Eingabe VIN' + " / " + Kundenname,
                    text: "XXX",
                    html: "XXX"
});
                'Letzte Sammel E-Mail:' := now()
            end;
            void
        end
    end


 

 

Guten Tag zusammen,

ich benötige euer Schwarmwissen bezüglich des oben genannten Codes. Was wäre besser anzuwenden: "do as deferred" oder "do as transaction"? Wo genau liegen die Unterschiede? Ich habe bemerkt, dass der oben genannte Code mehrere Transaktionen ausführt. Dies habe ich im Prozessmonitor festgestellt. Zudem habe ich beobachtet, dass "do as deferred" nur eine Aktion startet, die der Anwender in der Maske nicht sieht (es gibt keinen ladekreis). Bei "do as transaction" kommt ebenfalls nur eine Aktion, die der Anwender jedoch in Form eines drehenden Kreises sieht. 

Allerdings habe ich auch in der Dokumentation gelesen, dass "do as deferred" nur bei "lesenden" Aktionen angewendet werden soll. Das verstehe ich leider nicht ganz.

Liebe Grüße,
Martin

3 Antworten

null
    • Martin_Ossadnik
    • vor 7 Tagen
    • Gemeldet - anzeigen

    *Push* 

    Kennt sich hier jemand aus?

    • UweG
    • vor 7 Tagen
    • Gemeldet - anzeigen

    Entgegen der Dokumentation kann man 'do es deferred' auch bei schreibenden Transaktionen verwenden. 'do as deferred' bearbeitet die Transaktionen nachrangig. Das bedeutet, dass man in Ninox schon weiter arbeiten kann, obwohl die Transaktion noch  nicht zu Ende ausgeführt ist. Man kann es verwenden, wenn es sich nicht um zeitkritische Aktionen handelt, die eine sofortige Aktualisierung des Datenbestandes erforderlich machen. 
    In obigen Script wird ja auch eine schreibende Aktion durchgeführt: 

    'Letzte Sammel E-Mail:' := now()

    Wie wichtig ist für den internen Arbeitsprozess die Aktualisierung dieses Feldes?
    Muss es sofort irgendwo weiter verwendet werden?
    Daran würde ich die Verwendung fest machen.

      • Martin_Ossadnik
      • vor 4 Tagen
      • Gemeldet - anzeigen

       Danke dir für die Erklärung.

      Mein "Ziel" war es einfach, dass der User nicht auf diese Eieruhr warten muss. Nachdem der Mailversand stattfand, muss in Ninox nichts mehr passieren. Die Maske wird geschlossen und alles ist gut. Daher wollte ich meine MA nicht warten lassen ;)

      Ich habs auch nun mit "do as deferred" seit ein paar Tagen im Einsatz und es funktioniert wunderbar.

Content aside

  • vor 4 TagenZuletzt aktiv
  • 3Antworten
  • 53Ansichten
  • 2 Folge bereits