Difference between revisions of "GetModuleFunction"
1>Admin (Created page with "{{infobox function |name=GetModuleFunction |object=Функции общего назначения |caption=Системные функции |type=1 |status=2 |db=0 |exc...") |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 11:59, 1 April 2026
| GetModuleFunction (Системные функции) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция отдает объект компилированной функции, находящейся на требуемом уровне над текущей исполняемой функцией (этот объект, если найден, всегда включает текущую исполняемую функцию). В дальнейшем этот объект можно использовать для вызова функций по именам (см. ExecuteFunction), или экспортирования функции.
Синтаксис
GetModuleFunction(<Уровень родительской функции от текущей (INT)>=0):<Требуемая функция в виде объекта (COMPILEDFUNCTION)>
Аргументы
<Уровень родительской функции от текущей (INT)>- (необязательный аргумент) Аргумент задает требуемый уровень родительской функции. По-умолчанию, 0, объект содается для текущей функции. Нужнопонимать, что уровень родителя здесь, это не уровень вызова (рекурсии), а уровень исходного текста.
Возвращаемое значение
Возвращает новый объект компилированной функции, который можно исполнить с помощью функций Exec и ExecEx, либо экспортировать в память с помощью SaveFunctionToBuffer.
Примеры
//Пример показывает разницу между уровенем исходного текста при получении функции и уровнем рекурсии,
// а также глобальными переменными, доступными в контексте исполнения, а не внутри объекта функции.
Var Счетчик Export;
Function Рекурсия()
Счетчик:=Счетчик+1;
Message("Счетчик (вложенность вызова): "+Счетчик);
If Счетчик>99 Then
Message("Выходим из рекурсии.");
Exit;
EndIf;
//Получим объект функции, в которой располагается текущая функция Рекурсия()
аФункция:=GetModuleFunction(1);
//Выполним вызов из этого объекта
ExecuteFunction("Рекурсия",аФункция);
EndFunction
Счетчик:=0;
Рекурсия();
//В логе должно отобразиться: 100 строк "Счетчик (вложенность вызова): ??" и последняя строка "Выходим из рекурсии.".