Neuigkeiten:

CONbasic CPQ-Forum geht an den Start

Hauptmenü

Neueste Beiträge

#1
Tipps und Tricks / Autovervollständigung (STRG+Le...
Letzter Beitrag von Stopka - Jan 26, 2023, 12:00 NACHMITTAGS
Das man WASELE während der Eingabe von Pfaden mit STRG+Leerzeichen suchen und vervollständigen kann wusstet ihr vielleicht.
Wusstet ihr auch, dass ganze Prozeduren so vervollständigt werden können?

Beispiel:

if(STRG+Leerzeichen) dann entsteht folgender Code
IF  THEN

ELSE

ENDIF;

oder

case(STRG+Leerzeichen) dann entsteht
CASE
IS  DO

IS  DO

ENDCASE;

vielleicht kann euch das etwas Tipparbeit ersparen  ;)
#2
Tipps und Tricks / Objektprüfung Syntax
Letzter Beitrag von Stopka - Jan 26, 2023, 11:36 VORMITTAG
eine Zeit lang mussten die Objekte eines Pfades einzeln auf Verfügbarkeit geprüft werden, um keinen Systemabsturz zu bekommen und letztendlich ein Merkmal abfragen zu können.

Beispiel:
if Objekt and Objekt.KomponenteX and Objekt.KomponenteX.KomponenteY then
   if (Variable := Objekt.KomponenteX.KomponenteY.Merkmal) = novalue then
      return novalue;
   endif;
endif;
#
return;

Seit Camos 16 ist es möglich die Objekte smart in einer Zeile auf Gültigkeit zu prüfen, indem vor der Punktnotation ein Fragezeichen gesetzt wird.
Beispiel:
 if (Variable := Objekt?.KomponenteX?.KomponenteY?.Merkmal) = novalue then
      return novalue;
 endif;
#
return;

Bei dieser Syntax wird Novalue ausgegeben sobald einer dieser Objekte nicht besteht.
#3
Tipps und Tricks / Aw: Überprüfen, ob sich eine R...
Letzter Beitrag von RR - Jan 26, 2023, 11:35 VORMITTAG
Die Nachteile des Watchdogs sind aus meiner Sicht

a) mehr Programmierung
Man muss mit der camos-Funktion WatchdogCreate erst einmal einen Watchdog erzeugen, und dann für jeden zu überwachenden Ausdruck einen Aufruf WatchdogSetOn für den erzeugten Watchdog registrieren.
b) Beim Zutreffen von per WatchdogSetOn registrierten Ausdrücken, kommt es m.E. zu mehreren Aufrufen der in WatchdogCreate angegebenen Trigger-Methode.

Mit dem SML-Mechanismus werden mehrere Ausdrücke auf einmal auf Änderung überprüft, und der SML-Trigger nur einmalig gestartet.

Nachteil des SML-Mechanismus ist ein zusätzliches Trigger-Objekt (und Klasse). Das kann man sich jedoch zum eigenen Vorteil zunutze machen. Die Triggerklasse kann unterschiedliche SMLs je nach Verwendungsfall bereitstellen, und SML-Trigger lassen sich mit Regelwerk bei Bedarf ein- und ausschalten.
#4
Tipps und Tricks / Maskenelement Switchbox liefer...
Letzter Beitrag von Stopka - Jan 26, 2023, 11:17 VORMITTAG
Das Maskenelement Switchbox gibt nach der Abwahl eines Wertes immer (auch bei einem String Merkmal) eine 0  zurück.
Wenn novalue anliegen soll, ist die einfachste Möglichkeit über den Zuweisungstrigger des Merkmals zu reagieren.

Beispielcode am Zuweisungstrigger:

if MerkmalValue = 0 then
MerkmalValue := novalue;
endif;
#
return;


#5
Tipps und Tricks / Aw: Überprüfen, ob sich eine R...
Letzter Beitrag von S.Saibel - Jan 23, 2023, 01:11 NACHMITTAGS
Hallo RR,

bewirkt das Anlegen von Watchdogs dasselbe? Worin liegen die Vor- / Nachteile beider Verfahren?
#6
CPQ-Themen / In eigener Sache
Letzter Beitrag von RR - Jan 16, 2023, 01:42 NACHMITTAGS
Willkommen im Forum rund um CPQ-Themen!

Ich möchte mich kurz verstellen. Mein Name ist René Rössler, Symundo Projektberatung, und beschäftige mich mit CPQ-Themen seit 1996.

Schwerpunkte sind Software-Entwicklungen rund um camos.develop und TAP.CON TCE, sowie Web- und Desktop-Entwicklungen.

Ich wünsche mir in diesem Forum einen regen Informationsaustausch der Mitglieder in CPQ-Fragen. Wir richten auch gerne Boards für Unternehmen ein, um spezielle unternehmensspezifische Fragen in der täglichen Entwicklungsarbeit zu beantworten.

Mit einem schönen Gruß aus Stuttgart

René

#7
Tipps und Tricks / Überprüfen, ob sich eine Reihe...
Letzter Beitrag von RR - Jan 13, 2023, 04:24 NACHMITTAGS
Oftmals verteilen sich Merkmale in der Objektstruktur, und es ist ein Methodenaufruf vonnöten, wenn sich eines dieser Merkmale geändert hat.
Ungünstig ist, wenn man dazu im Zuweisungstrigger jeweils die Methode aufruft, weil dann z.B. bei der Initialisierung von Objekten möglicherweise dutzendmal ein und dieselbe Aktion gestartet wird.

Stattdessen kann man sich einen SML in einer eigens dafür vorbereiteten Klasse anlegen, von der man ein Objekt zur Laufzeit erzeugt.

Für jedes zu überprüfende Merkmal wird dann eine Zeile in der SML-Definition angelegt, und in der Methode des SML wird die Methode für die Aktion aufgerufen.

An der Komponente für diese Hilfsklasse wird dann der zugehörige SML-Trigger zu diesem SML definiert, und die Kriterien mit den Pfaden zu den zu überprüfenden und in der Objektstruktur verteilten Wasele gebildet.