0

waitForSync()

Ich habe immer mal wieder das Problem, dass meine Angestellte abends auf ihrem Mac einen letzten Eintrag macht, der dann nicht mehr synchronisiert wird. Manchmal synchronisiert Ninox sofort mit der Cloud aber anscheinend nicht immer. Ich sehe den Eintrag dann erst, wenn sie am nächsten Tag wieder in Ninox arbeitet. Jetzt dachte ich, ich baue diesen waitForSync()-Befehl ein bei einem wichtigen Button, der ein Script auslöst. Leider habe ich die Funktion wohl nicht ganz verstanden, denn in der App wartet Ninox dann offenbar ewig auf die Synchronisation und bleibt hängen. Ich dachte damit wird ein Sync forciert und mein Problem wird gelöst. Konkret geht es um eine Zeiterfassung, die meine Angestellte am Ende des Tages durchführt. Kann ich ansonsten etwas verbessern oder würde mein Anliegen nur klappen, wenn wir beide im Browser arbeiten?

8 Antworten

null
    • z_Jessica_CTO
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Dirk
    haben hier das gleiche Problem und warten seit Jahren, auf eine Lösung-
    Mit dieser neuen Funktion wurde uns gesagt, das Problem sei gelöst. Wir haben das selbe Erlebnis wie du.
    Bist jetzt weiss niemand bei Ninox, was diese Funktion genau macht und wie sie gebraucht wird. Wir haben 3 bis 4 User die gleichzeitg fakturieren: Die Sync ergibt ein Chaos (Mac APP + Browser auf public cloud)

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin
    In dem gestrigen Webinar zur Vorstellung der neuen Ninox-Funktionen wurde es wie folgt erklärt.
    Bei Nutzung der Ninox-Apps wird ein Script immer erst lokal innerhalb der App ausgeführt bevor serverseitig eine Verarbeitung stattfindet.
    Dies kann manchmal dazu führen, dass das Script serverseitig bereits Daten verarbeiten möchte, die noch nicht dort vorhanden sind.
    Mit der Funktion waitForSync() soll dies verhindert werden.
    Bsp.:
    if waitForSync() then
    gehe weiter im Script
    else
    alert("Synchronisierung nicht abgeschlossen")
    end

    Wegen eures Synchronisationsproblemes würde ich den Support von Ninox explizit anschreiben.
    Oder mal in einem API-Seminar von Himanshu diesen direkt darauf ansprechen. (Leider nur auf Englisch)

    • Dirk_Patzer
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke für eure Antworten. 

    Ich verstehe den Code nicht so ganz aber ich schätze ich habe den Befehl noch immer nicht so recht verstanden. In der if-Abfrage wird auf den Sync gewartet und dann erst der Code ausgeführt. Warum brenötige ich dann noch else mit dem Alert? Ich dachte durch waitForSync() wird gewartet bis synchronisiert wurde und dann wird der restliche Code ausgeführt. Das wäre sehr sinnvoll, wenn man die App öffnet und zum Beispiel ein Script beim Öffnen der Datenbank hinterlegt hat, was aber noch nicht funktioniert wie es soll, da erst noch synchronisiert werden muss.

    Ich wollte bei meinem Script die Uhrzeit eintragen lassen in ein Feld, dann waitForSync() anwenden und anschließend den Alert ausgeben, dass alles korrekt eingetragen (und synchronisiert) ist. Scheinbar verstehe ich aber den Befehl falsch.

    • Dirk_Patzer
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Möglicherweise habe ich das Problem einschränken können:
    In meiner Tabelle mit der Zeiterfassung habe ich in den Einstellungen der Tabelle den Punkt "Globale Suche" deaktiviert. Mit dieser Einstellung werden Änderungen an den Inhalten nicht sofort bei der Änderung synchronisiert. Man sieht das an dem Wolkensymbol und auch wenn man parallel dazu z.B. auf dem iPad Ninox geöffnet hat. Ich ändere beispielsweise die Uhrzeit und es wird nicht direkt synchronisiert. Erst wenn ich in einer anderen Tabelle einen Eintrag ändere wird der Sync angestossen. Ist bei mir in allen Tabellen so bei denen ich die globale Suche ausschalte. Ich ändere was und es findet kein Sync statt. Im Prinzip wird beim nächsten Sync wieder alles ins Lot gebracht aber ich denke trotzdem, dass das ein Bug ist. Tritt auf in der Mac- und iPad-App

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Dirk

    Der Befriff waitForSync ist vielleicht missverständlich gewählt.
    Wie ich es verstanden habe, wartet die Funktion nicht darauf bis der Sync abgeschlossen ist, sondern prüft nur ob er abgeschlossen ist.
    Der Rückgabewert ist ein Boolean. Je nachdem, welcher Boolean zurück gegeben wird, kann das Script gesteuert werden, ob eine Weiterverarbeitung der von der App auf den Ninox-Server übertragenen Daten erfolgen kann. Zu dem ursprünglichem Synchronisierungsproblem der Ninox-App mit dem Ninox-Server.
    In der App kann man ja bei den Datenbankeigenschaften die synchronisierung zurücksetzen. (siehe Screenshot)Bildschirmfoto 2021-07-10 um 05.39.10

    Damit sollte das Synchronisieren eigentlich wieder Smooth laufen:
    Doch VORSICHT bevor du es anwendest. Daten, die von der App zum Server noch nicht übertragen wurden gehen dann VERLOREN.
    Also erst überprüfen, ob das, was in der APP eingegeben worden ist auch auf dem Server existiert und dann das Zurücksetzen anwenden.
    Sollte weiterhin die Synchronisierung App -> Server Probleme bereiten, würde ich mich direkt an den Support wenden.

    • Dirk_Patzer
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Das hatte ich schon probiert. Die Synchronisation funktioniert normalerweise gut aber es gibt Daten aus Tabellen, die erst verzögert synchronisiert werden. Weiter oben habe ich geschrieben, dass ich jetzt auch weiß woran es liegt: In einer Tabelle in deren Eigenschaften die Option "Globale Suche" deaktiviert ist, wird nicht sofort synchronisiert, wenn man etwas ändert und die Änderungen werden erst aktualisiert, wenn man etwas in einer anderen Tabelle ändert (mit "Globale Suche" an) oder die Tabelle z.B. beim öffnen der DB neu geladen und synchronisiert wird.

    Man sieht das auch am Wolkensymbol. Aktiviert man "Globale Suche" funktioniert es einwandfrei. Genau das scheint das Problem gewesen zu sein, wenn meine Angestellte abends in der Tabelle Zeiterfassung etwas geändert hat und dies bei mir nicht sichtbar war. Hat sie am nächsten Tag Ninox gestartet wurde alles wieder synchronisiert. Ich habe den Fehler an den Support gemeldet. Ist bei mir auf dem iPad und dem Mac in den Apps.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Das mit der Globalen Suche muss ich auch mal probieren, da diese für die temporär zur Verfügung gestellten Daten für die App ausgeschaltet ist. Vielleicht geht der sync dann besser. Vor allem bei bilddatein. Wenn ich das richtig verstanden habe wird mit waitForSync geprüft ob der sync abgeschlossen ist. Was wichtig ist, da ich ja im Büro nicht weiß was der monteur vor Ort eventuell ohne Internet in seinen Datensatz eingegeben hat. Wie muss ich denn waitForSync in der cloud anwenden, so das ich sicher das zurück überführen der Daten anstoßen kann? Also alle Daten auf einmal, da der Datensatz für den Mitarbeiter dabei im Anschluss gelöscht wird

    • marcg2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    In der Dokumentation ist folgendes zu lesen: "The new waitForSync() function will ensure that the next synchronization cycle is finished before the execution of the rest of the code."

    Das habe ich hier gefunden: https://docs.ninox.com/en/product-updates/archive#other. Dann einfach nach "waitForSync" im Browser suchen.

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 8Antworten
  • 674Ansichten
  • 2 Folge bereits