Выбор пользовательской функции

Функция определяет, каким образом будет выполняться расчёт блока. Функция должна быть написана в модуле Fore и иметь следующую сигнатуру:

Public Function <Название функции>([<дополнительные параметры>,]Paramarray parameters: Array Of Variant): Variant;

Где:

Для получения примера функции обратитесь к разделу «Пример пользовательской функции».

Выбор пользовательской функции выполняется на странице «Параметры блока» в мастере редактирования блока функции:

Для выбора пользовательской функции:

  1. Выберите модуль с функцией или сборку, содержащую модуль с функцией, в раскрывающемся списке «Модуль». Модуль или сборка должны быть написаны на языке Fore. Для просмотра выбранного модуля или формы в среде разработки нажмите кнопку «Открыть».

Совет. Для создания модуля, содержащего требуемую сигнатуру функции, нажмите кнопку «Создать». Будет открыт диалог, в котором выберите место хранения модуля и задайте его наименование и идентификатор. После этого модуль будет открыт в среде разработки.

  1. Выберите пользовательскую функцию в раскрывающемся списке «Функция». В списке содержатся только те функции модуля, которые имеют требуемую сигнатуру.

  2. Если в сигнатуре функции определены константные пользовательские параметры, то задайте их значения в поле «Дополнительные значения параметров». Если параметров несколько, то их значения приводятся через запятую. Строковые параметры приводятся в кавычках.

  3. Проверьте правильность задания параметров функции. Нажмите кнопку «Проверить синтаксис». Если всё настроено верно, то будет отображено соответствующее сообщение, в обратном случае - текст ошибки.

В результате будет выбрана пользовательская функция, рассчитываемая блоком.

Пример пользовательской функции

Пример выполняет команду СУБД, ключ которой передаётся в качестве константного пользовательского параметра.

Для выполнения примера добавьте ссылки на системные сборки: Db, Metabase, Ui.

Public Function callDBCommand(Command: Integer; Param: Array Of Variant): Variant;
Var
    comInst: ISQLCommandInstance;
Begin
    
If WinApplication.ConfirmationBox("Выполнение расчёта может занять продолжительное время. Продолжить?"Then
        comInst := MetabaseClass.Active.Item(Command).Open(
NullAs ISQLCommandInstance;
        comInst.Execute;
    
End If;
    
Return 0;
End Function callDBCommand;

См. также:

Вставка и настройка блоков функций