ВЫЗОВ УНИВЕРСАЛЬНЫХ ТРАНЗАКЦИЙ АБС БИСКВИТ ИЗ ПРОЦЕДУР ABL
Для вызова универсальных транзакций из собственной процедуры используется процедура ex-trans.p. Данная процедура осуществляет вызов транзакции с предустановленными параметрами, указанных во временной таблице tOpKindParam. Инклюд файл topkind.def содержит описание этой временной таблицы, а так же ряд функций по работе с ней.
Объявим необходимые переменные и определим их значения:
{topkind.def}
DEF VAR vCurr AS CHAR NO-UNDO. /* Валюта операции */
DEF VAR vAcctDb AS CHAR NO-UNDO. /* Счет дебета */
DEF VAR vAcctCr AS CHAR NO-UNDO. /* Счет кредита */
DEF VAR vSumm AS DEC NO-UNDO. /* Сумма операции */
DEF VAR vNumber AS INT NO-UNDO. /* Номер документа */
DEF VAR vSendName AS CHAR NO-UNDO. /* Наименование получателя */
DEF VAR vRecName AS CHAR NO-UNDO. /* Наименование плательщика */
DEF VAR vParamOk AS LOG NO-UNDO. /* Результат заполнения таблицы */
DEF VAR vTransOK AS LOG NO-UNDO. /* Результат выполнения транзакции */
DEF VAR iOpKind AS CHAR NO-UNDO. /* Код вызываемой транзакции */
DEF VAR iOpDate AS DATE NO-UNDO. /* Дата опер. дня */
ASSIGN
vCurr = ""
vAcctDb = "40817810012340000001"
vAcctCr = "40817810112340000002"
vSumm = 1024.50
vNumber = 1
vSendName = "Иванов Иван Иванович"
vRecName = 'ООО "Энергия"'
NO-ERROR.
Заполнение таблицы параметров передаваемых в универсальную транзакцию:
{empty tOPKindParams} /* очистить таблицу параметров транзакции */
vParamOk = TDAddParam("mCurr", vCurr) AND
TDAddParam("mAcctDb", vAcctDb) AND
TDAddParam("mAcctCr", vAcctCr) AND
TDAddParam("mAmt", STRING(vSumm)) AND
TDAddParam("mSendName", vSendName) AND
TDAddParam("mRecName", vRecName) AND
TDAddParam("mDocNum", STRING(vNumber)).
Функция TDAddParam осуществляет заполнения временной таблицы tOpKindParam контекста универсальной транзакции, описанной так же как и сама функция в инклюд-файле topkind.def. Первым параметром данной функции является идентификатор переменной используемой в универсальной транзакции, второй - присваиваемое ей значение типа CHAR.
Вызов транзакции:
iOpKind = "TR0001".
iOpDate = TODAY.
RUN ex-trans.p (iOpKind,
iOpDate,
TABLE tOpKindParams,
OUTPUT vTransOk,
UTPUT vMessErr).
Успешность, или неуспешность выполнения универсальной транзакции будет отражено в значение логического выходного параметра vTransOk:
- TRUE - транзакция выполнена успешно;
- FALSE - транзакция завершилась с ошибкой.
В случае завершения транзакции с ошибкой выходной параметр vMessErr будет содержать сообщение ошибки.
Таким образом при создании универсальной транзакции для определения значений реквизитов доступны следующие переданные значения переменных:
@mCurr
@mAcctDb
@mAcctCr
@mAmt
@mDocNum
@mSendName
@mRecName