4D View Pro: Vylepšení vlastních funkcí

Automaticky přeloženo z Deepl

Někdy můžete požadovat specializované výpočty obsahu sloupce nebo řádku, aniž byste věděli, kolik buněk bude ovlivněno.

V aplikaci 4D 20 R5 můžete nyní předat vlastnímu vzorci v rámci tabulkového vzorce více rozsahů buněk, například „A1:C10“, nebo objekt, například „OBJECT(„Jméno“,B2, „Příjmení“,C2)“, a načíst kolekci nebo objekt obsahující veškerý obsah buněk v metodě 4D.

Kolekce a objekt HDI 4DVP ve vlastních funkcích

Vlastní funkce jsou výkonnou funkcí programu 4D View Pro, která vám umožňuje rozšířit jeho funkčnost a provádět vlastní výpočty nebo operace přizpůsobené vašim specifickým potřebám. Nyní můžete jako parametry vlastních funkcí přijímat kolekce obsahující hodnoty z uživatelem zadaných rozsahů buněk.

Správa kolekcí

Ukázka vlastní funkce využívající kolekce zahrnuje výpočet průměru nenulových hodnot. Tento proces se skládá ze dvou základních kroků:

  • Vytvoření funkce určené k provedení programem 4D View Pro, která provede výpočet.
  • Zformulování objektu pro zadání možností vlastní funkce.

Pro tento příklad vytvoříme třídu s názvem CustomFunctionCreator.

Podívejme se, jak tento výpočet provést!

Vytvoření vlastní funkce

Nejprve vytvoříme funkci volanou programem 4D View Pro. Tato funkce s názvem _averageNonZeroValues() přijímá jeden parametr kolekce a je definována takto:

Function _averageNonZeroValues($values : Collection) : Real
    // Average of the non zero and non null values in the range
	
    // Sum of all the collection values
    var $total:=$values.flat().sum()
    // Calculates the number of cells containing a value other than 0 or NUll
    var $NonZeroValueNumber : Integer:=$values.flat().count()-$values.flat().countValues(0)
	
    // Returns the calculation result to be displayed in the cell
    return $NonZeroValueNumber>0 ? $total/$NonZeroValueNumber : 0

Povolte vlastní funkci v aplikaci 4D View Pro.

Nyní, když jsme vytvořili funkci _averageNonZeroValues(), je naším cílem povolit její použití jako vzorce v aplikaci 4D View Pro. K tomu použijeme příkaz VP SET CUSTOM FUNCTIONS, který potřebuje objekt zahrnující základní údaje potřebné pro vytvoření vlastní funkce v programu 4D View Pro. Pro komplexní pochopení tohoto procesu můžete nahlédnout do příručky 4D View Pro: V tomto článku najdete ucelený přehled o tom, jak používat vzorce 4D View v tabulkovém procesoru.

Implementujeme funkci averageNonZeroValues() pro konstrukci objektu, v němž se nacházejí všechny parametry potřebné pro příkaz VP SET CUSTOM FUNCTIONS:

Function averageNonZeroValues()->$customFunction : Object
    var $this : Object
	
    $customFunction:={}
    $this:=This // Capture This for the formula
	
    // formula that will be called when the custom function is used in the spreadsheet
    $customFunction.formula:=Formula($this._averageNonZeroValues($1))
    // If a parameter is of collection type, the declaration of the custom function parameters is mandatory
    $customFunction.parameters:=[{name: "Values"; type: Is collection}]
    // Summary of the custom function using in the autocomplete popup 
    $customFunction.summary:="Returns the average of non zero values"
    // Expected number of parameters
    $customFunction.minParams:=1
    $customFunction.maxParams:=1

Správa objektů

SpreadJS nabízí vzorec OBJECT určený k vytváření objektů, který umožňuje uživatelům konsolidovat obsah z více buněk do jednotného objektu. Ukázka vlastní funkce využívající objekt spočívá v definování, která část objektu byla změněna. Stejně jako u výše uvedených kolekcí existují 2 základní kroky tohoto procesu:

  • Vytvoření funkce určené k provedení programem 4D View Pro, která provede výpočet.
  • Vytvoření objektu pro zadání možností vlastní funkce.

Pro tento příklad doplníme třídu CustomFunctionCreator .

Vytvoření vlastní funkce

Nejprve vytvoříme funkci volanou programem 4D View Pro. Tato funkce s názvem _modifiedProperties() přijímá jeden parametr objektu a je definována takto:

Function _modifiedProperties($object: Object) : Text
    // Comparison between the properties in the Form.people object and the properties in the spreadsheet
    var $myObject : Object:=$object.value

     // Search the object attributes modified between the people data and the data in the spreadsheet
     For each ($property; $myObject)
          // comparison between the object returned by the spreadsheet and the Form.people object
          If ($myObject[$property]#Form.people[$property])
               return "Data modified."
          End if 
     End for each 
     return ""

Povolení vlastní funkce v aplikaci 4D View Pro

Stejně jako v případě příkladu averageNonZeroValues() musíme implementovat funkci modifiedProperties(), která vytvoří objektové pouzdro se všemi parametry potřebnými pro příkaz VP SET CUSTOM FUNCTIONS:

Function modifiedProperties()->$customFunction : Object
    var $this : Object
	
    $customFunction:={}
    $this:=This // Capture This for the formula
	
    // formula that will be called when the custom function is used in the spreadsheet
    $customFunction.formula:=Formula($this._modifiedProperties($1))
    // If a parameter is of collection type, the declaration of the custom function parameters is mandatory
    $customFunction.parameters:=[{name: "Values"; type: Is object}]
    // Summary of the custom function using in the autocomplete popup 
    $customFunction.summary:="Returns a message when the object is modified by the user"
    // Expected number of parameters
    $customFunction.minParams:=1
    $customFunction.maxParams:=1

Deklarace vlastní funkce

Posledním krokem je zavolání VP SET CUSTOM FUNCTIONS na událost„on Load“ formuláře pomocí funkcí averageNonZeroValues() a modifiedProperties():

Case of 
		
  : (FORM Event.code=On Load)
    var $customFunctions:={}

    // Declaration of authorized custom functions in the 4D View Pro area
    var $creator:=cs.CustomFunctionsCreator.new()
    $customFunctions.MY_AVERAGENONZEROVALUES:=$creator.averageNonZeroValues()
    $customFunctions.MY_MODIFICATIONS:=$creator.modifiedProperties()

    VP SET CUSTOM FUNCTIONS("ViewProArea"; $customFunctions)
End case 

Nyní máte 2 nové funkce použitelné v oblasti 4D View Pro:

  • „MY_AVERAGENONZEROVALUES:

  • „MY_MODIFICATIONS“:

blank

Závěrem lze říci, že používání vlastních funkcí v aplikaci 4D View Pro povyšuje funkčnost tabulkového procesoru na novou úroveň a umožňuje provádět výpočty a operace na míru. Další informace naleznete v naší dokumentaci.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se připojil k týmu 4D Program v listopadu 2016. Jako Product Owner má na starosti psaní uživatelských příběhů, které následně převádí do funkčních specifikací. Jeho úkolem je také zajistit, aby dodaná implementace funkcí splňovala potřeby zákazníků.Po získání bakalářského titulu v oboru informatiky na CNAM nastoupil Fabrice do malé softwarové vydavatelské společnosti jako vývojář Windev. Poté pracoval pro různé společnosti v oblasti průmyslu a obchodu jako vývojář aplikací Windev a webových aplikací a také jako technický poradce pro nové funkce.