Функции

Эта инструкция позволяет создать новый метод — либо локальный (доступный только в том коде, где он объявлен), либо глобальный (если поместить его в Options/Global Functions).

Возвращаемое значение функции, как и в любом линейном коде, определяется её последней инструкцией (той, что стоит прямо перед end):

function InitB(initialValue : boolean) do
    if initialValue then
        "true"
    else
        "false"
    end
end;

var b := InitB(true);

Типы параметров

Можно объявлять параметры следующих типов:
text, number, date, datetime, time, timeinterval, appointment, boolean, html, color, icon, email, phone, location, file, user и any.

Имена таблиц в качестве типов параметров

Также можно объявить параметр, типом которого служит имя таблицы. В этом случае параметр используется как запись этой таблицы:

function total(record : Invoice) do
    record.'NET Total'
end;

total(first(select Invoice));

Работа с массивами в функциях

Передать массив в функцию напрямую нельзя. Зато для этого можно воспользоваться объектом JSON (any):

function myFunction(t : any) do
    for i in t.array do
        i
    end
end;

var myArray := [1, 3, 5, 6];
myFunction({
    array: myArray
});