Änderungen von Kreditoren mandantenübergreifend ändern

10. Juni 2013 16:58

Hallo zusammen,

ich habe folgendes Problem:
Wir haben mehrere Mandanten in Navision, welche jedoch teilweise die selben Kreditoren haben. Daher wurde der Wunsch geäußert, dass Änderungen in Mandant A nach einer Abfrage, ob dies auch gewollt ist, auch in Mandant B und C mit gezogen werden. Ich habe diese Funktion der Datenänderung in den anderen Mandanten in einer Codeunit hinterlegt.
In der Tabelle Kreditor habe ich zusätzlich ein Boolean Feld angelegt, welches in jedem OnValidate der Felder auf TRUE gesetzt wird. In der Kreditorenkarte beim wechseln in einen anderen Kreditor dann eine Abfrage:

Code:
IF "Änderungen vorgenommen" THEN BEGIN
  IF CONFIRM ('Sollen die Änderungen auf die anderen Mandanten übernommen werden?') THEN
    EK.KreditorAktualisieren(Rec)
END;


Er springt mir dann aber in der Codeunit nach einem der Aktualisierung der Daten im "nachKreditor.MODIFY" heraus mit der Fehlermeldung "Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde".

In der Codeunit sieht das wie folgt aus:

Code:
IF NachMandant[1] <> '' THEN BEGIN
  IF NOT nachComment.CHANGECOMPANY(NachMandant[1]) THEN
    EXIT;
  IF NOT NachAnhang.CHANGECOMPANY(NachMandant[1]) THEN
    EXIT;
  IF NOT nachKreditor.CHANGECOMPANY(NachMandant[1]) THEN
    EXIT;
END;


nachKreditor.RESET;
nachKreditor.SETRANGE("Common ID",vonKreditor."Common ID");
IF nachKreditor.FINDFIRST THEN BEGIN
  CurrVendor := nachKreditor."No.";
  nachKreditor.Name := vonKreditor.Name;
  [... sämtliche andere Felder noch]
  nachKreditor.MODIFY;



Hat vielleicht jemand - soweit man mein Geschreibsel nachvollziehen kann und versteht - eine Idee, was ich tun könnte?

Danke
Michael

Re: Änderungen von Kreditoren mandantenübergreifend ändern

11. Juni 2013 17:21

Ich hoffe, ich habe dein Anliegen verstanden:-)
In welchem Trigger rufst du die Funktion auf?

Du kannst das umgehen, in dem du deinen Code in einen Report auslagerst (Report ohne RequestPage und ProcessingOnly).
Und dann für jeden Datensatz den Report starten.



Gruß
Aydin