+49 (0)7531 906010| service@combit.net

eigene Variable in eine Ansicht nutzen (evtl. UserDefined ?)

Gibt es eine Möglichkeit in einer Ansicht eine selbst definierte (oder vordefinierte) Variable anzuzeigen?
Per Script soll eine Variable dynamisch mit Inhalt gefüllt werden und diese dann anschließend auch in der Ansicht angezeigt werden. Da im Script ja „nur“ combit-Felder dafür in Frage kommen, war die Idee hierfür eins der fünf vordefiniertenUserDefined1 (-5) Felder zu füllen und dieses dann per Formel anzuzeigen. Frage ist nur, wie füllt man diese Felder und bzw. ist das der richtige Weg oder gibt’s eine Alternative?

Gruß
Stephan

… noch mal ein Beispiel zu Veranschaulichung (s.u.):
Im rechten Bereich der Ansichten werden kleine Info-Fenster angezeigt in denen in Statischen Textfeldern einige Felder als Fließtext angezeigt werden, die über „Daten über Formal berechnen“ angezeigt werden - in unserem Fall das User-Kürzel, Vorname, Nachname, …
Zusätzlich dazu soll ein freier Text ergänzt werden, welcher in keinem Datenbankfeld steht sondern per Script zusammengefügt wird. Z.B. so was wie „… arbeitet z.Zt. an Auftrag 4711 und 0815“. D.h. hier würde man in anderen Lösungen einfach eine Variable deklarieren, füllen und anzeigen - geht leider nicht (ich wüsste zumindest nicht wie). Die UserDefined-Felder können wohl nur über die Systemverwaltung gefüllt und dann nur ausgelesen werden - also auch nicht nutzbar.

… ein weiteres Problem ist dabei ebenfalls aufgetaucht. Diese kurzen „Fließtext-Infos“ können aktuell nicht markiert und kopiert werden, kann man das irgendwo konfigurieren? Gerne würden die Anwender solche Info kopieren und in Mails, … einfügen. Das hätte den Vorteil, dass bei Infos z.B. zu einem Standort nicht 10 einzelne Felder, sondern ein Fließtext (ggf. mit Zusatzinfo) kopiert werden muss.

Gruß
Stephan

Painpanel.png

Hi Stephan,

wenn sich die Info nicht hoch-dynamisch ständig ändert, dann kannste die Session-Variablen mal probieren (siehe SDK Doku)

cRM.Project.SetSessionProperty „Variablenname“, „Wert“

In der Eingabemaske würde ich dann aber mit „GetValue(„cRM.Project.Session.Variablenname“)“ arbeiten, statt die Variable direkt zu benutzen, weil du sonst einen Formelfehler bekommst, wenn die Variable mal nicht definiert wurde.

Es kann sein, dass du das recht früh beim cRM.Start (z.B. im „Projekt wurde geöffnet“ Ereignis) machen musst und die Eingabemaske Änderungen nur darstellt, wenn die Maske neu geladen wird.

Gruß

Alex

Hallo Alex,

besten DANK!
Die Session-Variable hab’ ich zum Testen mal per Button gesetzt und in einem Text-Feld (mit activeView.Update) angezeigt - klappt soweit. Direkt nach dem Clicken wird ein dynamischer Text erzeugt, zugewiesen und direkt angezeigt.
Das ganze sollte aber immer automatisch ausgeführt werden, wenn ein neuer Datensatz gelesen wird (beim suchen/blättern/…). Leider gibt’s bei den Ereignissen keinen Trigger für „Datensatz wurde geladen“ o.ä., deshalb kann ich das Problem so leider (noch) nicht lösen.
Ich schau’ mal ob es noch eine andere Möglichkeit gibt das Script zu starten, wenn eine neuer Datensatz gelesen wird - dann könnte man das evtl. so lösen.

Gruß
Stephan

Hi Stephan,

