Problem mit Update-Veröffentlichung auf AppSource

26. März 2025 10:50

Hallo zusammen,

ich habe aktuell Schwierigkeiten, ein Update für eine App auf AppSource bereitzustellen, und hoffe, dass mir jemand weiterhelfen kann.

Im letzten erfolgreichen Update enthielt mein Code die folgende `PageExtension`:

Code:
pageextension 12345 "XXX-Posted Sales Shpt. Subform" extends "Posted Sales Shpt. Subform"
{
    actions
    {
        addafter(UndoShipment)
        {
            action("XXX-UndoShipment")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'XXX Undo Shipment', Comment = 'DEU="XXX Warenausgang stornieren"'; 
                trigger OnAction()
                begin
                    UndoShipmentPosting();
                end;
            }
        }
    }
    local procedure UndoShipmentPosting()
    var
        SalesShptLine: Record "Sales Shipment Line";
        IsHandled: Boolean;
    begin
        SalesShptLine.Copy(Rec);
        CurrPage.SetSelectionFilter(SalesShptLine);
        OnBeforeUndoShipmentPosting(SalesShptLine, IsHandled);
        if not IsHandled then
            CODEUNIT.Run(CODEUNIT::"XXX-Undo Sales Shipment Line", SalesShptLine);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeUndoShipmentPosting(SalesShipmentLine: Record "Sales Shipment Line"; var IsHandled: Boolean)
    begin
    end;
}


Das Update wurde damals erfolgreich validiert. Jetzt wollte ich jedoch eine neue Version bereitstellen und habe folgende Fehlermeldung erhalten:


Failed tasks: The extension 'XXX' failed validation for version 26.0 and country/region DE.
Details: source/SalesShipmentExtension/XXXPostedSalesShptSubform.PageExt.al (41,21) - Error AL0819:
The Page 'Posted Sales Shpt. Subform' already defines an event called 'OnBeforeUndoShipmentPosting'
with the same parameter types in 'Base Application by Microsoft (26.0.30643.31903)'.



Das klang für mich so, als ob das `IntegrationEvent` nicht so heißen darf. Daher habe ich das Event testweise aus der App entfernt, wodurch sich der Code folgendermaßen geändert hat:


Code:
pageextension 12345 "XXX-Posted Sales Shpt. Subform" extends "Posted Sales Shpt. Subform"
{
    actions
    {
        addafter(UndoShipment)
        {
            action("XXX-UndoShipment")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'XXX Undo Shipment', Comment = 'DEU="XXX Warenausgang stornieren"'; 
                trigger OnAction()
                begin
                    UndoShipmentPosting();
                end;
            }
        }
    }
    local procedure UndoShipmentPosting()
    var
        SalesShptLine: Record "Sales Shipment Line";
        IsHandled: Boolean;
    begin
        SalesShptLine.Copy(Rec);
        CurrPage.SetSelectionFilter(SalesShptLine);
        if not IsHandled then
            CODEUNIT.Run(CODEUNIT::"XXX-Undo Sales Shipment Line", SalesShptLine);
    end;
}


Nach einem erneuten Validierungsversuch kam jedoch die nächste Fehlermeldung:


Failed tasks: The extension 'XXX' failed validation for version 26.0 and country/region DE.
Details: source/SalesShipmentExtension/XXXPostedSalesShptSubform.PageExt.al (1,23) - Error AS0018:
Procedure 'OnBeforeUndoShipmentPosting(Record "Sales Shipment Line", var Boolean)' has been removed
in 'PageExtension XXX-Posted Sales Shpt. Subform'. A procedure that belongs to the public API must
not be removed as it will break dependent extensions calling this procedure.



Nun scheint das Event also doch notwendig zu sein. Ich finde diese Situation sehr verwirrend: Einerseits darf ich die Methode nicht so benennen, andererseits darf ich sie nicht entfernen.

Zusätzlich erhielt ich folgende Warnung:

The Page 'Posted Sales Shpt. Subform' already defines an event called 'OnBeforeUndoShipmentPosting'
with the same parameter types in 'Base Application by Microsoft (25.1.25873.27921)'.
This warning will become an error when targeting a runtime with version '15.0' or higher. AL0818



The procedure 'OnBeforeUndoShipmentPosting' in PageExtension 'XXX-Posted Sales Shpt. Subform' must
have at least one of the mandatory affixes 'XXX' to prevent breaking dependent extensions that reference
it in case a procedure with the same signature is introduced by the base object or by another extension.



Ich vermute daher, dass die Validierung eine neuere Runtime-Version nutzt und deshalb die Konflikte auftreten. Falls das der Fall ist, weiß ich leider nicht, wie ich den Fehler beheben oder wo ich mich melden kann.
Beim versuch das Event einfach mit dem Prefix umzubennen kommt auch die Fehlermeldung das das Event nicht mehr vorhanden ist.
normalerweise werden sollche Methoden mit [Obsolete] gekennzeichet, damit sie später gelöscht werden können, das hat auch nich geholfen.

Hat jemand eine Idee, wie ich dieses Problem lösen kann?

Vielen Dank für eure Hilfe!
Zuletzt geändert von tidey am 27. März 2025 08:40, insgesamt 1-mal geändert.

Re: Problem mit Update-Veröffentlichung auf AppSource

26. März 2025 17:06

Hallo tidey,

dein Quelltext ist leichter zu lesen und zu verstehen, wenn du ihn zwischen so genannte Code-Tags setzt. Insbesondere deine Formatierungen werden so auch beibehalten.

Daher bitten wir dich, vor und nach deinem Quelltext diese Code-Tags einzufügen. Beispiel:


[code]Dein Quelltext[/code]

Gruß, Kowa
MSDynamics.de-Team

Re: Problem mit Update-Veröffentlichung auf AppSource

27. März 2025 08:42

Hallo Kowa,

Danke für den Hinweis. Ich habe den Code und die Warnungen jetzt angepasst.
Ich hoffe jetzt wirs es eher klar, was das Problem ist.