Criar um XMLport usando trechos no Visual Studio Code
Para criar XMLport no Visual Studio Code, use o trecho txmlport. Ele irá gerar uma estrutura de modelo que você poderá modificar para adequar às suas necessidades.
Um XMLport contém duas seções chamadas schema e requestpage. Na seção esquema, você pode definir a estrutura do XMLport. Você pode usar textelement, tableelement, fieldelement ou fieldattribute para definir os nós. Na seção requestpage, você pode definir o layout e as ações para a página que será exibida para o usuário quando um XMLport for executado. Você pode usar a mesma definição de layout que uma página de cartão.
Trabalhar com o formato XML
O exemplo de código a seguir fornece informações sobre como você pode trabalhar com o formato XML usando o Visual Studio Code e a linguagem de programação AL.
xmlport 50100 MyXmlport
{
Caption = 'Export Contacts to XML';
Direction = Export;
Format = Xml;
UseRequestPage = false;
DefaultFieldsValidation = true;
schema
{
textelement(Contacts)
{
XmlName = 'Contacts';
tableelement(Contact; Contact)
{
RequestFilterFields = "No.";
XmlName = 'Contact';
fieldattribute(No; Contact."No.")
{
}
fieldattribute(ExternalID; Contact."External ID")
{
}
fieldelement(Name; Contact.Name)
{
}
fieldelement("E-Mail"; Contact."E-Mail")
{
}
fieldelement(HomePage; Contact."Home Page")
{
}
textelement(Company)
{
XmlName = 'Company';
fieldattribute(CompanyNo; Contact."Company No.")
{
}
fieldelement(CompanyName; Contact."Company Name")
{
}
}
}
}
}
requestpage
{
layout
{
area(content)
{
}
}
actions
{
area(processing)
{
}
}
}
}
Trabalhar com o formato de texto fixo
Ao configurar o XMLport para usar o formato FixedText, verifique se você especificou a propriedade Width de cada nó no XMLport. Veja um exemplo abaixo de como concluir essa ação.
xmlport 50100 MyXmlport
{
Caption = 'Export Contacts to Fixed Text';
Direction = Export;
Format = FixedText;
TextEncoding = UTF8;
UseRequestPage = false;
schema
{
textelement(Contacts)
{
tableelement(Contact; Contact)
{
RequestFilterFields = "No.";
fieldelement(No; Contact."No.")
{
Width = 10;
}
fieldelement(ExternalID; Contact."External ID")
{
Width = 10;
}
fieldelement(Name; Contact.Name)
{
Width = 20;
}
fieldelement("E-Mail"; Contact."E-Mail")
{
Width = 50;
}
fieldelement(HomePage; Contact."Home Page")
{
Width = 50;
}
fieldelement(CompanyNo; Contact."Company No.")
{
Width = 10;
}
fieldelement(CompanyName; Contact."Company Name")
{
Width = 20;
}
}
}
}
}
Trabalhar com o formato de texto variável
Ao configurar o XMLport para usar o formato VariableText, você pode usar o FieldSeparator para especificar a cadeia de caracteres usada para separar campos. O valor padrão é uma vírgula (,).
<None>: nenhum separador de campo
<NewLine>: combinação de caracteres CR e LF
<CR/LF>: primeiro um CR e depois um LF
<CR>: valor ASCII 13
<LF>: valor ASCII 10
<Tab>: use uma guia para separar os campos
Outras strings: a cadeia de caracteres literal inserida
xmlport 50100 MyXmlport
{
Caption = 'Export Contacts to XML';
Direction = Export;
Format = VariableText;
FieldSeparator = ',';
TextEncoding = UTF8;
...
}
A propriedade RecordSeparator é usada para indicar o que acontece no fim de um registro. Ela tem os mesmos valores que a FieldSeparator. O valor padrão é <NewLine>.
xmlport 50100 MyXmlport
{
Caption = 'Export Contacts to XML';
Direction = Export;
Format = VariableText;
FieldSeparator = ',';
RecordSeparator = '<NewLine>';
TextEncoding = UTF8;
...
}
A FieldDelimiter é usada para definir a cadeia de caracteres usada para delimitar um campo.
xmlport 50100 MyXmlport
{
Caption = 'Export Contacts to XML';
Direction = Export;
Format = VariableText;
FieldSeparator = ',';
FieldDelimiter = '"';
TextEncoding = UTF8;
...
}
Se você obter dados de diferentes tabelas no Business Central e quiser usá-los em um XMLport, utilize o campo TableSeparator para obter diferentes conjuntos de nós.
Um exemplo típico de fontes de dados diferentes em um XMLport é quando você quer importar ou exportar um arquivo de texto com cabeçalho. Você pode usar a tabela Inteiros para criar um cabeçalho e, então, utilizar a propriedade TableSeparator para separar os dois elementos da tabela. A função OnBeforePassVariable é usada para obter a legenda de um campo, e você pode usar essa legenda como o cabeçalho no documento de texto.
xmlport 5050 "Export Contact"
{
Caption = 'Export Contact';
Direction = Export;
Format = VariableText;
TableSeparator = '<NewLine>';
TextEncoding = UTF8;
UseRequestPage = false;
schema
{
textelement(Root)
{
tableelement(Integer; Integer)
{
XmlName = 'ContactHeader';
SourceTableView = sorting(Number) where(Number = const(1));
textelement(ContNoTitle)
{
trigger OnBeforePassVariable()
begin
ContNoTitle := Contact.FieldCaption("No.");
end;
}
textelement(ContNameTitle)
{
trigger OnBeforePassVariable()
begin
ContNameTitle := Contact.FieldCaption(Name);
end;
}
textelement("ContE-MailTitle")
{
trigger OnBeforePassVariable()
begin
"ContE-MailTitle" := Contact.FieldCaption("E-Mail");
end;
}
}
tableelement(Contact; Contact)
{
RequestFilterFields = "No.";
XmlName = 'Contact';
fieldelement(No; Contact."No.")
{
}
fieldelement(Name; Contact.Name)
{
}
fieldelement("E-Mail"; Contact."E-Mail")
{
}
}
}
}
}