Beiträge von Claudio Pietra (Vertec Gruppe)

    Das ist leider nicht vollständig implementiert. Es gab da mal interne eine Diskussion, mit dem Resultat, dass es nur dann nicht geht, wenn kein Defaultwert gesetzt ist - aber selbst wenn ich das IsChecked="True" entferne verhält es sich so wie von Ihnen beschrieben. Die Radio Buttons sind einfach nicht für diesen Anwendungsfall gedacht, die Dokumentation in https://www.vertec.com/ch/kb/radiobutton/ kommt vollautomatisch aus unserem Entwicklungssystem und ist hier tatsächlich nicht brauchbar.


    Ich empfehle, die Funktionalität mit einer Combobox zu lösen, da kann auch einen Defaultwert angeben und es ist auch sichergestellt, dass nur ein Wert ausgewählt werden kann.

    Es ist natürlich ohne weiteres möglich, sehr unperformante Dinge in Vertec zu customizen. Das wird sicher Thema sein in einer Woche, klar.


    Ich schlage daher eher vor, konkrete Fragen hier zu diskutieren und zu lösen. Man kann konkrete Performanceproblem nur konkret lösen, nicht allgemein - es gibt da keinen "Kill Switch". Wir sind aber sehr gerne bereit, uns das Skript und die Infrastruktur anzuschauen. Es gibt immer Potential. Machen Sie doch bitte einen neuen Thread mit den konkreten Angaben zur Infrastruktur und dem Skript, am besten gleich mit dem Code.

    Wollen wir ein neues Topic starten? Ich wollte hier explizit über die SQL Performance im Zusammenhang mit Leistungssummen berichten.

    Bei Ihrem Skript wären die relevanten fragen:

    • welche App führt das Skript aus? Task Scheduler oder mit /script /batch gestartet?
    • was macht das Skript genau? Wenn CPU nicht ausgelastet ist wo das Skript ausgeführt wird dann ist die Frage, auf was da gewartet werden muss: LAN, Internet, externes API?

    Zu "CPU nicht ausgelastet" ist noch relevant zu wissen, dass die Vertec Session Singe Threaded ist, also nur einen CPU Core auslasten kann. Bei sehr vielen Cores kann das im total dann "mikrig" aussehen.

    Vertec 6.5 brachte eine wesentliche Umstellung mit sich, nämlich weg von rein westeuropäischen Zeichensatz (ANSI oder Windows-1252) hin zu Unicode. Damit können in Vertec z.B. auch osteuropäische Adressen korrekt verarbeitet werden. Aber natürlich ist Unicode noch viel universeller, wir unterstützen die gesamte BMP ("Basic Multilingual Plane", siehe https://en.wikipedia.org/wiki/…#Basic_Multilingual_Plane), welche rund 65'000 Zeichen umfasst. Diese Flexibilität ist sehr erfreulich.


    Aber natürlich bringt jede Flexibilität in einer Software auch Nachteile mit sich: im Fall von Unicode sind es der erhöhte Platzbedarf der Datenbank und eine schlechtere Performance von Abfragen mit sich. Im normalen Vertec Betrieb wird das kaum auffallen.


    Bei sehr intensiven SQL-Operationen (wie bei der nicht empfohlenen Anwendung von Leistungssummen) kann das aber durchaus negativ auffallen: in extremen Fällen konnten wir mit Microsoft SQL-Server eine Verschlechterung um Faktor 2 feststellen, bei Firebird sogar um Faktor 3.


    Während wir beim Microsoft SQL-Server kaum Einfluss auf die Entwicklung nehmen können, sieht das bei Firebird anders aus: Vertec ist Mitglied bei der Firebird Foundation, und wir haben diese Verschlechterung mit den Entwicklern diskutiert. Das Problem war altbekannt, wurde aber immer weider auf die lange Bank geschoben, wegen anderer Prioritäten. Durch unsere Intervention haben wir jedoch erreicht, dass Verbesserungen umgesetzt wurden, welche die Performance von solchen Operationen (wieder) in die Nähe des Microsoft SQL-Servers rücken lässt, oder sogar noch besser. Wir konnten diese bereits testen, jedoch wird das erst mit Firebird 5.0 ausgeliefert, welches Ende 2022 erwartet wird.

    Leistungssummen sind eine Möglichkeit in Vertec, Summenwerte in Bezug auf Leistungen performance- und memoryoptimiert berechnen zu lassen und diese so zu gruppieren, wie man das benötigt (z.B. nach Projekt, Tätigkeit, aber auch nach Rechnung oder Monat). Die Dokumentation finde sich in https://www.vertec.com/ch/kb/leistungssummen/.


    Diese SQL-basierten Abfragen sind gedacht um einmal, zu Beginn einer Auswertung, Daten zu berechnen und diese nachher weiter zu verwenden. Sinnvolle Anwendung finden sich in BI Generatoren, Office Berichte, bei der Abfrage von aussen über XML oder auch wenn man von einem Python Skript aus Daten exportieren will. So sind sie sehr performant und nützlich, weil sie auch die Businesslogik rund um Leistungen kapseln.


    Wir treffen jedoch vermehrt Anwendungen an, bei denen in einer Liste drin in vielen Spalten und für viele Zeilen solche Abfragen gemacht werden (so à là:

    self->groupleistungenB(varVon.asstring,varBis.asstring,'')->collect(minutenIntoffen+minutenIntverrechnet)->sum) dann ist das höchst ineffizient und langsam. Es werden tausende von SQL Abfragen abgesetzt, und je nach Performance des Servers und dem Netz kann das länger oder weniger lang dauern - auf jeden Fall wird es zu lange dauern.


    Die Vertec KB warnt davor, seit vielen Jahren: https://www.vertec.com/kb/leis…alten-von-leistungssummen. Da wir aber solche Customizations antreffen, wollte ich das Thema erneut aufgreifen. Auch ist die Thematik mit der Umstellung auf Unicode in Vertec 6.5 noch akuter geworden.

    Das Rückgängig machen von Änderung, die noch nicht "commited" sind (über ESC oder eben STRG-Z, CTRL-Z, eine vollständige Übersicht siehe https://www.vertec.com/ch/kb/shortcuts/, da hat es viele Shortcuts für Textfelder) ist sehr viel einfacher sich vorzustellen und zu implementieren als ein "Wiederholen" - nach dem der Client, der ja gar nichts weiss über die Businesslogik und was das überhaupt für ein Feld ist, die Änderungen geschickt hat, gibt es leider "niemanden" mehr, der weiss, was vorher da stand. Auch gibt es ja nach Änderungen von Felder häufig Sideeffekte, die erledigt werden müssen, was nicht immer trivial ist. So muss die Businesslogik natürlich immer einen konsistenten Zustand aller beteiligten Objekte sicherstellen (dies im Gegensatz zu einfachen Texteditoren, sogar Word "kennt" ja den Inhalt eines Dokuments nicht und muss damit nicht was anfangen können). Für einfache Textfelder mit Notizen, wie z.B. auf der Aktivität, ohne jegliche Anbindung an die Businesslogik ist die Anforderung aber natürlich denkbar.


    Das mit dem Wechseln von Fenster ist mir nicht bewusst, ich habe es auch kurz ausprobiert. Ich sehe das weder bei der Cloud App noch bei der Web App. Können Sie da vielleicht ein Video oder Screenshots machen?


    Den Wunsch mit den Formatierungsmöglichkeiten teilen wir! Wir haben ja auch einen ersten Schritt in diese Richtung gemacht mit der Darstellung von E-Mails auf den Aktivitäten. Der nächste Schritt, nämlich Eingabefelder zu haben, die auch Formatierungen erlauben, sind wir dann infolge anderer Prioritäten nicht gegangen.

    Wir haben in der Tat unterschätzt, wieviele (und wie grosse!) E-Mails Vertec Kunden mit der Outlook App vewalten wollen. Insbesondere die viele SEHR grossen E-Mails waren eine grosse Überraschung für uns.


    Aktuelle ist es so, dass sämtliche Daten direkt auf der Aktivität gespeichert sind und darum auch geladen werden müssen. Eine Aktivität mit einer E-Mail mit einem Attachement von 100MB belegt dann 100MB im Memory und muss auch erst von der Datenbank geladen werden.


    Wir haben diese Probleme schon im Frühjahr erkannt und die Lösung ist relativ einfach: wir trennen die effektive Datenspeicherung von der Aktivität. Leider können wir das erst mit den nächsten Major Release (6.6) ausliefern, weil das eine neue Datenbankstruktur benötigt.


    Bis dahin können Sie folgende Dinge optimieren:

    • bei den Aktivitäts-Linktypen (auf Firmen, Kontakten und Projekten z.B.) den Container auf immer anzeigen umstellen. So wird vermieden, dass alle Aktivitäten geladen werden müssen, nur um rauszufinden, ob ein Container angezeigt werden soll oder nicht.
    • Bei den langen E-Mail Listen ist eine Optimierung natürlich schwieriger, aber vielleicht kann man ja verhindern, dass man >1000 als Resultate bekommt? An solche Suchordner haben wir auch nicht gedacht, weil eine Navigation über den Kontext (Kontakt, Projekt, Erfasser) ja auch möglich ist. Welche Anforderung lösen Sie mit den Suchordnern?

    Tja die Sache ist leider gar nicht trivial und es muss irgendwie von den Mails abhängen, aber wie, ist uns nicht klar. Setzen Sie bei denn die neueste Version ein? Da wurde nicht nur ein bekanntes Problem behoben (das NACH dem Speichern einer Aktivität auftrat), sondern es wurden auch die Debugging- und Loggingmöglichkeiten ausgebaut.


    Das geschieht über die Konsole des eingesetzten Browsers, üblicherweise über "Entwicklertools". In der Web Edition der Outlook App direkt im Browser in dem man das Outlook mit der Vertec Outlook App hat, in der Windows Edition über F12, dann kommen auch die Entwicklertools des eingesetzten, integrierten Browsers.


    Wenn Sie dann z.B. von Mail zu Mail bewegen, sehen Sie was die Outlook App loggt, das sieht dann z.B. so aus:


    Hier sieht man wie ich zwischne Mails hin und her navigiert bin, es gibt hier auch Fehler (ein Icon wird nicht gefunden, hat aber sicher nichts mit unserem Problem hier zu tun). Es wäre sehr erhellend zu sehen, was Sie bei Mails mit dieser Fehlermeldung hier im Log sehen.

    Der Administrator im System sollte die EintragID UserAdmin haben, damit das Config Set System diese Referenz findet. Komisch, dass das bei Ihnen nicht so ist, aber vielleicht haben Sie den von uns mitgelieferten Admin gelöscht und einen neuen angelegt.


    Sie können einfach auf den Administrator gehen, mit F3 die Python Console öffnen, und argobject.eintragid='UserAdmin' eingeben, dann hat der Administrator eine EintragID und das Plug-in sollte geladen werden können.

    Wir haben das analysiert und in der Windows Edition ist es tatsächlich so wie von Ihnen beschrieben. In der Web Edition hingegen nicht - da wird das schon gesendete E-Mail abgespeichert. Der Grund ist technisch bedingt durch Microsoft: im Windows Outlook kriegen wir den Event mit bevor die E-Mail gesendet wird - das lässt sich leider nicht umgehen, es gibt schlichtweg von Microsoft kein anderes Event.


    Wir können aber versuchen, da noch weitere Logik zu machen, denn wir wissen ja, dass die E-Mail gesendet wird.

    Vielen herzlichen Dank für die ausführlichen Feedbacks und Ideen! Wir schätzen das sehr.


    Wir werden nächstens wieder ein Outlook App Paket schnüren, da werden wir Ihre Ideen genau anschauen. Hier schon vorab einen Kommentare:

    Erkennung des Adresseintrag anhand von kompletter Kommmittel Tabelle nicht nur Standardemail

    Das ist bewusst so gemacht worden aus Performance Gründen. Da die Outlook App bei jedem Wechsel der E-Mail in Outlook was machen muss (nämlich den Kontakt suchen) muss das schnell gehen. Das alte Outlook Addin hat auch in den Kommmitteln gesucht, aber auch in sämtlichen Aktivitäten, und das gab immer mal wieder Beschwerden bez. der Performance - natürlich eher wegen den Aktivitäten (da gibt es viele Kunden mit sehr vielen Aktivitäten) als wegen den Kommmitteln. Man könnte es ja so vorsehen: wenn nichts gefunden wird im standardemail noch eine 2. Suche nach den Kommmitteln machen?

    Kennzeichnung von schon gespeicherten Mails direkt in der Liste im Posteingang

    Ja, diese Idee hatten wir auch aber aus Zeitgründen fallen gelassen. Das wäre schon recht hilfreich!

    Beim ersten Klick auf das Projekt Feld könnten die letzten (z.B.) 10 genutzten Projekte für diesen Adresseintrags vorgeschlagen werden

    Hier müsste eben dann über die Aktivitäten die Projekte zusammengesucht werden, mit den oben erwähnten Performance Problemen. OK, man könnte sagen, da kommt man nur hin wenn man ein Projekt sucht, aber jetzt ist das ja keine Combobox sondern ein Suchfeld.


    Beim speichern einer Mail auch die Uhrzeit von dieser mit speichern

    Das sollte es tun. Damit die Sortierung stimmt haben wir extra ein neues Feld eingefügt inkl. Zeitanteil. Das Feld heisst dateandtime, siehe Release Notes 6.5 Seite 21.

    Mit einem abgespeicherten e-mail kann nichts mehr gemacht werden, ausser die Anhänge anzuschauen

    Man kann doch die E-Mail wieder in Outlook sich anzeigen lassen: https://www.vertec.com/kb/outl…g/#von-vertec-ins-outlook. Dann hat man alle Features die Outlook zur Verfügung steht. Reicht das nicht?

    Die Fehlermeldung meint, dass man eine Variable hat die keine Funktion ist, die aber aufrufen will. So wie wenn man ein Projekt hätte in Vertec in der Variable projekt, und das dann probiert aufzurufen als projekt().


    Ich glaube, es geht um Zeile 165:

    Code
    copyPhase = vtcapp.getobjectbyid(phaseId)

    Hier wird copyPhase lokal definiert. Auf Zeile 170 versuchen wir dann aber diese Variable aufrufen:

    Code
    newPhase = copyPhase(copyPhase, copyPhase.parentphase, Vprojekt)

    Ich bin kein Python Spezialist, denke aber, dass wenn man die Variable anders benennt in Zeile 165 dass es dann funktioniert. Die lokal definierte Variable gewinnt wohl gegenüber der Methode die ab Zeile 25 definiert ist.

    Ich höre die Anforderung tatsächlich zum ersten Mal - die meisten Kunden wollen es nach dem Datum sortiert haben, und innerhalb des Datums nach dem Erfassungszeitpunkt.


    Aber, wie Sie ja auch schreiben, kann man so was in Vertec einfach einbauen, dass Sie diesen Weg gegangen sind freut uns. Dass man ein Index Feld einfügt (da gibt es ja auch eingebaute, freie Felder, wie freereference) und dann die Einträge so sortiert, ist für uns schon "Standard". Das ist ja etwa gleich schnell implementiert als wenn man den richtigen Report aussuchen müsste welcher dann nach so einem fix eingebauten Index sortiert.