Announcements
I have a custom table and page created, and saving a Document Attachment doesn't seem to save the document to the proper record. I have followed this blog to fix this for one of my tables: https://yzhums.com/11177/
This did work for me, but what if I have multiple tables (the article only fixes this for one table "Payment Terms")? Would I have to make a codeunit for each one? I am trying to find the most efficient way of making this dynamic if I have a lot of custom tables.
Thanks!
Hi,
You can pass the record reference to the Document Attachment page and then subscribe to the events for the document attachment to work with your table.
Action to open page:
var
DocumentAttachmentDetails: Page "Document Attachment Details";
RecRef: RecordRef;
begin
RecRef.GetTable(Rec);
DocumentAttachmentDetails.OpenForRecRef(RecRef);
DocumentAttachmentDetails.RunModal();
end;
Assuming single field Primary Key
[EventSubscriber(ObjectType::Table, Database::"Document Attachment", 'OnAfterInitFieldsFromRecRef', '', true, true)]
local procedure DocumentAttachment_OnAfterInitFieldsFromRecRef(var DocumentAttachment: Record "Document Attachment"; var RecRef: RecordRef)
var
FieldRef: FieldRef;
RecNo: Code[20];
begin
case RecRef.Number of
DATABASE::"Your Table":
begin
FieldRef := RecRef.Field(10);
RecNo := FieldRef.Value;
DocumentAttachment.Validate("No.", RecNo);
end;
end;
end;
[EventSubscriber(ObjectType::Page, Page::"Document Attachment Details", 'OnAfterOpenForRecRef', '', true, true)]
local procedure DocumentAttachmentDetails_OnAfterOpenForRecRef(var RecRef: RecordRef; var DocumentAttachment: Record "Document Attachment"; var FlowFieldsEditable: Boolean)
var
FieldRef: FieldRef;
RecNo: Code[20];
begin
case RecRef.Number of
DATABASE::"Your Table":
begin
FieldRef := RecRef.Field(10);
RecNo := FieldRef.Value;
DocumentAttachment.SetRange("No.", RecNo);
FlowFieldsEditable := true;
end;
end;
end;
The codeunit has an event subscriber to the page and uses a case statement to determine what to do with a specific table. You merely need to add extra tables to the case statement of the same event subscriber procedure.
André Arnaud de Cal... 291,359 Super User 2024 Season 2
Martin Dráb 230,370 Most Valuable Professional
nmaenpaa 101,156