Difference between revisions of "ArgumentsNumber"
1>Admin |
m (1 revision imported) |
(No difference)
|
Latest revision as of 18:03, 20 November 2021
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;