ArgumentsNumber

From SunFlurry wiki
Revision as of 19:03, 20 November 2021 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  ArgumentsNumber (Системные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, число
Визуальность:Нет

Функция возвращает количество аргументов функции с указанным именем в текущем контексте исполнения, способ поиска задается вторым аргументом. Если искомая функция не существует, будет возвращено значение -1. Функции этой группы могут использоваться в макросах форм для вызова заранее определенных функций-событий. От использования Exec функции DoesFunctionExist и ExecuteFunction отличаются избирательным поиском функций, к примеру, Exec может исполнить функцию с таким же именем в глобальном модуле, тогда как, возможно, это нежелательно.

Синтаксис

ArgumentsNumber(<Имя функции (STRING)>,<Глубина поиска или компилированная функция (INT, COMPILEDFUNCTION)>=0):<Количество аргументов (INT)>

Аргументы

  • <Имя функции (STRING)> - Имя функции, количество аргументов которой необходимо найти
  • <Глубина поиска (INT)> - (необязательный аргумент) Может принимать следующие значения:
    • 0 (по умолчанию) -- выполнять поиск во всех модулях большего уровня вложенности (родительских) и во всех глобальных модулях.
    • 1 -- выполнять поиск только внутри текущего модуля.
    • 2 -- выполнять поиск только внутри родительского модуля.
    • 3..x -- выполнять поиск только внутри родительского модуля указанного уровня (к примеру, для уровня 3, выполнять поиск только в родителе родителя текущего модуля).
    • Объект типа компилированная функция -- выполнять поиск функции внутри заданной компилированной функции (только среди функций верхнего уровня).

Возвращаемое значение

Возвращает количество аргументов найденной функции или -1, если функция не найдена.

Примеры

//Визуальное событие OnClick в макросе, состоящем из группы кнопок
//Событие вызывает функции в локальном модуле, на форме которого размещен макрос

//Событие в локальном модуле может отменить обработку документа
//флПарам -- параметр, передаваемый в модуль обработки документа, может быть изменен функцией OnBeforeDocumentSaveOrPublish
//ФлТип -- если OnBeforeDocumentSaveOrPublish возвратит 0, обработка будет отменена
//         1 -- обработка будет выполнена
//         2 -- обработку выполнила сама функция OnBeforeDocumentSaveOrPublish, выполнять ее здесь не требуется
флПарам:=0;
ФлТип:=0;
If ArgumentsNumber("OnBeforeDocumentSaveOrPublish",1)=2 Then
  ФлТип:=Number(ExecuteFunction("OnBeforeDocumentSaveOrPublish",1,1,флПарам));
  If ФлТип=0 Then
    Exit;
  EndIf;
EndIf;

//Далее следует блок обработки документа
If ФлТип<>2 Then
  Try
    If aEl.Status()<0 Then //Документ необходимо записать, если он новый
      aEl.Save();
    EndIf;
    if not aEl.Publish(флПарам) Then
      Exit;
    EndIf;
  Except
    Message(глПодготовитьОшибкуОбработки(),"!");
    Exit;
  EndTry;
EndIf;

//Событие в локальном модуле может произвести действия, необходимые после обработки документа
If ArgumentsNumber("OnAfterDocumentSaveOrPublish",1)=2 Then
  ExecuteFunction("OnAfterDocumentSaveOrPublish",1,1,флПарам);
EndIf;