Mercator 11.0 of later kan worden gebruikt om informatie weer te geven van de kolommen van de LinesEditor op de actieve regel in een uitdrukking. Dit betreft
- verkopen
- aankopen
- transfers tussen depots
- inventarissen
Om dit te doen, moet de expressie de methode CurrentRowCellValue gebruiken, die beschikbaar is in de schermen van het type
- BillingForm
- TransferForm
- InventoryForm
Deze methode vereist een stringparameter om de kolom in de LinesEditor te identificeren via een van deze eigenschappen:
- Source
- SourceReadOnly
- Formula
Het is dus noodzakelijk dat deze kolommen in de LinesEditor bestaan. De methode CurrentRowCellValue neemt gewoon de waarde die momenteel wordt weergegeven. Als dit systeem wordt geïmplementeerd vanwege een groot aantal kolommen dat de leesbaarheid van het scherm belemmert, is het mogelijk om de breedte van deze kolommen te verkleinen zodat ze onzichtbaar worden.
Deze methode retourneert altijd een tekenreeks, zelfs als de gebruikte kolom numeriek is. In dat geval wordt de numerieke waarde geformatteerd volgens de eigenschappen van de kolom.
Het is niet nodig om een of meer ID's op te geven in de eigenschap RefreshedBy. Mercator ververst deze expressie automatisch bij celwisselingen in de LinesEditor en bij het opnieuw berekenen van het scherm.
Er is geen limiet aan het aantal expressies dat de methode CurrentRowCellValue kan gebruiken.
Deze methode wordt heel vaak aangeroepen: het is daarom ten strengste af te raden om hem te gebruiken voor code die toegang heeft tot de database (xLookup, Zselect, ...)
Hieronder staat een voorbeeld van code voor een verkoopdocument, dat respectievelijk de volgende elementen bevat:
- 3 standaardkolommen : id_article, pu et q
- 1 kolom ReadOnly : DISPO.DISPO
- 1 kolom Formula : q * 2
- de sleutel 3 van het artikel, die niet overeenkomt met een kolom in de LinesEditor, maar wordt bepaald door
- de identificator van het artikel, gevonden door billingForm.CurrentRowCellValue("id_article")
- de collectie BillingEngine.StockRecords, waarin het gewenste artikel wordt gevonden via de hierboven bepaalde artikelidentificator
public static String Evaluate(MercatorUi.MovableControls.MovableExpression currentExpression)
{
// enter your customized code here
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentExpression.Form;
return "Article = " + billingForm.CurrentRowCellValue("id_article")
+ " | PU = " + billingForm.CurrentRowCellValue("pu")
+ " | Q = " + billingForm.CurrentRowCellValue("q")
+ " | Dispo = " + billingForm.CurrentRowCellValue("DISPO.DISPO")
+ " | Q * 2 = " + billingForm.CurrentRowCellValue("q * 2")
+ " | CLE = " + (billingForm.CurrentRowCellValue("id_article") != "" ? billingForm.BillingEngine.StockRecords[billingForm.CurrentRowCellValue("id_article")]?.S_CLE3 ?? "" : "");
}
De weergave van deze expressie ziet er als volgt uit:
