TECHNISCHER BLOG

CLEAR versus INIT in der C / AL-Programmierung

Beide AL-Funktionen haben eine ähnliche Bedeutung und können theoretisch zum Löschen oder Initialisieren eines Datensatzes verwendet werden. Es gibt jedoch einen wichtigen Unterschied. Eine der Funktionen setzt den Mandanten zurück, geändert mit der Funktion CHANGECOMPANY. Beim Refactoring einer alten und vielfach verbesserten Codeunit bin ich kürzlich auf folgendes Muster gestoßen. Nehmen wir an, der aktuell ausgewählte Mandant ist 'Mandant A' .

Customer.CHANGECOMPANY('Mandant B');

...
CLEAR(Customer);
Customer.INIT;
Customer."No." := 'Anything'
...
Customer.INSERT;

Die Ausführung des oben geschnippten Kodes fügt immer einen Datensatz in dem 'Mandant A' ein. Der Grund dafür ist, die Funktion CLEAR beeinflusst das Setup von CHANGECOMPANY. Aus diesem Grund ist der obige Kode inkonsistent. Zu beachten sind daher die folgenden Regeln.

CLEAR beeinflusst CHANGECOMPANY und setzt den Anwendungsbereich auf den aktuell verwendeten Mandanten zurück

Customer.CHANGECOMPANY('Mandant B');
...
CLEAR(Customer);
Customer.INIT;
Customer."No." := 'Anything'
...
Customer.INSERT;

INIT löscht alle Felder mit Ausnahme des Primärschlüssels. Um die Felder löschen zu können, die im Primärschlüssel enthalten sind, muss zusätzlich CLEAR verwendet werden.

Customer.CHANGECOMPANY('Mandant B');
...
CLEAR(Customer."No.");
Customer.INIT;
Customer."No." := 'Anything'
...
Customer.INSERT;

Im obigen Beispiel scheint der Aufruf von CLEAR jedoch unnötig zu sein.

Rufen Sie CHANGECOMPANY nach der CLEAR Funktion auf.

Customer.CHANGECOMPANY('Mandant B');
...
CLEAR(Customer);
Customer.CHANGECOMPANY('Mandant B');
Customer.INIT;
Customer."No." := 'Anything'
...
Customer.INSERT;

Dynamics NAV TM Entwickler und Berater View Konrad Buczkowski's LinkedIn profile Konrad Buczkowski

Wir verwenden Cookies
Einige von ihnen sind essenziell (z.B. speichern von gewählten Optionen des Lizenzrechners), während andere uns helfen unsere Website bei Werbung zu analysieren. Sie können dies akzeptieren oder ablehnen sowie diese Einstellungen jederzeit aufrufen und Cookies auch nachträglich abwählen (im Fußbereich unserer Website unter "Cookies Einrichtung"). Nähere Hinweise in unserer Datenschutzerklärung.
Individuelle Cookie Einstellungen
Notwendig ( 3 / 3 )
Notwendige Cookies helfen dabei, eine Webseite nutzbar zu machen, indem sie Grundfunktionen wie Seitennavigation und Zugriff auf sichere Bereiche der Webseite ermöglichen. Die Webseite kann ohne diese Cookies nicht richtig funktionieren.
v
Details in dieser Gruppe einblendenDetails in dieser Gruppe ausblenden
  • AkzeptiertNameKonfigurierungscookieAnbieterseccount.comZweckSpeichert vom Besucher in einem Feld ausgewählte Einstellungen.Cookie Namemod_cookies_125Cookie Laufzeit1 Jahr
  • AkzeptiertNameSessionAnbieterSeccount.comZweckCookies, die für die Sessionsitzung auf der Website verantwortlich sind.Cookie Names81a877_vv, s81a877_verify, s81a877, s81a877_v, c_verifyCookie Laufzeit1 Tag, Session
  • AkzeptiertNameCookiesAnbieterSeccount.comZweckCookies, die die Verwendung von Cookies bestätigen.Cookie Namec_verifyCookie Laufzeit38 Monate
Statistiken ( 1 / 1 )
Statistik-Cookies helfen Webseiten-Besitzern zu verstehen, wie Besucher mit Webseiten interagieren, indem Informationen anonym gesammelt und gemeldet werden.
v
Details in dieser Gruppe einblendenDetails in dieser Gruppe ausblenden
  • AkzeptiertNameGoogle AnalyticsAnbieterGoogle LLCZweckRegistriert eine eindeutige ID, die verwendet wird, um statistische Daten dazu, wie der Besucher die Website nutzt, zu generieren.Datenschutzerklärunghttps://policies.google.com/privacyCookie Name_ga,_gat,_gidCookie Laufzeit24 Monate
aaa1604053742