Risorse XML di Configurazione¶
In questa guida vedremo come configurare e utilizzare i file XML per la creazione automatica di menu, tabelle utente (UDT), campi utente (UDF), oggetti definiti dall'utente (UDO) e query cross-database (HANA/SQL Server) tramite il RibesSAPSDKFramework.
Come aggiungere file di risorse in Visual Studio¶
Per utilizzare i file XML all'interno del progetto dell'Add-on, segui questi passaggi:
- Fai clic con il tasto destro sul progetto nel Solution Explorer → Add → New Item → Resource File
- Apri il file appena creato e, in alto a sinistra, cambia il tipo da "Strings" a "File"
- Rinomina il file di risorse in
Assets(o un altro nome appropriato) - Crea una cartella nel tuo progetto dedicata ai file XML (es.
Resources) - Posiziona i tuoi file XML in questa cartella
- Trascina i file XML dalla cartella direttamente all'interno della finestra dell'editor del Resource File appena creato.
Nota
Assicurati che i file XML vengano inclusi nell'output della build se vengono caricati a runtime dal file system (es. impostando Copy to Output Directory a Copy if newer).
XML Menu Configuration¶
Il framework permette di creare le voci di menu in SAP Business One definendo la struttura all'interno di un file XML (gestito dalla classe GenericBuilder).
Albero dei Tag¶
Gestione degli Eventi
Gli attributi loadclass e callback nel tag <item> consentono di collegare automaticamente la voce di menu a un metodo C#. loadclass è il nome completo della classe e callback è il nome del metodo da eseguire al clic.
Esempio (Menu)¶
<?xml version="1.0" encoding="utf-8"?>
<Application>
<Menus>
<menu id="RS_DDN_FLD" description="Ribes Solutions" parent="43525">
<menu id="RS_CNF_FLD" description="Configurazioni">
<item id="RS_INIT" description="Inizializzazione" loadclass="MyAddon.MyClass" callback="RunInitializations" />
</menu>
</menu>
</Menus>
</Application>
XML User Defined (UDT/UDF/UDO)¶
La creazione delle strutture dati personalizzate (Tabelle, Campi e Oggetti) viene gestita dalla classe UserDefinedBuilder che interpreta un file XML specifico.
Albero dei Tag¶
Ciclo di Vita dei Campi Utente: Versione Assembly e Riavvio del Client SAP
Quando si creano o modificano campi utente (UDF) e tabelle (UDT), occorre prestare particolare attenzione a due aspetti fondamentali del framework e del client di SAP:
-
Aggiornamento Versione Assembly (
RunInitialization):- Il framework memorizza la versione dell'Add-on nella tabella database
@RS_INFO. - All'avvio dell'Add-on, il framework esegue
creationTableFromXML()esclusivamente se la versione dell'Add-on è diversa da quella presente a database (o se è la prima installazione). -
Quando aggiungi un nuovo campo o una nuova tabella all'XML, è indispensabile incrementare la versione dell'Add-on nel file
Properties/AssemblyInfo.cs(es. passando da1.0.0.0a1.0.0.1).In caso contrario, l'inizializzazione verrà saltata silenziosamente e i nuovi campi non saranno creati.
- Il framework memorizza la versione dell'Add-on nella tabella database
-
Riavvio del Client di SAP Business One (Cache dei Metadati): Il client grafico di SAP Business One memorizza in cache locale la struttura dei campi utente caricata all'avvio dell'applicazione.
Anche se l'Add-on crea con successo l'UDF a database tramite la DI API, il campo non sarà visibile nella barra laterale (
Ctrl + Shift + U) o nei Form finché non si riavvia il client di SAP Business One. -
Regole sui Nomi:
- Nome Tecnico (
<Name>): Massimo 18 caratteri, nessuno spazio o carattere speciale (es.RS_FieldName). - Modifica tipo di campi già esistenti: SAP B1 non consente di modificare il tipo di dato di un UDF già creato a database. Se è necessario cambiarne il tipo in fase di sviluppo, occorre prima rimuoverlo manualmente da SAP (Strumenti → Strumenti di personalizzazione → Tabelle definite dall'utente - Gestione) e poi rilanciare l'Add-on con la nuova definizione XML.
- Nome Tecnico (
Esempio (UDT e UDF)¶
<?xml version="1.0" encoding="utf-8"?>
<UDS>
<UDTS>
<UDT>
<Name>@RS_MODULES</Name>
<Description>RibesSolutions Modules</Description>
<Type>No_Object</Type>
<UDFS>
<UDF>
<Name>Enabled</Name>
<Description>Abilitato</Description>
<Type>Alpha</Type>
<SubType>None</SubType>
<EditSize>1</EditSize>
<Size>1</Size>
<ValidValues>
<ValidValue>
<Code>Y</Code>
<Description>Si</Description>
</ValidValue>
<ValidValue>
<Code>N</Code>
<Description>No</Description>
</ValidValue>
</ValidValues>
<DefaultValue>Y</DefaultValue>
</UDF>
</UDFS>
</UDT>
</UDTS>
</UDS>
XML Queries (dual-database)¶
Per supportare contemporaneamente ambienti SAP HANA e Microsoft SQL Server, le query SQL possono essere definite in un file XML centralizzato, in modo che l'Add-on esegua automaticamente la sintassi corretta a seconda del database connesso.
Albero dei Tag¶
Uso dei parametri
Le query possono contenere segnaposto come {0}, {1} ecc. Questi verranno sostituiti a runtime utilizzando un formato stringa String.Format() in C#.
Esempio (Queries)¶
<?xml version="1.0" encoding="utf-8"?>
<Queries>
<Text name="userTableExists">
<HANA><![CDATA[select count(*) from "OUTB" where "TableName" = '{0}']]></HANA>
<MSSQL><![CDATA[select count(*) from OUTB where TableName = '{0}']]></MSSQL>
</Text>
<Text name="InsertADDONInfo">
<HANA><![CDATA[INSERT INTO "@RS_INFO" ("Code","Name","U_Data") VALUES('{0}','{1}','{2}')]]></HANA>
<MSSQL><![CDATA[INSERT INTO [@RS_INFO] ([Code],[Name],[U_Data]) VALUES('{0}','{1}','{2}')]]></MSSQL>
</Text>
</Queries>