Dynamics Nav: как создать и связать редактируемое поле с двумя таблицами с помощью событий?

Я создал таблицу и страницу для своего настраиваемого поля, а также расширил таблицу клиентов и заголовок продаж.

По сути, я хочу создать новое поле в таблице, карточке и списке клиентов. Это поле также должно отображаться в счете-фактуре продажи под именем клиента.

Идея здесь в том, что если я изменю значение поля на странице «Счет-фактура», значение автоматически изменится в «Клиенте». Для этого мне нужно использовать Events. Здесь мне становится сложно, поле должно быть редактируемым, поэтому оно не может относиться к классу FlowField. Однако значение не может быть получено от клиента, если поле не является Flowfield (через CalcForm).

Я совершенно не понимаю, как связать поле и сделать его редактируемым.(Примечание: я использую AL для написания кода.) Как решить эту проблему?

      table 50140 "EORI Table"
{
    DataClassification = ToBeClassified;

    fields
    {
        field(1; Customer_No; Code[20])
        {
            DataClassification = ToBeClassified;

        }
        field(2; EORI; Text[50])
        {
            DataClassification = ToBeClassified;
            Editable = true;
        }
    }

    keys
    {
        key(PK; Customer_No)
        {
            Clustered = true;
        }
    }
    
}
page 50121 "EORI Card"
{
    PageType = Card;
    ApplicationArea = All;
    UsageCategory = Administration;
    SourceTable = "EORI Table";

    layout
    {
        area(Content)
        {
            group(GroupName)
            {
                field("Customer No."; Customer_No)
                {
                    ApplicationArea = All;
                }
                field(EORI; EORI)
                {
                    ApplicationArea = All;
                    Editable = true;
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action(ActionName)
            {
                ApplicationArea = All;

                trigger OnAction()
                begin

                end;
            }
        }
    }

    var
        myInt: Integer;
}
page 50122 "EORI List"
{
    PageType = List;
    ApplicationArea = All;
    UsageCategory = Lists;
    SourceTable = "EORI Table";
    CardPageId = "EORI Card";

    layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field("Customer No."; Customer_No)
                {
                    ApplicationArea = All;
                }
                field(EORI; EORI)
                {
                    ApplicationArea = All;
                    Editable = true;
                }
            }
        }
    }

    actions
    {
        area(Processing)
        {
            action(ActionName)
            {
                ApplicationArea = All;

                trigger OnAction()
                begin

                end;
            }
        }
    }

    var
        myInt: Integer;
}
tableextension 50123 EORITableExt extends Customer
{
    fields
    {
        field(50123; EORI; Text[50])
        {
            TableRelation = "EORI Table".EORI;
            ValidateTableRelation = true;
            Editable = true;
        }
    }
}
pageextension 50125 EORIPageCardExt extends "Customer Card"
{
    layout
    {
        addafter(Name)
        {
            field("EORI No."; EORI)
            {
                ApplicationArea = All;
                Editable = true;
                Lookup = true;
            }
        }
    }

    actions
    {
        addafter(Prices)
        {
            action(EORI)
            {
                ApplicationArea = All;
                RunObject = page "EORI List";
            }
        }
    }
}

pageextension 50126 EORIPageListExt extends "Customer List"
{
    layout
    {
        addafter("No.")
        {
            field("EORI No."; EORI)
            {
                Editable = true;
            }
        }
    }

    actions
    {
        addafter(ApprovalEntries)
        {
            action(EORI)
            {
                RunObject = page "EORI List";
                RunPageLink = "Customer_No" = field("No.");
            }
        }
    }
}

1 ответ

Вам нужно что-то вроде этого

      pageextension 50100 SalesOrder extends "Sales Order"
{
    layout
    {
        addafter("Sell-to Customer No.")
        {
            field(EORI; CustEORIG)
            {
                Caption = 'Customer EORI';

                trigger OnValidate()
                var
                    EORITable: Record "EORI Table";
                begin
                    if EORITable.Get(Rec."Sell-to Customer No.") then begin
                        EORITable.EORI := CustEORIG;
                        EORITable.Modify();
                    end;
                end;
            }
        }
    }

    var
        CustEORIG: Text[50];

    trigger OnAfterGetCurrRecord()
    var
        EORITable: Record "EORI Table";
    begin
        if EORITable.Get(Rec."Sell-to Customer No.") then
            CustEORIG := EORITable.EORI;
    end;
}
Другие вопросы по тегам