====== Bedingung ====== Bedingungen werden für Primus Funktionen verwendet um z.B. bestimmte Menüeinträge nur unter bestimmten Bedingungen anzuzeigen oder zu aktivieren. Es gibt mehrere Möglichkeiten Bedingungen zu definieren. ===== Globale Bedingung definieren ===== Im Abschnitt [[Public]] können Bedingungen definiert werden um sie an anderer Stelle in der Konfiguration zu nutzen. Dadurch erhöht sich die Lesbarkeit der Konfiguration und es werden Fehler durch unterschiedliche Vergleiche vermieden. Das [[Glossar#Tag]] heißt **[[Condition]]**, der Name der Bedingung ist das einzige [[Glossar#Attribut]], der Wert besteht aus einem oder mehreren Vergleichen. Mehrere Vergleiche können durch **AND** oder **OR** verknüpft werden. Dabei müssen die einzelnen Vergleiche in ''''' eingeschlossen werden. ^Vergleichsoperator ^Funktion^ | ''==''| Gleich| | ''=!''| Ungleich| | ''<=''| Kleiner oder gleich| | ''>=''| Größer oder gleich| | ''<''| Kleiner als| | ''>''| Größer als| |''~''| Enthält| |''!~''| Enthält nicht| ===== Direkt definieren ===== Eine Bedingung kann auch direkt in dem Parameter der //TRUE// oder //FALSE// erfordert, eingegeben werden. Beispiel: ===== Primus interne Bedingungen ===== Es gibt auch Bedingungen die in Primus intern bereits vordefiniert sind. Die Bedingungen geben immer //TRUE// oder //FALSE// zurück. Optional gibt es Parameter mit denen die Bedingung näher spezifiziert werden kann. Hier eine Liste der bisher bekannten: ^Bedingung ^Parameter ^Erklärung^ |CheckFileLocalSite| ''0''| | |:::| ''1''|:::| |[[CheckActiveLicenseType]]| ''CAD''| Prüft ob Primus mit einer bestimmten Lizenz gestartet wurde| |:::| ''OFFICE''|:::| |:::| ''VIEWER''|:::| |:::| | Beliebiger Name einer Lizenzdatei, z.B. ''JobServer'' (ab Primus 2021)| |[[ContainsListValue]]| ''String|List''| Prüft ob in ''String'' einer der Einträge von ''List'' enthalten ist| |[[IsActiveRegTab]]| | Liefert den Namen des aktiven Datenregisters| |IsCellForPaste | | | |IsCtrlKey | |Abfrage ob die STRG-Taste gedrückt ist| |IsDataForPaste | |Sind Einfügedaten in der Zwischenablage| |IsElementsForCopyPaste | | | |IsElementsForCopyPaste | | | |IsElementsForPaste | |Kann in dieses Element eingefügt werden| |IsJobServerEnabled | |Ist die Jobserverfunktion aktiv| |IsJobServerHost | |Ist dies der Jobserver| |IsListAllSubProjects | |Ist die Listeneinstellung "alle Unterprojekte auflisten" aktiv| |ISLPrimusAddIn.islGetInsertFolder| |{{tag>klaerungsbedarf}}| |IsNodeTypeActive |jobserver| |:::|recyclebin |Ist der Papierkorb gewählt| |:::|stdparts |Ist der Knoten Standard Parts gewählt| |:::|virtfolders |Ist der gewählte Knoten ein virtueller Ordner| |IsProjectActive| |Ist der aktiv gewählte Knoten "Project"| |IsSearchServiceDBActive | |Ist der PrimusSearchService aktiv/erreichbar| |LocalWorkMode|0 |Server Arbeitsweise aktiv| |:::|1 |Lokale Arbeitsweise aktiv| |:::|2 |Offline Arbeitsweise aktiv| |PrimusSmartCopy.IsMarkTarget|0 |Ist ein Einfügeordner gesetzt| |:::|1 |Ist ein Zielordner gesetzt| |PrimusSmartCopy.IsSessionActive| |Ist eine SmartCopy Session aktiv| |PrimusSmartCopy.IsSmartCopySessionActive| |Ist eine SmartCopy Sitzung aktiv| |Workflow.newversioncond| |{{tag>klaerungsbedarf}}| ===== Bedingung in einem Attribut nutzen ===== Die Bedingung wird aufgerufen mit **'CALL(////)'** Beispiel: ==== Ausnahme ==== $(Workflow.newversioncond) ===== Funktionen mit Rückgabewerten ===== Es gibt auch die Möglichkeit eine Funktion aufzurufen die als Rückgabewert //TRUE// oder //FALSE// zurück liefert. Können oder müssen mehrere Werte angeben werden so sind diese mit dem entsprechenden Trennzeichen zu trennen. Im Attribut ''parameter'' ist dies ein ''|''. ^Funktion ^Attribute ^Funktion^ |[[CheckChildrenStatus]]|''condition''|Eine Bedingung die prüft ob diese Datei geprüft werden soll. Siehe [[Status#PreCalls]]| |:::| ''parameter'' ''1''|Pfad zur Datei, z.B. //[[Systemvariable|%FILEPATH%]]//| |:::| ''2''|Feld dessen Wert verglichen werden soll, z.B. [[Status|WorkflowStatus]]| |:::| ''3''|Vergleichswert für den Feldinhalt, mehrere mögliche Werte werden durch einen ''.'' voneinander getrennt, z.B. //.003.004.//| |[[CheckParentsStatus]]| ''condition''|Eine Bedingung die prüft ob diese Datei geprüft werden soll. Siehe [[Status#PreCalls]]| |:::| ''parameter'' ''1''|Pfad zur Datei, z.B. //[[Systemvariable|%FILEPATH%]]//| |:::| ''2''| Feld dessen Wert verglichen werden soll, z.B. [[Status|WorkflowStatus]]| |:::| ''3''| Vergleichswert für den Feldinhalt, mehrere mögliche Werte werden durch einen ''.'' voneinander getrennt, z.B. //.003.004.//| |:::| ''4''| Bedingung die das zu prüfende Dokument erfüllen muß, z.B. eine bestimmte Dateiendung| |:::| ''5''| Text der im Fehlerfall angezeigt werden soll. Es kann ein [[Interfacetext]] eingetragen werden| |[[IgnoreStatus]]| ''condition''|Eine Bedingung die prüft ob diese Datei geprüft werden soll. Siehe [[Status#PreCalls]]| |:::| ''parameter'' ''1''|Pfad zur Datei, z.B. //[[Systemvariable|%FILEPATH%]]//| |:::| ''2''|Feld dessen Wert verglichen werden soll, z.B. [[Status|WorkflowStatus]]| |:::| ''3''|Vergleichswert für den Feldinhalt, mehrere mögliche Werte werden durch einen ''.'' voneinander getrennt, z.B. //.003.004.//| ===== AND / OR Verknüpfung ===== Bedingungen können mittels **AND** und **OR** miteinander verknüpft werden. Dabei gilt die Regel AND vor OR, ähnlich wie Punkt- vor Strichrechnung in der Mathematik. Es ist aber auch möglich die Vergleiche in Klammern zu setzen, diese Klammern kommen in der Reihenfolge zuerst. ('%EXTENSION%==.par'OR'%EXTENSION%==.asm')AND'#(Title)=='' Es wird zuerst verglichen ob es eine ''.par'' **oder** ''.asm'' handelt, **und** ob der ''Title'' leer ist. ==== Verschachtelte Verknüpfungen ==== Bei Verschachtelten Verknüpfungen kann es evtl. notwendig sein mit Klammern zu arbeiten. === Beispiel === Für die Verarbeitung werden von Primus intern die Bedingungen in ihre Strings aufgelöst, was dann so aussieht: Ohne die zusätzliche Klammer um die Bedingung ''$(Condition.isSEDocument)'' würde lediglich AND vor OR gelten, was letzlich dann auf ... OR'#(FILE_TYPE)==PWD'AND'#(WorkflowStatus)!=003' Die UND Bedingung wäre also nur bei PWDs erfüllt worden, bei keinem anderen Dateityp. ==== Ausnahme bei Call ==== Werden Bedingungen mittels [[Call]] abgefragt, dann ist die Verwendung von Klammern nicht möglich. In dem Fall muss "ausgeklammert" werden: 'CALL(IsNodeTypeActive stdparts)'AND'$(Condition.isCADLic)' OR 'CALL(IsProjectActive)'AND'$(Condition.isCADLic)' ===== Bedingte Wertzuweisung in Parametern mittels IF ===== Es ist möglich in Attributen die Parameter einzelner Funktionen sind, Werte mithilfe von Bedingungen zu definieren. Dies ist z.B. bei der Definition von Dateinamen wichtig. Die Bedingungen hat folgenden allgemeinen Aufbau ''IF(':)'' **Ein verschachteln der IF Bedingungen ist nicht zulässig!** ==== Beispiele ==== ==== Liste der unterstützten Parameter ==== Die Auswertung von ''IF'' erfolgt nicht in allen Parametern, die Liste ist Möglicherweise noch unvollständig. {{tag>Klärungsbedarf}} ^ Parameter^ Verwendung^ | ''mode_singlesel''| Data Sheets| | ''parameter''| Diverse Befehle| | ''filename_format''| NewFileNameDialog| {{tag>menu GUI Kontext Bedingung Copy Liste Umstellung_P7_auf_P2021}}