Jump to content

_Moritz_

smap Experts
  • Posts

    730
  • Joined

  • Last visited

  • Days Won

    80

Community Answers

  1. _Moritz_'s post in Manuelle Eingabe Code was marked as the answer   
    Hey @Dirk Grahl-Rode, ich habe gerade mal selber getestet. Bei mir (iPhone 11) ist die Möglichkeit der manuellen Eingabe gegeben:

     
    Vielleicht arbeitest du noch mit einer älteren smapOne-App-Version? Allerdings hat er da bei mir gesagt, dass ich zunächst ein Update benötige, weil mein Client zu alt sei. Wärst du einmal so lieb und prüfst folgende Punkte:
    Welche iOS-Version ist bei dir auf dem iPhone installiert? (Einstellungen > Allgemein > Info > iOS-Version) Welche smapOne-App ist bei dir installiert? (Dazu einfach in der smapOne-App in der App-Übersicht unten auf das "(c) smapOne AG" klicken, dann kommt das Impressum hoch, in dem die smapOne-App-Version aufgeführt ist)
  2. _Moritz_'s post in Daten von Homepage was marked as the answer   
    @Christian B. Gütthoff deine Webapplikation muss den Aufruf an der API durchführen, so dass darin Daten aus der Webseite an smapOne übertragen werden. Es müsste also Code ähnlich diesem hier in deiner Webapplikation hinzugefügt werden:
    document.getElementById('myButton').addEventListener('click', function() { const smapID = "6fca7319-e2f2-4c8e-957e-4f56875430ff"; const version = "1.0"; const url = "https://platform.smapone.com/Backend/intern/Smaps/" + smapID + "/Versions/" + version + "/Data"; const username = "abc123"; // Can by any arbitrary dummy username const password = "SMAPONE_API_PASSWORT"; // Your API token const auth = btoa(username + ":" + password); fetch(url, { method: 'POST', headers: { 'Authorization': 'Basic ' + auth, 'Content-Type': 'application/json' }, body: JSON.stringify({ "userEmail": "string", "title": "string", "comment": "string", "hasPriority": true, "dueDate": { "date": "string" }, "data": {} }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); }); Mehr Infos zur Aufgabenerzeugung über die API in unserer FAQ: https://faq.smapone.com/kb/guide/de/wie-konnen-aufgaben-uber-die-rest-api-generiert-werden-nA03jLD4w0/Steps/966370
    Außerdem ein smappetizer Deep Dive Tutorial, das die Aufgabenerstellung adressiert
     
    Eure Aufgabe bzw. die des Webentwicklers wäre jetzt auch noch, die jeweiligen Daten aus der vom User ausgewählten Gruppe, Untergruppe, Element usw. in das Body-Objekt mit aufzunehmen.
    Allgemeiner wichtiger Sicherheitshinweis: Die vorgestellte Lösung sollte nicht auf einer öffentlich zugänglichen Webseite umgesetzt werden, da jeder Besucher damit Zugriff auf das API-Token erhalten kann, was ein erhebliches Sicherheitsrisiko darstellt. Dies ist nur für interne Zwecke sinnvoll, idealerweise eine Webseite, auf die nur der Creator selber Zugriff hat. Grundsätzlich besteht aber auch die Möglichkeit, öffentlich zugängliche Webseiten in die smapOne API zu integrieren, ohne dass das Token jedem Besucher zugänglich/einsehbar ist.
  3. _Moritz_'s post in Entwurf dauerhaft verfügbar machen was marked as the answer   
    Nein, das sind die beiden einstellbaren. Was Paul möglicherweise meint, ist dass du Vorbelegungswerte auf Basis z.B. der User-Emails gestaltest. Beispiel:
    Wenn uta@firma.de die smap aufmacht, steht in dem Textfeld "Vorlage". Wenn jens@firma.de die smap aufmacht, steht in dem Textfeld "Abschlussbericht". Und wenn es weder Uta noch Jens sind, die die smap bearbeiten, steht "Projekt" in dem Feld. Formel dafür wäre dann sowas hier:
    IF(EQUALS({user:email}, "uta@firma.de"), "Vorlage", IF(EQUALS({user:email}, "jens@firma.de"), "Abschlussbericht", "Projekt"))  
  4. _Moritz_'s post in Zahl in Worten anzeigen was marked as the answer   
    Du müsstest dir halt ein Konstrukt aufbauen, dass bei maximal 3 Stellen vor dem Komma Folgendes erfüllt:
    Prüfung (IF), ob die Zahl größer 99, wenn ja, dann nimm die erste Stelle und ersetze 1 mit "Eins" bis 9 mit "Neun" + der statische Text "hundert"; falls die Prüfung fehlschlägt, bleibt dieser Teil leer. Umwandlung der letzten Stelle (vor dem Komma), auch wieder 1 = "ein" bis 9 = "neun" + der statische Text "und". Umwandlung der vorletzten Stelle (die Zehnerstelle) von 1 = "zehn", via 2 = "zwanzig" bis 9 = "neunzig". Es muss außerdem noch eine Prüfung für die Zahlen 11 ("elf") und 12 ("zwölf") stattfinden, so dass das auch mit abgedeckt ist.
    Für die Entwicklung des Ganzen würde ich wahrscheinlich sogar auch erst einmal mit drei Bausteinen (Baustein-IDs "Hunderter", "Zehner" und "Einer" o.ä.) und in einem finalen Result-Feld dann alles per CONCAT() zusammenfügen.
  5. _Moritz_'s post in Aktivierungsformel bei Unterschriftbaustein führt zur leerer Unterschrift was marked as the answer   
    Wenn ein Baustein (hier der Unterschriftenbaustein) durch eine Aktivierungsregel nicht angezeigt wird, dann hat dieser Baustein im Datensatz den Wert "null", was einem Nicht-Ausfüllen gleichkommt.
  6. _Moritz_'s post in Zahlenergebnisfelder mittels Zahlenergebnisfeld addieren was marked as the answer   
    @Marcel Zangs mach mal das Gleichheitszeichen (=) aus deiner Formel weg, das stört! 😉
  7. _Moritz_'s post in Berechnung mit Zeiten ohne negative Ergebnisse was marked as the answer   
    @Arman Kassaie du könntest das Ergebnis darauf prüfen, ob es negativ ist. In dem Fall kannst du dann einfach einen ganzen Tag auf deinen Zeitraum aufschlagen, dann erhältst du den richtigen Wert, auch wenn die Uhrzeiten über die Mitternacht hinausgehen:
    IF(LESSTHAN(TOTALHOURS(SUB_DATE({Beginn_Stoerung}, {Ende_Arbeit})), 0), ADD_PERIOD(SUB_DATE({Beginn_Stoerung}, {Ende_Arbeit}), P1D), SUB_DATE({Beginn_Stoerung}, {Ende_Arbeit}))  
    Mit LESSTHAN(TOTALHOURS()) prüfst du erstmal, ob die Anzahl der Stunden negativ ist. Wenn das der Fall ist, dann wird die Dauer zwischen den Eregnissen berechnet und per ADD_PERIOD() ein Tag ("P1D") addiert.
    Ich habe das ganze einmal in eine Beispielsmap mit Zwischenschritten gepackt, damit das einfach nachvollzogen werden kann (Link gültig bis 06.10.2026): https://platform.smapone.com/ImportSharedApp/71fae9c8-764e-415f-af95-b2eb0acb3092/307a46a9a4c07065402a1898198a28b92308fb71?lang=de
  8. _Moritz_'s post in Konvertierung von Smart City smap-Daten in Open Data Formate für kommunale Datenhaushalte was marked as the answer   
    Heyho Klaus, über die API von smapOne kannst du alle Daten ja bereits im JSON-Format abrufen. Der Umweg über Excel ist deshalb aus meiner Sicht gar nicht nötig. Du benötigst nun "lediglich" einen Dienst, der dir die Daten von smapOne als JSON abruft, die dann in die von dir gewünschte Struktur transformiert und dann z.B. in OneDrive ablegt.
    Ich würde euch hierfür einen modernen Low-Code-Ansatz mit PowerAutomate, Zapier oder Make.com empfehlen. Den Schnittstellen von smapOne und OneDrive ist es aber egal, wer oder was die Daten abruft oder übergibt. Es könnte also auch ein lokales PowerShell-Script oder eine "in der Cloud" betriebene Java/.NET/PHP/JavaScript-Applikation sein.
  9. _Moritz_'s post in Aufklappen was marked as the answer   
    Hey @Frank Galley, schau mal hier: https://faq.smapone.com/kb/guide/de/wie-kann-ich-bausteine-mit-einer-aktivierungslogik-versehen-XPD0T5CkRw/Steps/934698
    Der Artikel bezieht sich zwar expressis verbis auf einen Baustein, Aktivierungsregeln funktionieren aber auch mit ganzen Abschnitten einer smap.
  10. _Moritz_'s post in CURL "Access denied. Missing or invalid authentication information." was marked as the answer   
    Du musst einfach die alten und neuen Daten vereinen. Die Altdaten kannst du auch über die API abrufen. Guck mal, hier gibt es ein Video-Tutorial, in dem genau das zeige (ab Minute 23:00 die Beschaffung der vorhandenen Daten).
     
  11. _Moritz_'s post in Formatierung Ausgabe von Mehrfachauswahl-Bausteinen was marked as the answer   
    Hey @Oliver Pfeiffer, dir könnte folgende Lösung helfen: Ich habe einen MFAB (= Mehrfachauswahlbaustein, auch "MFA" 😉) mit vier Optionen erstellt:

     
    Als Bericht nutze ich die automatisch generierte Berichtsvorlage und passe sie ein wenig an. Der neue Code sieht wie folgt aus:

     
    Hier der Code einmal zum kopieren, anpassen und selber verwenden:
    {%IF bricks.Fortbewegungspraeferenz contains "Per pedes" %}☑{%ELSE%}☐{%ENDIF bricks.Fortbewegungspraeferenz contains "Per pedes" %} Per pedes ▪▪▪ {%IF bricks.Fortbewegungspraeferenz contains "Fahrrad" %}☑{%ELSE%}☐{%ENDIF bricks.Fortbewegungspraeferenz contains "Fahrrad" %} Fahrrad ▪▪▪ {%IF bricks.Fortbewegungspraeferenz contains "Auto" %}☑{%ELSE%}☐{%ENDIF bricks.Fortbewegungspraeferenz contains "Auto" %} Auto ▪▪▪ {%IF bricks.Fortbewegungspraeferenz contains "Bus" %}☑{%ELSE%}☐{%ENDIF bricks.Fortbewegungspraeferenz contains "Bus" %} Bus  
    Und wenn ich nun die entsprechenden Optionen auswähle, werden die Ergebnisse horizontal aufgeführt (mit ein paar Trennzeichen – Unicode-Zeichen U+25AA – dazwischen):

     
    Alle Informationen zur selbsterstellten Berichtsvorlage findest du in unserer FAQ.
     
    Und hier noch die Word-Datei zum anpassen, reinschauen, nachvollziehen, reverse-engineeren 😉 usw.
    MFA_horizontal.docx
  12. _Moritz_'s post in Daten in der aus dem DSAB ziehen was marked as the answer   
    Die reine Formel bzw. Syntax dafür ist einfach mit der geschweiften Klammer den DSAB über dessen Baustein-ID aufrufen und dann in eckigen Klammern das Feld im DSAB.
    {DataRecordSelect[Name]}  
    Dafür gibt es übrigens einen Assistenten, den du im Designer in der rechten Spalte in den DSAB-Eigenschaften aufrufen kannst:

     

  13. _Moritz_'s post in Seitenumbrüche nach Einträgen in Wiederholungsgruppe was marked as the answer   
    @Peter Kopper wie genau hast du denn deine Berichtsvorlage gestaltet? Hast du es mal mit einem manuellen Seitenumbruch, wie von @Manuel Rühl und @Steffen Haußmann erwähnt, ausprobiert? Wenn ich folgende Berichtsvorlage verwende (beachte den Seitenumbruch direkt nach dem "öffnenden" FOREACH-Statement; anzeigen mittels  – siehe Post über mir)...

    ... erhalte ich ein Dokument mit drei Seiten, zwei davon exklusive Wiederholungsgruppeneinträge:

  14. _Moritz_'s post in Fehler "SmapOne.LegacyShared.Domain.Bricks.Field.ObjectDataField" was marked as the answer   
    Hallo @Jonas Mithöfer, die Syntax für Felder aus einem DSAB ist
    {{bricks.DataRecordSelect[Spalte]}}
     
    Kleiner Tipp für das Arbeiten mit selbsterstellten Berichtsvorlagen: Einfach mal die automatisch generierte Berichtsvorlage herunterladen und sich daran orientieren.

  15. _Moritz_'s post in Webhook - Kontext holen was marked as the answer   
    @Marco Liesegang wenn ihr nur die Header-Daten über den Webhook erhaltet, klingt es ganz danach als ob ihr in den Webhook-Options "HttpGet" ausgewählt habt. Stellt den Webhook nochmal mit "HttpPost" ein, dann erhaltet ihr den gesamten Datensatz im Body mitgeliefert.

  16. _Moritz_'s post in Sprung in nächstes Eingabe Feld was marked as the answer   
    Ich wüsste keinen automatischen Weg 😕
    Was ich dir anbieten kann, ist dieser Artikel der erklärt, wie man auf Windows mit der Tastatur zum nächsten Feld navigieren kann... 
     
  17. _Moritz_'s post in Felder ausblenden bzw. verstecken was marked as the answer   
    Ich hätte es auch über eine EQUALS-Formel gelöst, die niemals wahr werden kann:
    EQUALS(true, false)  
    Deine Prüfung könnte ja wahr werden, wenn du deine smap doch irgendwann einmal "eselstreckdich" nennst 😉
  18. _Moritz_'s post in Fehler beim Laden von smaps was marked as the answer   
    Wenn Systeme miteinander kommunizieren (in diesem Fall z.B. dein Endgerät mit der smap drauf mit unserem Backend, also den Serversystemen), dann gibt es für diese Kommunikation ein sogenanntes Timeout. Das ist eine Zeitangabe (z.B. in Sekunden), wie lange auf die Antwort des Systems gewartet werden soll. Sagen wir einfach mal, dieser Wert liegt bei 30 Sekunden. Wenn ein Gerät binnen 30 Sekunden nicht schafft, die smap abzurufen, dann meldet das Gerät einen Fehler und versucht es nicht weiter. Schnelle Geräte schaffen es in weniger als 30 Sekunden, das ältere Gerät brauch halt einfach länger und schafft es dehalb nicht.
     
    Ich gehe nicht davon aus, dass die Erhöhung der Nutzerzahl auch weitere Einschränkungen in dieser Hinsicht mit sich bringen, kann das aber auch nicht komplett ausschließen. In jedem Fall würde ich mich zu der Aussage hinreißen lassen, dass eine hohe Nutzerzahl weniger Effekt haben als die Anzahl der Bausteine und Formeln. Sprich: ich würde eher versuchen, Bausteine und Formeln zu reduzieren, als die Anzahl der Nutzer niedrig zu halten.
  19. _Moritz_'s post in Kommentarfunktion bei Weitergabe der smaps führt zu Problemen was marked as the answer   
    @Jens Kruse die Kommentarfunktion wurde in letzter Zeit überarbeitet. In sofern macht es schon Sinn, dass hier die neuste Version erforderlich ist. Besteht das Problem denn, wenn ihr das Update durchführt?
  20. _Moritz_'s post in Aus einer Tabelle eine Zeile (ohne Baustein - Nur Beschriftung) löschen was marked as the answer   
    Probier bitte einmal eine Leerzeile zwischen Tabelle und "FOREACH" einzufügen.

     
    Das hat in einigen Fällen in der Vergangenheit geholfen.
     
    Ansonsten wäre mein Vorschlag: Mach die Kopfzeile einfach "unsichtbar". Also Schriftart weiß und die Rahmenlinien ebenfalls weiß, so dass es schlichtweg nicht mehr sichtbar ist.
  21. _Moritz_'s post in Berichte erneut auslösen - nach Anpassung der Vorlage was marked as the answer   
    Würde es helfen, wenn ihr den Bericht als Word (docx) statt PDF herunterladet...

    ... und den Seitenumbruch in dem einen Datensatz manuell nachtragt?
    Dann habt ihr gar kein Gefummel mit Versionen oder Berichtsvorlagen oder Beschaffung von Altdaten und die dann per REST API als Aufgabe neu hinzufügen oder so.
     
    Ansonsten möchte ich gerne auf diesen "Hack" von @Moritz Heidlindemann hinweisen:
     
     
  22. _Moritz_'s post in Ausgabe von verschiedenen Uhrzeiten in der Datums- und Zeitauswahl was marked as the answer   
    @Simone Keller schau mal hier in diesem Video, da wird exemplarisch aufgezeigt, wie Zeiten in Excel umgerechnet werden können: 
     
  23. _Moritz_'s post in Aktivierung greift nicht was marked as the answer   
    Bitte auch mal den Text aus dem DSAB in einem Editor öffnen, der ggf. enthaltene Sonderzeichen (sowas wie versteckte Leerzeichen, Zeilenenden usw.) anzeigt bzw. den Text nochmal ganz sauber aufbauen ohne Sonderzeichen...
  24. _Moritz_'s post in Bericht - Report (Problem) was marked as the answer   
    @Dachser Köln was bei euch die volle vertikale Entfaltung der Bilder verhindert, sind ganz offenbar die Absatzeinstellungen. Hier ist für die Platzhalter der Bilder hinterlegt:

    Nach meiner Vermutung der Zeilenabstand von Genau 15 Pt. blockiert eine weitere Ausbreitung nach unten. Wenn ich Abstand Vor und Nach jeweils auf 0, sowie Zeilenabstand auf "Einfach" stelle, ...

    ...  dann wird das Bild auch in voller Höhe angezeigt:

  25. _Moritz_'s post in Version der Smap ändern was marked as the answer   
    @Katherine Yanes du könntest hierfür auch die Preview-API anzapfen, statt neue Major-Versionen zu erstellen. Schau mal hier, da ist ein Beitrag, in dem wir zeigen, wie du die Datensätze der letzten 45 Tage abrufen kannst:
     
     
    Du könntest die Abfrage anpassen, indem du den Wert -45 einfach auf -1 stellst und damit tatsächlich nur die Datensätze der letzten 24h abrufst:
    /Backend/preview/Smaps/{smapId}/Records?$filter=CompletedDate gt "&DateTime.ToText(Date.AddDays(DateTime.LocalNow(), -1), "yyyy-MM-ddT00:00:00Z")&"&accessToken={API-Token}"),  
×
×
  • Create New...