ok - mit jedem Datensatz-Wechsel… Krass. :slight_smile: Also das ist äh ziemlich dynamisch. :-)))) Ich meine: jedes Mal alles aktualisieren, nur weil der Anwender grad z.B. in der Übersichtsliste durch die Daten mit Bild-hoch/-runter blättert?

Der Benutzer soll also immer und über all sehen können, auf welchem Datensatz er gerade in der Auftragsansicht (du schriebst „Auftrag 4711 und 0815“) steht? Ist das so eine Art Hardcore-Zeiterfassung? :slight_smile:

Was ist, wenn die Ansicht zweimal offen ist und er auf zwei unterschiedlichen Datensätzen steht? :wink:

Könntest du nicht den Anwender über einen DialogSelectRecord „wenigstens“ einen konkret auswählen lassen (müssen)? Á la „An welchem Projekt arbeitest du gerade?“ Dann hättest du einen definierten Zeitpunkt und könntest die Variablen setzen.

Sonst fällt mir nix ein - außer vielleicht noch den Verlauf nutzen? Dort steht der Datensatz auf dem man zuletzt gesprungen ist zuoberst. Ob man den Verlauf nur auf eine bestimmte Ansicht scharf machen kann, weiß ich grad nicht.

Gruß

Alex

Hi Alex,
ich komme ja aus dem Dynamics NAV Umfeld und da ist sowas eigentlich ganz normal - auch wesentlich einfacher zu realisieren weil’s nicht die strikte Trennung zwischen Darstellung und Programmierung gibt. Da ist man dann auch sehr verwöhnt was Trigger u.ä. betrifft - man kann wirklich jedes Event abfangen, da fehlen mir hier etliche.

… zurück zum Thema was eigentlich gemacht werden sollte:
Der Plan war, bei einem Auftrag Infos zu dem zugeordneten Standort anzuzeigen, den ggf. auch andere unserer Auftraggeber nutzen. Dies brauchen unser User öfter um diese Informationen zu kopieren und per Mail weiter zu leiten.
Aktuell kopieren sie jedes einzelne Feld des Standorts, laden den Standort und kopieren dann alle einzelnen Verknüpfungen zu den weiteren Auftraggebern - d.h. dann oft 30-40 mal copy/paste.
Um dies zu vereinfachen (und auch die Infos kompakt anzuzeigen) sollten diese einzelnen Infos in einem einzelnem Textfeld dargestellt werden - ist übersichtlicher und halt nur ein mal copy/paste für alle Infos.
Leider kann man ja solche Textfelder nicht kopieren, d.h. wahrscheinlich wird die ganze Idee wieder verworfen. :frowning:

Gruß
Stephan

Hi,

mach dir eine Übernahmemaske mit dem Ziel „Zwischenablage“ und konfiguriere dort ganz in Ruhe, welche Felder oder gar welche Formeln auf welche Weise die ganzen Standort-Infos zusammenstellen sollen.

Dann legst die diese Übernahmemaske auf eine Schaltfläche. Nach dem Klick landet die Info in der Zwischenablage und kann vom Anwender woanders (Outlook, wo auch immer) per Strg+V eingefügt werden.

Fertig.

Wenn die Info wiederum im cRM auf diverse Felder schreibend verteilt werden soll, dann würde ich ein internes Zwischenablageformat machen (Zeilenweise und jede Zeile hat z.B. die Form „Quellfeldname:Inhalt“ und du kannst in einem Script über WScript.ClipboardText auf die Zwischenablage zugreifen, die dann zeilenweise durchklappern und über die CurrentInputForm in der „Zielansicht“ die „richtigen“ Felder setzen. Als Beispiel.

Gruß
Alex

… hab’ zum Kopieren einen copy/paste-Button eingefügt, der ein Script ausführt welches die Daten zusammen sucht und in Clipboardtext ablegt - ist zumindest eine Erleichterung für die Anwender.

Gruß und Dank

Stephan

© combit GmbH