Dynamische tekstregels

  • 2 minutes to read

Dynamische tekstregels zijn tekstregels die op basis van een bepaalde configuratie worden ingevoegd in een document.
Om de tekstregels in te voegen wordt gebruikt gemaakt van de volgende procedure:

procedure CFLFillLines(var SourceRecRef: RecordRef) TextLines: list of [Text]
Parameter Omschrijving
SourceRecRef Referentie naar de bronrecord waaruit de gegevens worden opgehaald.

Voorbeeld

Eenvoorbeeld van invoegen van dynamische tekstregels kan gevonden worden in het ophalen van verzendregels op een verkoopfactuur.

[EventSubscriber(ObjectType::Table, Database::"Sales Shipment Line", 'OnBeforeInsertInvLineFromShptLineBeforeInsertTextLine', '', false, false)]
local procedure CFLSalesShpmtLineOnBeforeInsertInvLineFromShptLineBeforeInsertTextLine(var SalesShptLine: Record "Sales Shipment Line"; var SalesLine: Record "Sales Line"; var NextLineNo: Integer; var Handled: Boolean)
var
    CFLDynamicTextHeader: record "CFL Dynamic Text Header";
    CFLFoundationSetup: record "CFL Foundation Setup";
    SalesShptHeader: record "Sales Shipment Header";
    SourceRecRef : RecordRef;
    TextLines: List of [Text];
    LineText: Text;
    AddLine: Boolean;
begin
     CFLFoundationSetup.Get();
        CFLFoundationSetup.TestField("CFL Shipment Dynamic Text");
        SalesShptHeader.Get(SalesShptLine."Document No.");
        SourceRecRef.OPEN(database::"Sales Shipment Header");
        SourceRecRef.GetBySystemId(SalesShptHeader.SystemId);
        CFLDynamicTextHeader.GET(CFLFoundationSetup."CFL Shipment Dynamic Text");
        TextLines := CFLDynamicTextHeader.CFLFillLines(SourceRecRef);
        foreach LineText in TextLines do begin
            AddLine := true;
            if (NextLineNo = 10000) and (LineText = '') then
                AddLine := false;

            if AddLine then begin
                SalesLine.Init();
                SalesLine."Line No." := NextLineNo;
                SalesLine."Document Type" := SalesLine."Document Type";
                SalesLine."Document No." := SalesLine."Document No.";
                SalesLine.Description := copystr(LineText, 1, MaxStrLen(SalesLine.Description));
                SalesLine.Insert();
                NextLineNo := NextLineNo + 10000;
            end;
        end;
end;