Nitin Verma thank you for response.
I created new CodeUnit file where I subscribe to event:
codeunit 50101 "Before Post Validation"
{
[EventSubscriber(ObjectType::CodeUnit, Codeunit::"Sales-Post (Yes/No)", 'OnBeforeConfirmSalesPost', '', false, false)]
local procedure OnBeforeConfirmSalesPost(var SalesHeader: Record "Sales Header"; var HideDialog: Boolean; var IsHandled: Boolean; var DefaultOption: Integer; var PostAndSend: Boolean)
var
SalesLines: Record "Sales Line";
Dimensions: Record "Dimension Set Entry";
DimensionToChange: Record "Dimension Set Entry";
begin
SalesLines.SetRange("Document No.", SalesHeader."No.");
SalesLines.SetRange("Document Type", SalesHeader."Document Type");
SalesLines.SetRange(Type, "Sales Line Type"::"G/L Account");
SalesLines.SetRange("No.", '3004');
if SalesLines.FindSet() then
repeat
Dimensions.SetRange("Dimension Set ID", SalesLines."Dimension Set ID");
Dimensions.SetRange("Dimension Code", 'MYCODE');
if Dimensions.FindSet() then
repeat
if (Dimensions."Dimension Value Code" = '123')
or (Dimensions."Dimension Value Code" = '1234') then
begin
DimensionToChange.SetRange("Dimension Set ID", SalesLines."Dimension Set ID");
DimensionToChange.SetRange("Dimension Code", 'TYPE');
DimensionToChange.Find('-');
DimensionToChange."Dimension Value Code" := 'SALES';
DimensionToChange.Modify; //this line causes an error, because no permission to modify
end;
until Dimensions.Next() = 0
until SalesLines.Next() = 0
end;
}I want validate sales invoice before post. If special statement appears on line, I want to modify specific Dimension for this line.
SalesLine have relation to "Dimension Set Entry" on SalesLine."Dimension Set ID" = "Dimension Set Entry"."Dimension Set ID".
I created new Permission Set to this table, but it didn't help. Of course I added this Permission Set to User Group, and User Group to user.