Classi Utility
Il Framework Ribes mette a disposizione un ricco set di classi helper all'interno del namespace RibesSAPFramework.Utils.
Queste classi semplificano notevolmente le operazioni comuni di SAP Business One, nascondendo la complessità delle API native (sia DI API che UI API) e offrendo metodi sicuri e pronti all'uso.
1. SAPUtils (Core SAP Operations)
Gestisce la creazione delle strutture dati (UDT, UDF, UDO) e operazioni base sull'interfaccia (es. Menu).
| Metodo |
Descrizione |
startTransaction() / endTransaction() |
Gestione delle transazioni DI API. |
creaMenu() / rimuoviMenu() |
Crea o rimuove voci di menu nativi in SAP B1. |
createTB() |
Crea una User Defined Table (UDT). |
createSingleUserField() |
Crea uno User Defined Field (UDF) su tabelle standard o UDT. |
createUDO() |
Definisce uno User Defined Object completo (Master Data o Document). |
checkIfUDTExists() / checkIfUDOExists() |
Controlla la pre-esistenza di tabelle o UDO. |
Fornisce metodi helper per gestire le Form e la UI.
| Metodo |
Descrizione |
LoadFromXML() |
Carica una finestra partendo da un file .srf o .xml. |
createPopUp() / writeTextPopUp() |
Crea una finestra modale temporanea (utile per messaggi di attesa/caricamento). |
editTextToCombo() |
Converte (visivamente) un EditText in un ComboBox a runtime. |
dinamicEditText() |
Crea controlli EditText dinamicamente sulla form. |
Esempio: PopUp di Attesa
FormUtils.createPopUp();
FormUtils.writeTextPopUp("Elaborazione in corso...", 1, 100);
// ... elaborazione ...
FormUtils.closePopUp();
3. MatrixUtils
Semplifica la lettura e scrittura dei valori all'interno delle griglie (SAPbouiCOM.Matrix). Risolve i classici problemi di formattazione nativi.
| Metodo |
Descrizione |
SetStringValue() / SetDecimalValue() |
Imposta un valore in una cella gestendo automaticamente eccezioni e UI focus. |
SetComboBoxValue() / SetCheckBoxValue() |
Imposta i valori per celle di tipo Combo o CheckBox. |
GetDecimalValue() |
Estrae il valore decimale da una cella, convertendolo correttamente. |
GetUniqueValuesFromXml() |
Estrae valori univoci leggendo l'XML di una matrice. |
Esempio: Lettura/Scrittura Matrice
// Imposta un valore decimale in riga 1, colonna "Prezzo"
MatrixUtils.SetDecimalValue(oMatrix, 1, "Prezzo", 150.50);
// Legge il valore decimale
double prezzo = MatrixUtils.GetDecimalValue(oMatrix, 1, "Prezzo");
4. DialogUtils
Fornisce wrapper sicuri (STA Thread) per invocare le finestre di dialogo standard di Windows all'interno di B1.
| Metodo |
Descrizione |
InputBox() |
Mostra un popup di input testo (stile VBA InputBox). |
STAShowDialog(FileDialog) |
Mostra un OpenFileDialog in modo thread-safe. |
STAShowDialog(FolderBrowserDialog) |
Mostra un selettore di cartelle thread-safe. |
Esempio: Chiedere un file all'utente
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "Text files (*.txt)|*.txt";
if (DialogUtils.STAShowDialog(fd) == DialogResult.OK)
{
string percorso = fd.FileName;
}
5. DateUtils
Gestisce le conversioni di date tra i formati stringa di SAP B1 (spesso yyyyMMdd) e il tipo DateTime del C#. Considera anche i separatori impostati a livello di Server SAP.
| Metodo |
Descrizione |
GetShortDate(string) |
Converte una stringa yyyyMMdd in DateTime. |
GetyyyyMMddDateFormated(DateTime) |
Converte un DateTime in stringa yyyyMMdd. |
GetDateByServerFormat() |
Legge una data stringa considerando le impostazioni server. |
GetDateInServerFormat() |
Genera una stringa data formattata secondo il setup server di B1. |
Esempio:
// Da B1 a C#
DateTime dataDoc = DateUtils.GetShortDate("20231025");
// Da C# a B1 (pronto per query o inserimenti API)
string stringaData = DateUtils.GetyyyyMMddDateFormated(DateTime.Now);
6. DecimalUtils
Risolve il noto problema dei separatori decimali in SAP B1 (virgola vs punto) tra Client e Server.
| Metodo |
Descrizione |
ParseFromStringToDouble() |
Converte una stringa SAP in un double C#. |
ParseFromDoubleToStringClient() |
Converte un double in stringa adatta alla UI di B1. |
ParseFromDoubleToStringStandard() |
Converte in formato standard (en-us). |
Permette la creazione e l'assegnazione via codice delle Ricerche Formattate (FMS - Formatted Searches).
| Metodo |
Descrizione |
CreateUserQuery() |
Crea o aggiorna una Query Utente nel Query Manager. |
LinkUserQuery() |
Associa una query a un campo di una form (crea il link FMS). |
LinkUserValues() |
Associa una FMS di tipo "Valori Validi". |
8. ItemsUtils
Utility per gli Item della UI (Combobox, ChooseFromList).
| Metodo |
Descrizione |
setValidValuesComboBox() |
Popola un ComboBox o una colonna Matrix eseguendo una Query. |
setMarketingDocAsValidValuesItem() |
Popola un Combo con i tipi di documento Marketing standard di B1. |
addChooseFromList() |
Definisce a runtime un oggetto ChooseFromList (CFL) su una Form, con condizioni multiple. |
9. StringUtils
| Metodo |
Descrizione |
GetFixDigitStringFormat() |
Genera stringhe a lunghezza fissa aggiungendo pad-caratteri (es. zeri iniziali). |
EncodeTo64() / DecodeFrom64() |
Codifica/Decodifica Base64. |
10. DataTableUtils
| Metodo |
Descrizione |
GetUniqueValues() |
Estrae valori univoci da una System.Data.DataTable. |
GetUniqueValuesFromXml() |
Estrae valori univoci dall'XML nativo della UI API DataTable. |
11. UserPermissions
| Metodo |
Descrizione |
addUserPermission() |
Crea un nuovo permesso custom nell'albero autorizzazioni di SAP B1. |
getUserPermission() |
Verifica se l'utente ha permessi (Full, ReadOnly, None) per una specifica funzionalità. |
12. ReleaseComObjectUtils
| Metodo |
Descrizione |
ReleaseComObjectWithoutGcCollect() |
Rilascia un oggetto COM (es. Recordset) senza forzare il Garbage Collector. |
ReleaseComObjectWithGcCollect() |
Rilascia e forza GC.Collect(). Fondamentale in B1 per non esaurire la memoria. |
13. CommonUtils
| Metodo |
Descrizione |
getCurrentParentId() |
Identifica il processo padre SAP corretto (utile per finestre di dialogo modali in Addon). |
Encrypt() / Decrypt() |
Utility di crittografia standard (TripleDES). |
14. FieldDescription
| Metodo |
Descrizione |
GetValue() |
Tabella di lookup cache / traduzione descrizioni tramite tabella custom @RS_TRNSLT. |