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;
}