gelöst: aktualisieren der Arbeitsgänge in den Arbeitsplänen

29. Februar 2016 00:12

Hallo,

bereits in NAV 2009 classic hatten wir das Problem, dass wenn sich z.B. eine Bezeichnung eines Arbeitsgangs (Standard Task) oder dessen gesetzte Kosten geändert haben, dann wurde das nicht einfach automatisch in alle Arbeitspläne mit diesen Arbeitsgängen übernommen, sondern man musste praktisch jeden Arbeitsplan-Kopf (Routing Header) ent-zertifizieren, dann den jeweiligen Arbeitsgang im Arbeitsplan refreshen, dann den Kopf wieder zertifizieren.

Im alten System hatten wir das mit folgendem Report über das Data Item "Routing Header" automatisiert: (die Variablen RoutingLine und ZertifMerker sind definiert)

Code:
//Gehe alle Arbeitsplanköpfe durch
//existieren zu diesem Arbeitsplankopf irgendwelche Arbeitsplanzeilen?
CLEAR(RoutingLine);
RoutingLine.RESET;
RoutingLine.SETRANGE("Routing No.","No.");
//wenn nein, überspringe diesen Kopf
IF NOT RoutingLine.FINDFIRST THEN CurrReport.SKIP;
ZertifMerker := FALSE;
//Falls der Arbeitsplan zertifiziert ist, setze den ZertifMerker und dezertifiziere den Arbeitsplan
IF Status = Status::"Under Development" THEN CurrReport.SKIP;
IF Status = Status::Certified THEN BEGIN
   Status 
:= Status::"Under Development";
   ZertifMerker := TRUE;
   MODIFY(TRUE);
END;
RoutingLine.RESET;
RoutingLine.SETRANGE("Routing No.","No.");
IF RoutingLine.FINDFIRST THEN REPEAT
  RoutingLine
.VALIDATE("Standard Task Code");
  RoutingLine.MODIFY(TRUE);
UNTIL RoutingLine.NEXT = 0;
//Falls ZertifMerker gesetzt ist ==> den Header wieder zertifizieren
IF ZertifMerker THEN BEGIN
  VALIDATE
(Status,Status::Certified);
  ZertifMerker := FALSE;
  MODIFY(TRUE);
END


Jetzt habe ich diesen Report ins NAV 2015 übernommen, aber es ändern sich die Arbeitspläne nicht, die ganze Sache bleibt nach ein paar Minuten stehen mit dem Fehler:

'Standardkatalog' ist nicht vorhanden, Identifizierende Felder und Werte: Code=''

Was ist jetzt falsch? funktioniert das Validate jetzt anders?
Bin für jeden Tipp dankbar, muss es nämlich auch noch für die Stückliste umsetzen....
Zuletzt geändert von SGanzmann am 29. Februar 2016 21:32, insgesamt 2-mal geändert.

Re: aktualisieren der Arbeitsgänge in den Arbeitsplänen

29. Februar 2016 12:55

Hallo,

müsste der Code nicht folgendermaßen sein ??

Code:
if  ("Standard Task Code") <> '' then begin
  RoutingLine.VALIDATE("Standard Task Code", "Standard Task Code");
  RoutingLine.MODIFY(TRUE);
end;

oder


if  ("Standard Task Code") <> '' then begin
  RoutingLine.VALIDATE("Standard Task Code");
  RoutingLine.MODIFY(TRUE);
end;
 


Validate ohne Wert verursacht bestimmt die Fehlermeldung über das Property Tablereleation hinter dem Feld.
Und einen Standard Task Code mit "leer" hast du bestimmt nicht in der Tabelle, oder?

Re: aktualisieren der Arbeitsgänge in den Arbeitsplänen

29. Februar 2016 21:31

Danke - das war's.

Ich musste nur noch leicht korrigieren:

Code:
IF  (RoutingLine."Standard Task Code")


Da der Report ja über den Routing Header läuft, das Feld aber in den dazugehörigen Routing Lines drin ist.

Danke OMEGA, das hast Du sehr schön gesehen!!

Re: gelöst: aktualisieren der Arbeitsgänge in den Arbeitsplä

1. März 2016 11:42

Gerne :-)

Code:
RoutingLine.setfilter("Standard Task Code",'<>%1', '');


Besser wäre vorher ein Filter auf alle ungleich leer zu setzen.
Dann hättest du sogar Performance gespart.

Gruß