мета-данные страницы
  •  

Это старая версия документа!


Специальные параметры в скриптах ДС-ВДС

Со временем всё больше появляется необходимость в доступе к внутренним данным прорабатываемого скрипта. Например, для определения процента начисления бонусов по заказу.

Скриптер позволяет передать в него внешнюю переменную, которую он сможет спокойно использовать, менять её значение, и по результату выполнения скрипта это значение можно получить во внешних обработках.

Визуально это примерно так:

Переменная scriptPercent не объявлена локально. Она попадает в скрипт «извне». После отработки скрипта стоит вывод значения этой переменной.

Техническая часть

Чтобы подобное реализовать, нужно доработать модуль ScriptFunctions.pas:

  1. В тип TExtScriptResInfo добавляем нужное поле;
  2. В процедуре TScriptExecutor.PSScriptCompile регистрируем название новой переменной: Sender.AddRegisteredPTRVariable('scriptItogSum', 'double');
  3. В процедуре TScriptExecutor.PSScriptExecute связываем переменную с полем записи ExtScriptResInfo: PSScript.SetPointerToData('scriptItogSum', @ExtScriptResInfo.scriptItogSum, PSScript.FindBaseType(btDouble));
  4. В процедуре 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;