Extension des pages avec Document Central
Document Central peut être intégré dans des pages existantes de Business Central en les étendant avec la Factbox Document Central ainsi que le groupe d'actions Document Central dans la barre d'actions. Cela garantit que toutes les fonctionnalités principales — telles que la gestion et l'archivage des documents — restent disponibles, même si la Factbox est masquée en raison de personnalisations, de paramètres de rôle ou de limitations d'espace à l'écran. La documentation suivante montre comment mettre en œuvre ces extensions à l'aide d'une extension de page.
Il existe deux manières de procéder :
- Dans le cas d'une page propre, vous pouvez ajouter le code directement à la page.
- Pour d'autres pages, vous pouvez créer une extension de page qui exécutera le code.
Les exigences suivantes doivent être remplies :
- Le module Document Central doit être sous licence.
- CORE doit être disponible en tant que référence dans l'extension.
- Document Central doit être présent en tant que référence dans l'extension.
Code pour l'extension d'une page Business Central avec la Document Central DropZone FB et le groupe d'actions Document Central dans la barre d'actions :
Carte
Afficher le code
| AL |
|---|
| pageextension 5492919 "SIM_DMS PostedSalesInvoiceExt" extends "Posted Sales Invoice" //132
{
layout
{
addfirst(FactBoxes)
{
part(SIM_DMSDropZoneFB; "SIM_DMS DropZone FB")
{
ApplicationArea = All;
Visible = GlobalModuleSetupActiveBoolean;
}
}
}
actions
{
addafter(Category_Category20)
{
group("SIM_DMS Dropzone Actions")
{
Caption = 'Document Central';
ShowAs = Standard;
Image = Document;
actionref("SIM_DMS Configuration Wizard Promoted"; "SIM_DMS ConfigurationWizard")
{ }
actionref("SIM_DMS Archive Promoted"; "SIM_DMS Archive")
{ }
actionref("SIM_DMS Multi Quick Upload Promoted"; "SIM_DMS Multi Quick Upload")
{ }
actionref("SIM_DMS ArchiveVersionStatus Promoted"; "SIM_DMS ArchiveVersionStatus")
{ }
actionref("SIM_DMS Configuration Promoted"; "SIM_DMS Configuration")
{ }
actionref("SIM_DMS RelatedDocument Promoted"; "SIM_DMS RelatedDocument")
{ }
actionref("SIM_DMS btnUpdate Promoted"; "SIM_DMS btnUpdate")
{ }
actionref("SIM_DMS BC Standard Migration Promoted"; "SIM_DMS BC Standard Migration")
{ }
}
}
addafter("&Invoice")
{
group("SIM_DMS Dropzone FB Actions")
{
Visible = GlobalModuleSetupActiveBoolean;
action("SIM_DMS ConfigurationWizard")
{
ApplicationArea = All;
Caption = 'Configuration Wizard';
Ellipsis = true;
Image = Setup;
ToolTip = 'Opens the configuration wizard for setting up the factbox.';
Enabled = GlobalDMSWizardEnaBoolean;
Visible = GlobalDMSWizardVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigWizardAction(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Archive")
{
ApplicationArea = All;
Caption = 'Archive';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = Documents;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'Opens the document overview.';
trigger OnAction()
var
LocalContentTypeText: Text;
begin
if not GlobalAllowViewBoolean then
exit;
GlobalCodeunitSIMDMSFunctions.ViewDocuments(GlobalCurrRecordRef, LocalContentTypeText, GlobalRecordSIMDMSModuleSetup, GlobalMappingCode, GlobalCurrPageIdInteger, GlobalDeleteAccessControlBoolean, GlobalWriteAccessControlBoolean);
end;
}
action("SIM_DMS ArchiveVersionStatus")
{
ApplicationArea = All;
Caption = 'Archive Queue';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = WorkCenterLoad;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'Opens the archive printouts overview.';
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentVersions(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Configuration")
{
ApplicationArea = All;
Caption = 'Configuration';
ToolTip = 'Opens the mapping configuration page.';
Image = Setup;
Visible = GlobalDMSFactBoxConfigButtonVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigurationAction(GlobalMappingCode, GlobalCurrPageIdInteger);
end;
}
action("SIM_DMS RelatedDocument")
{
ApplicationArea = All;
Caption = 'Relation Management';
ToolTip = 'Displays all related records.';
Image = Links;
Visible = GlobalIsUserRegisteredBoolean and GlobalIsUserAdminBoolean;
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentRelations(GlobalCurrRecordRef);
end;
}
action("SIM_DMS btnUpdate")
{
ApplicationArea = All;
Visible = GlobalIsSharePointBoolean or GlobalIsAzureBlobStorageBoolean and GlobalIsUserRegisteredBoolean and GlobalIsUserAdminBoolean;
Caption = 'Sync Documents';
Image = Interaction;
ToolTip = 'Synchronizes documents with SharePoint or Azure Blob Storage.';
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.SyncDocumentsAction('UPDATE_DATAGRID', GlobalRecordSIMDMSModuleSetup, GlobalRecordSIMDMSUserSetup, GlobalRecordSIMDMSMappingHeader, GlobalRecordSIMDMSDocumentLibrary, GlobalCurrRecordRef);
end;
}
action("SIM_DMS BC Standard Migration")
{
ApplicationArea = All;
Caption = 'Migrate From BC';
Image = Import;
ToolTip = 'Opens the BC Attachment Migration Wizard for the current entry';
Visible = GlobalIsUserAdminBoolean;
Enabled = GlobalBCStandardRecordHasAttachmentsBoolean;
trigger OnAction()
var
LocalPageSIMDMSBCAttachWIZ: Page "SIM_DMS BC Attach WIZ";
begin
LocalPageSIMDMSBCAttachWIZ.SetValues(GlobalRecordSIMDMSDocumentLibrary, GlobalRecordSIMDMSMappingHeader, GlobalCurrRecordRef);
LocalPageSIMDMSBCAttachWIZ.RunModal()
end;
}
fileuploadaction("SIM_DMS Multi Quick Upload")
{
ApplicationArea = All;
Caption = 'Quick Upload';
ToolTip = 'Allows quick document upload without opening the archive.';
AllowedFileExtensions = '.*';
AllowMultipleFiles = true;
Image = CreateDocuments;
Enabled = GlobalWriteAccessControlBoolean;
trigger OnAction(Files: List of [FileUpload])
var
LocalJsonObject: JsonObject;
begin
LocalJsonObject := GlobalCodeunitSIMDMSMgt.FilesUploadAction(Files);
CurrPage.SIM_DMSDropZoneFB.Page.UploadFilesFromJsonData(Format(LocalJsonObject));
end;
}
}
}
}
trigger OnOpenPage()
var
LocalRecordSIMDMSModuleSetup: Record "SIM_DMS Module Setup";
begin
if not LocalRecordSIMDMSModuleSetup.Get() then
exit;
GlobalModuleSetupActiveBoolean := LocalRecordSIMDMSModuleSetup."Archive Status";
end;
trigger OnAfterGetCurrRecord()
begin
CurrPage.SIM_DMSDropZoneFB.Page.SetVariant(CurrPage.OBJECTID(FALSE), Rec, Rec."No.");
CurrPage.SIM_DMSDropZoneFB.Page.GetValues(
GlobalDMSWizardEnaBoolean,
GlobalDMSWizardVisBoolean,
GlobalDMSFactBoxButtonsVisBoolean,
GlobalIsUserRegisteredBoolean,
GlobalDMSFactBoxConfigButtonVisBoolean,
GlobalAllowViewBoolean,
GlobalCurrRecordRef,
GlobalDocumentCountIntegerText,
GlobalIsSharePointBoolean,
GlobalIsAzureBlobStorageBoolean,
GlobalCurrPageIdInteger,
GlobalIsUserAdminBoolean,
GlobalRecordSIMDMSDocumentLibrary,
GlobalRecordSIMDMSMappingHeader,
GlobalRecordSIMDMSUserSetup,
GlobalRecordSIMDMSModuleSetup,
GlobalMappingCode,
GlobalWriteAccessControlBoolean,
GlobalDeleteAccessControlBoolean,
GlobalBCStandardRecordHasAttachmentsBoolean
);
end;
var
GlobalRecordSIMDMSModuleSetup: Record "SIM_DMS Module Setup";
GlobalRecordSIMDMSUserSetup: Record "SIM_DMS User Setup";
GlobalRecordSIMDMSMappingHeader: Record "SIM_DMS Mapping Header";
GlobalRecordSIMDMSDocumentLibrary: Record "SIM_DMS Document Library";
GlobalCodeunitSIMDMSMgt: Codeunit "SIM_DMS Mgt.";
GlobalCodeunitSIMDMSFunctions: Codeunit "SIM_DMS Functions";
GlobalPageSIMDMSDropZoneFB: Page "SIM_DMS DropZone FB";
GlobalCurrRecordRef: RecordRef;
GlobalCurrPageIdInteger: Integer;
GlobalMappingCode: Code[20];
GlobalBCStandardRecordHasAttachmentsBoolean: Boolean;
GlobalDMSWizardEnaBoolean: Boolean;
GlobalDMSWizardVisBoolean: Boolean;
GlobalDMSFactBoxButtonsVisBoolean: Boolean;
GlobalDMSFactBoxConfigButtonVisBoolean: Boolean;
GlobalDocumentCountIntegerText: Text;
GlobalIsUserRegisteredBoolean: Boolean;
GlobalIsUserAdminBoolean: Boolean;
GlobalWriteAccessControlBoolean: Boolean;
GlobalDeleteAccessControlBoolean: Boolean;
GlobalIsSharePointBoolean: Boolean;
GlobalIsAzureBlobStorageBoolean: Boolean;
GlobalAllowViewBoolean: Boolean;
GlobalModuleSetupActiveBoolean: Boolean;
}
|
Liste
Afficher le code
| AL |
|---|
| pageextension 5492925 "SIM_DMS PostedSalesInvoicesExt" extends "Posted Sales Invoices" //143
{
layout
{
addfirst(FactBoxes)
{
part(SIM_DMSDropZoneFB; "SIM_DMS DropZone FB")
{
ApplicationArea = All;
Visible = GlobalModuleSetupActiveBoolean;
}
}
}
actions
{
addafter(Category_Category20)
{
group("SIM_DMS Dropzone Actions")
{
Caption = 'Document Central';
ShowAs = Standard;
Image = Document;
actionref("SIM_DMS Configuration Wizard Promoted"; "SIM_DMS ConfigurationWizard")
{ }
actionref("SIM_DMS Archive Promoted"; "SIM_DMS Archive")
{ }
actionref("SIM_DMS Multi Quick Upload Promoted"; "SIM_DMS Multi Quick Upload")
{ }
actionref("SIM_DMS ArchiveVersionStatus Promoted"; "SIM_DMS ArchiveVersionStatus")
{ }
actionref("SIM_DMS Configuration Promoted"; "SIM_DMS Configuration")
{ }
actionref("SIM_DMS RelatedDocument Promoted"; "SIM_DMS RelatedDocument")
{ }
actionref("SIM_DMS btnUpdate Promoted"; "SIM_DMS btnUpdate")
{ }
actionref("SIM_DMS BC Standard Migration Promoted"; "SIM_DMS BC Standard Migration")
{ }
}
}
addafter(Correct)
{
group("SIM_DMS Dropzone FB Actions")
{
Visible = GlobalModuleSetupActiveBoolean;
action("SIM_DMS ConfigurationWizard")
{
ApplicationArea = All;
Caption = 'Configuration Wizard';
Ellipsis = true;
Image = Setup;
ToolTip = 'Opens the configuration wizard for setting up the factbox.';
Enabled = GlobalDMSWizardEnaBoolean;
Visible = GlobalDMSWizardVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigWizardAction(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Archive")
{
ApplicationArea = All;
Caption = 'Archive';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = Documents;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'Opens the document overview.';
trigger OnAction()
var
LocalContentTypeText: Text;
begin
if not GlobalAllowViewBoolean then
exit;
GlobalCodeunitSIMDMSFunctions.ViewDocuments(GlobalCurrRecordRef, LocalContentTypeText, GlobalRecordSIMDMSModuleSetup, GlobalMappingCode, GlobalCurrPageIdInteger, GlobalDeleteAccessControlBoolean, GlobalWriteAccessControlBoolean);
end;
}
action("SIM_DMS ArchiveVersionStatus")
{
ApplicationArea = All;
Caption = 'Archive Queue';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = WorkCenterLoad;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'Opens the archive printouts overview.';
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentVersions(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Configuration")
{
ApplicationArea = All;
Caption = 'Configuration';
ToolTip = 'Opens the mapping configuration page.';
Image = Setup;
Visible = GlobalDMSFactBoxConfigButtonVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigurationAction(GlobalMappingCode, GlobalCurrPageIdInteger);
end;
}
action("SIM_DMS RelatedDocument")
{
ApplicationArea = All;
Caption = 'Relation Management';
ToolTip = 'Displays all related records.';
Image = Links;
Visible = GlobalIsUserRegisteredBoolean and GlobalIsUserAdminBoolean;
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentRelations(GlobalCurrRecordRef);
end;
}
action("SIM_DMS btnUpdate")
{
ApplicationArea = All;
Visible = GlobalIsSharePointBoolean or GlobalIsAzureBlobStorageBoolean and GlobalIsUserRegisteredBoolean and GlobalIsUserAdminBoolean;
Caption = 'Sync Documents';
Image = Interaction;
ToolTip = 'Synchronizes documents with SharePoint or Azure Blob Storage.';
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.SyncDocumentsAction('UPDATE_DATAGRID', GlobalRecordSIMDMSModuleSetup, GlobalRecordSIMDMSUserSetup, GlobalRecordSIMDMSMappingHeader, GlobalRecordSIMDMSDocumentLibrary, GlobalCurrRecordRef);
end;
}
action("SIM_DMS BC Standard Migration")
{
ApplicationArea = All;
Caption = 'Migrate From BC';
Image = Import;
ToolTip = 'Opens the BC Attachment Migration Wizard for the current entry';
Visible = GlobalIsUserAdminBoolean;
Enabled = GlobalBCStandardRecordHasAttachmentsBoolean;
trigger OnAction()
var
LocalPageSIMDMSBCAttachWIZ: Page "SIM_DMS BC Attach WIZ";
begin
LocalPageSIMDMSBCAttachWIZ.SetValues(GlobalRecordSIMDMSDocumentLibrary, GlobalRecordSIMDMSMappingHeader, GlobalCurrRecordRef);
LocalPageSIMDMSBCAttachWIZ.RunModal()
end;
}
fileuploadaction("SIM_DMS Multi Quick Upload")
{
ApplicationArea = All;
Caption = 'Quick Upload';
ToolTip = 'Allows quick document upload without opening the archive.';
AllowedFileExtensions = '.*';
AllowMultipleFiles = true;
Image = CreateDocuments;
Enabled = GlobalWriteAccessControlBoolean;
trigger OnAction(Files: List of [FileUpload])
var
LocalRecordSalesInvoiceHeader: Record "Sales Invoice Header";
LocalRecordRef: RecordRef;
LocalJsonObject: JsonObject;
begin
CurrPage.SetSelectionFilter(LocalRecordSalesInvoiceHeader);
LocalRecordRef.GetTable(LocalRecordSalesInvoiceHeader);
CurrPage.SIM_DMSDropZoneFB.Page.SetVariant(CurrPage.ObjectId(false), Rec, Rec."No.", LocalRecordRef);
LocalJsonObject := GlobalCodeunitSIMDMSMgt.FilesUploadAction(Files);
CurrPage.SIM_DMSDropZoneFB.Page.UploadFilesFromJsonData(Format(LocalJsonObject));
end;
}
}
}
}
trigger OnOpenPage()
var
LocalRecordSIMDMSModuleSetup: Record "SIM_DMS Module Setup";
begin
if not LocalRecordSIMDMSModuleSetup.Get() then
exit;
GlobalModuleSetupActiveBoolean := LocalRecordSIMDMSModuleSetup."Archive Status";
end;
trigger OnAfterGetCurrRecord()
var
LocalRecordSalesInvoiceHeader: Record "Sales Invoice Header";
begin
CurrPage.SetSelectionFilter(LocalRecordSalesInvoiceHeader);
GlobalCurrRecordRef.GetTable(LocalRecordSalesInvoiceHeader);
CurrPage.SIM_DMSDropZoneFB.Page.SetVariant(CurrPage.ObjectId(false), Rec, Rec."No.", GlobalCurrRecordRef);
CurrPage.SIM_DMSDropZoneFB.Page.GetValues(
GlobalDMSWizardEnaBoolean,
GlobalDMSWizardVisBoolean,
GlobalDMSFactBoxButtonsVisBoolean,
GlobalIsUserRegisteredBoolean,
GlobalDMSFactBoxConfigButtonVisBoolean,
GlobalAllowViewBoolean,
GlobalCurrRecordRef,
GlobalDocumentCountIntegerText,
GlobalIsSharePointBoolean,
GlobalIsAzureBlobStorageBoolean,
GlobalCurrPageIdInteger,
GlobalIsUserAdminBoolean,
GlobalRecordSIMDMSDocumentLibrary,
GlobalRecordSIMDMSMappingHeader,
GlobalRecordSIMDMSUserSetup,
GlobalRecordSIMDMSModuleSetup,
GlobalMappingCode,
GlobalWriteAccessControlBoolean,
GlobalDeleteAccessControlBoolean,
GlobalBCStandardRecordHasAttachmentsBoolean
);
end;
var
GlobalRecordSIMDMSModuleSetup: Record "SIM_DMS Module Setup";
GlobalRecordSIMDMSUserSetup: Record "SIM_DMS User Setup";
GlobalRecordSIMDMSMappingHeader: Record "SIM_DMS Mapping Header";
GlobalRecordSIMDMSDocumentLibrary: Record "SIM_DMS Document Library";
GlobalCodeunitSIMDMSMgt: Codeunit "SIM_DMS Mgt.";
GlobalCodeunitSIMDMSFunctions: Codeunit "SIM_DMS Functions";
GlobalPageSIMDMSDropZoneFB: Page "SIM_DMS DropZone FB";
GlobalCurrRecordRef: RecordRef;
GlobalCurrPageIdInteger: Integer;
GlobalMappingCode: Code[20];
GlobalBCStandardRecordHasAttachmentsBoolean: Boolean;
GlobalDMSWizardEnaBoolean: Boolean;
GlobalDMSWizardVisBoolean: Boolean;
GlobalDMSFactBoxButtonsVisBoolean: Boolean;
GlobalDMSFactBoxConfigButtonVisBoolean: Boolean;
GlobalDocumentCountIntegerText: Text;
GlobalIsUserRegisteredBoolean: Boolean;
GlobalIsUserAdminBoolean: Boolean;
GlobalWriteAccessControlBoolean: Boolean;
GlobalDeleteAccessControlBoolean: Boolean;
GlobalIsSharePointBoolean: Boolean;
GlobalIsAzureBlobStorageBoolean: Boolean;
GlobalAllowViewBoolean: Boolean;
GlobalModuleSetupActiveBoolean: Boolean;
}
|
Ce code ajoute la Factbox de Document Central à la page, ainsi que le groupe d'actions Document Central, garantissant que toutes les fonctionnalités de Document Central sont disponibles. Il envoie la référence de l'enregistrement sélectionné à Document Central, permettant l'archivage de documents pour les enregistrements souhaités lorsque une bibliothèque de documents et un mappage ont été configurés pour la table.
La Factbox de code-barres a été déplacée vers l'application Document Inbound. Veuillez vous rendre dans la section correspondante de la documentation pour voir la nouvelle intégration.