"Die Verkaufskopf existiert nicht" bei Buchen + Drucken

30. Oktober 2013 16:08

Heyho,

beim Buchen von VK-Rechnungen über "Buchen + Drucken" erscheint die Meldung "Die Verkaufskopf existiert nicht ...". Als "identifzierende Felder und Werte" werden die Schlüsselfelder der eben verbuchten Rechnung angegeben.

Die Meldung erscheint unregelmäßig beim Verbuchen der Rechnungen und konnte von mir bisher nicht nachgestellt werden. Ein Blick in die CU 80 und 82 ergab auch nichts Verdächtiges oder Ungewöhnliches. Filter in der Form sind ebenfalls nicht gesetzt.

Hat jemand schon einmal so eine Erfahrung gemacht? Wie kann es sein, dass sich der Client an einigen Rechnungen "verschluckt" und bei anderen klaglos funktioniert?

Die Datenbank läuft unter NAV 2009R2 auf dem ClassicServer, der Objektstand ist 2.60.

LG
Thomas

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

30. Oktober 2013 16:55

Hallo Thomas,

Ja hatte ich auch mal. Klingt so als wäre da etwas angepasst entweder in CU82 oder in der Drucken-Funktion (die eigentlich in T110/112/114 stecken sollte, und nicht auf "Verkaufskopf" geht). Alternativ könnte auch das Fenster aus dem Du druckst schuld sein, das es irgendetwas aus dem gerade gebuchten Record abrufen will - was ja jetzt weg ist. Mal den Debugger anmachen und hoffen?

LG Jens

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

30. Oktober 2013 17:22

Hallo Jens,

gedruckt wird ganz normal aus Form 43 (und Form 47 als Subform). Soweit ich das sehe, gibt es dort auch keine Anpassungen, die über das Einblenden einiger Felder hinausgehen. Die gebuchten Rechnungsbelege geben leider auch keinen Aufschluss, warum die Meldung bei einigen Belegen erscheint, beim großen Löwenanteil aber nicht.

Im Grunde ist es ja kein Beinbruch. Es geschehen keine schlimmen Dinge und die Rechnungen werden ja auch ordentlich durchgebucht. Ich möchte nur gerne eine etwas fundiertere Antwort abliefern als 'Sowas passiert eben manchmal *achselzuck*' Abgesehen davon, würde es mich auch interessieren, woran es nun liegt.

Im Moment klingt es für mich eher so, als läge das Problem nicht an der Datenbank an sich (sonst würde der Fehler wohl bei jedem Buchungsvorgang auftreten), sondern als würde der Client sich gelegentlich verschlucken, wenn ihm der Rec unterm Hintern weggelöscht wird.

LG
Thomas

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

31. Oktober 2013 12:26

Hallo Thomas,

bei den zusätzlich eingeblendeten Feldern reicht es aus, wenn sie ein selbstreferenziertes Flowfield sind... vielleicht sowas?

LG Jens

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

4. November 2013 10:33

Hallo Jens,

daran scheint es auch nicht zu liegen ... der Fall scheint aber in der Zwischenzeit nicht weiter aufgetreten zu sein.

LG
Thomas

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

4. November 2013 10:43

Wenn die Fehlermeldung nur sporadisch erscheint, könnte ich mir vorstellen, dass entweder hinter dem MenuItem "Buchen+Drucken" oder in der Codeunit 82 Programmcode existiert, welcher nur bedingt den Verkaufskopf holen möchte, jedoch nicht prüft, ob der Datensatz noch existiert:

Beispiel für Aufruf im MenuItem:
Code:
CODEUNIT.RUN(CODEUNIT::"Sales-Post + Print",Rec);

IF <Bedingung> THEN BEGIN
  SalesHeader
.GET(...);  // bzw. Rec.GET(...); bzw. GET(...);
  [...]
END


Beispiel für Aufruf in CU82:
Code:
SalesPost.RUN(SalesHeader);

IF <Bedingung> THEN BEGIN
  SalesHeader
.GET(...);
  [...]
END

Re: "Die Verkaufskopf existiert nicht" bei Buchen + Drucken

4. November 2013 11:07

Hallo Timo,

den Gedanken hatte ich auch schon. Tatsächlich habe ich in der CU82 zwar Stellen gefunden, an denen sich auf Feldinhalte des SalesHeader bezogen wird (der ja beim Durchlauf der CU80 gelöscht wird), ein explizites GET fehlt da aber. Abgesehen davon, dass so ein Konstrukt ja grundsätzlich bei jeder Buchung scheitern würde, sofern denn die entsprechenden Bedingungen erfüllt sind.

Code:
  ...

  VerkBuchen.RUN(VerkKopf);

  CASE Belegart OF
    ...
    Belegart::Rechnung:
      BEGIN
        IF [b]"Letzte Buchungsnr."[/b] = '' THEN
          VerkRechKopf."Nr." := [b]"Nr."[/b]
        ELSE
          VerkRechKopf."Nr." := [b]"Letzte Buchungsnr."[/b];
        VerkRechKopf.SETRECFILTER;
        BerichtDrucken(BerichtsAuswahl.Verwendung::"VK-RG");
      END;
  END;


Interessanterweise konnte ich kürzlich eine ganz ähnliche Meldung in unserer eigenen DB (NAV5.0) erzeugen und zwar beim Erstellen eines Auftrages aus einem Angebot. Ich kann mit Sicherheit sagen, dass sich dieses Angebot in keinster Weise von meinen anderen Angeboten unterschieden hat. Die Meldung habe ich weder davor noch danach je wieder erzeugen können. Von daher tendiere ich dazu, den Fehler nicht in den Objekten zu suchen, sondern im ClassicClient.

LG und Danke für eure Antworten
Thomas