Ampliación de páginas con Document Central
Document Central puede integrarse en páginas existentes de Business Central ampliándolas con la Factbox de Document Central y el grupo de acciones Document Central en la barra de acciones. De este modo, todas las funciones clave —como la gestión y el archivo de documentos— permanecen disponibles, incluso cuando la Factbox está oculta debido a personalizaciones, configuraciones de rol o limitaciones de espacio en pantalla. La siguiente documentación muestra cómo implementar estas ampliaciones mediante una extensión de página.
Existen dos formas de hacerlo:
- En el caso de una página propia, puede agregar el código directamente a la página.
- En otras páginas, puede crear una extensión de página que ejecute el código.
Los siguientes requisitos deben cumplirse:
- El módulo Document Central debe estar licenciado.
- CORE debe estar disponible como referencia en la extensión.
- Document Central debe estar presente como referencia en la extensión.
Código para la extensión de una página de Business Central con la Document Central DropZone FB y el grupo de acciones Document Central en la barra de acciones:
Tarjeta
Mostrar código
| AL |
|---|
| pageextension 5492919 "SIM_DMS PostedSalesInvoiceExt" extends "Posted Sales Invoice" //132
{
layout
{
addfirst(FactBoxes)
{
part(SIM_DMSDropZoneFB; "SIM_DMS DropZone FB")
{
ApplicationArea = All;
}
}
}
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")
{
action("SIM_DMS ConfigurationWizard")
{
ApplicationArea = All;
Caption = 'Configuration Wizard';
Ellipsis = true;
Image = Setup;
ToolTip = 'This button opens the configuration wizard which will guide you through the process of creating a setup for 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 = 'This button opens the document overview.';
trigger OnAction()
begin
if not GlobalAllowViewBoolean then
exit;
GlobalPageSIMDMSDropZoneFB.ViewDocuments(GlobalCurrRecordRef);
end;
}
action("SIM_DMS ArchiveVersionStatus")
{
ApplicationArea = All;
Caption = 'Archive Queue';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = WorkCenterLoad;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'This button opens the overview of the archive prints. This page can be used to monitor the archive printouts.';
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentVersions(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Configuration")
{
ApplicationArea = All;
Caption = 'Configuration';
ToolTip = 'This button opens the mapping configuration page. The settings for the mapping can be made here.';
Image = Setup;
Visible = GlobalDMSFactBoxConfigButtonVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigurationAction(GlobalMappingCode, GlobalCurrPageIdInteger);
end;
}
action("SIM_DMS RelatedDocument")
{
ApplicationArea = All;
Caption = 'Relation Management';
ToolTip = 'This button displays all records related to this record.';
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 = 'This button will synchronize the documents with the SharePoint or Azure Blob Storage.';
trigger OnAction()
var
LocalRecordSIMCORESetup: Record "SIM_CORE Setup";
begin
GlobalCodeunitSIMDMSFunctions.SyncDocumentsAction('UPDATE_DATAGRID', LocalRecordSIMCORESetup, GlobalRecordSIMDMSModuleSetup, GlobalRecordSIMDMSUserSetup, GlobalRecordSIMDMSMappingHeader, GlobalRecordSIMDMSDocumentLibrary, GlobalCurrRecordRef);
end;
}
action("SIM_DMS BC Standard Migration")
{
ApplicationArea = All;
Caption = 'Migrate From BC';
Image = Import;
ToolTip = 'This action 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 = 'This action allows users to quickly drop documents without having to open 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 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,
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;
GlobalIsSharePointBoolean: Boolean;
GlobalIsAzureBlobStorageBoolean: Boolean;
GlobalAllowViewBoolean: Boolean;
}
|
Lista
Mostrar código
| AL |
|---|
| pageextension 5492925 "SIM_DMS PostedSalesInvoicesExt" extends "Posted Sales Invoices" //143
{
layout
{
addfirst(FactBoxes)
{
part(SIM_DMSDropZoneFB; "SIM_DMS DropZone FB")
{
ApplicationArea = All;
}
}
}
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")
{
action("SIM_DMS ConfigurationWizard")
{
ApplicationArea = All;
Caption = 'Configuration Wizard';
Ellipsis = true;
Image = Setup;
ToolTip = 'This button opens the configuration wizard which will guide you through the process of creating a setup for 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 = 'This button opens the document overview.';
trigger OnAction()
begin
if not GlobalAllowViewBoolean then
exit;
GlobalPageSIMDMSDropZoneFB.ViewDocuments(GlobalCurrRecordRef);
end;
}
action("SIM_DMS ArchiveVersionStatus")
{
ApplicationArea = All;
Caption = 'Archive Queue';
Ellipsis = false;
Enabled = GlobalDMSFactBoxButtonsVisBoolean;
Image = WorkCenterLoad;
Visible = GlobalIsUserRegisteredBoolean;
ToolTip = 'This button opens the overview of the archive prints. This page can be used to monitor the archive printouts.';
trigger OnAction()
begin
GlobalPageSIMDMSDropZoneFB.ViewDocumentVersions(GlobalCurrRecordRef);
end;
}
action("SIM_DMS Configuration")
{
ApplicationArea = All;
Caption = 'Configuration';
ToolTip = 'This button opens the mapping configuration page. The settings for the mapping can be made here.';
Image = Setup;
Visible = GlobalDMSFactBoxConfigButtonVisBoolean;
trigger OnAction()
begin
GlobalCodeunitSIMDMSFunctions.ConfigurationAction(GlobalMappingCode, GlobalCurrPageIdInteger);
end;
}
action("SIM_DMS RelatedDocument")
{
ApplicationArea = All;
Caption = 'Relation Management';
ToolTip = 'This button displays all records related to this record.';
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 = 'This button will synchronize the documents with the SharePoint or Azure Blob Storage.';
trigger OnAction()
var
LocalRecordSIMCORESetup: Record "SIM_CORE Setup";
begin
GlobalCodeunitSIMDMSFunctions.SyncDocumentsAction('UPDATE_DATAGRID', LocalRecordSIMCORESetup, GlobalRecordSIMDMSModuleSetup, GlobalRecordSIMDMSUserSetup, GlobalRecordSIMDMSMappingHeader, GlobalRecordSIMDMSDocumentLibrary, GlobalCurrRecordRef);
end;
}
action("SIM_DMS BC Standard Migration")
{
ApplicationArea = All;
Caption = 'Migrate From BC';
Image = Import;
ToolTip = 'This action 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 = 'This action allows users to quickly drop documents without having to open 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 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,
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;
GlobalIsSharePointBoolean: Boolean;
GlobalIsAzureBlobStorageBoolean: Boolean;
GlobalAllowViewBoolean: Boolean;
}
|
Este código agrega la Factbox de Document Central a la página, junto con el grupo de acciones Document Central, asegurando que todas las funciones de Document Central estén disponibles. Envía la referencia del registro seleccionado a Document Central, lo que permite archivar documentos para los registros deseados cuando se ha configurado una biblioteca de documentos y un mapeo para la tabla.
Info
- La Factbox de código de barras se ha movido a la Document Inbound App. Por favor, dirígete al área correspondiente en la documentación para ver la nueva integración.