мета-данные страницы
Это старая версия документа!
Специальные параметры в скриптах ДС-ВДС
Со временем всё больше появляется необходимость в доступе к внутренним данным прорабатываемого скрипта. Например, для определения процента начисления бонусов по заказу.
Скриптер позволяет передать в него внешнюю переменную, которую он сможет спокойно использовать, менять её значение, и по результату выполнения скрипта это значение можно получить во внешних обработках.
Переменная scriptPercent не объявлена локально. Она попадает в скрипт «извне». После отработки скрипта стоит вывод значения этой переменной.
Техническая часть
Чтобы подобное реализовать, нужно доработать модуль ScriptFunctions.pas:
- В процедуре TScriptExecutor.PSScriptCompile регистрируем название новой переменной: Sender.AddRegisteredPTRVariable('scriptItogSum', 'double');
- В процедуре TScriptExecutor.PSScriptExecute связываем переменную с полем записи ExtScriptResInfo: PSScript.SetPointerToData('scriptItogSum', @ExtScriptResInfo.scriptItogSum, PSScript.FindBaseType(btDouble));
- В процедуре TScriptExecutor.PSScriptAfterExecute делаем вывод этой переменных в запись ExtScriptResInfo: ExtScriptResInfo.scriptPercent := VGetInt(PSScript.GetVariable('scriptPercent'));
Базовые типы переменных в скриптах
Функции получения данных
Весь список возможных функций получения данных:
- function VGetUInt(const Src: PIFVariant): Cardinal;
- function VGetInt64(const Src: PIFVariant): Int64;
- function VGetReal(const Src: PIFVariant): Extended;
- function VGetCurrency(const Src: PIFVariant): Currency;
- function VGetInt(const Src: PIFVariant): Longint;
- function VGetString(const Src: PIFVariant): String;
- function VGetAnsiString(const Src: PIFVariant): tbtString;
- function VGetWideString(const Src: PIFVariant): tbtWideString;
- function VGetUnicodeString(const Src: PIFVariant): tbtunicodestring;