Hi,
Publishing your own event means in a scenario where you are not able to find standard events , you can also define your event and publish it for use.
For Example:
In Job Journal Line page you have no event in posting date field.
Lets understand this exercise :
codeunit 50101 JobJournalLinePublisher
{
trigger OnRun()
begin
end;
[IntegrationEvent(true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin
end;
var
myInt: Integer;
}
pageextension 50100 MyExtension extends "Job Journal"
{
layout
{
// Add changes to page layout here
modify("No.")
{
trigger OnBeforeValidate();
var
Publisher: Codeunit 50101;
begin
Publisher.OnAfterValidatePostinDateinJobJournalLine(Rec, Rec."Posting Date");
end;
}
}
actions
{
// Add changes to page actions here
}
var
myInt: Integer;
}
codeunit 50102 JobJournalLineSubscribers
{
EventSubscriberInstance = StaticAutomatic;
[EventSubscriber(ObjectType::Codeunit, Codeunit::JobJournalLinePublisher, 'OnAfterValidatePostinDateinJobJournalLine', '', true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin
JobJournalLine.VALIDATE(Description, JobJournalLine.Description + ' ' + FORMAT(PostDate));
end;
}
Publishing your own event means in a scenario where you are not able to find standard events , you can also define your event and publish it for use.
For Example:
In Job Journal Line page you have no event in posting date field.
Lets understand this exercise :
Step 1 :
Create a new Code unit and type teventint
Type your procedure Name and Parameters inside the procedure.
codeunit 50101 JobJournalLinePublisher
{
trigger OnRun()
begin
end;
[IntegrationEvent(true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin
end;
var
myInt: Integer;
}
Step 2. Define the place where you want to call this Publisher Event.
For me I need it on Page Job Journal Line After validation of No. Field.
{
layout
{
// Add changes to page layout here
modify("No.")
{
trigger OnBeforeValidate();
var
Publisher: Codeunit 50101;
begin
Publisher.OnAfterValidatePostinDateinJobJournalLine(Rec, Rec."Posting Date");
end;
}
}
actions
{
// Add changes to page actions here
}
var
myInt: Integer;
}
Screen for reference:
Step 3. Define the Procedure defination and Subscribe.
{
EventSubscriberInstance = StaticAutomatic;
[EventSubscriber(ObjectType::Codeunit, Codeunit::JobJournalLinePublisher, 'OnAfterValidatePostinDateinJobJournalLine', '', true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin
JobJournalLine.VALIDATE(Description, JobJournalLine.Description + ' ' + FORMAT(PostDate));
end;
}
Screenshot for reference:
I hope with this reference you can define your own publisher event in business central.