TXO API для закрытия счета
Добавлено: 27 июн 2012, 19:54
Разрабатываю шаблон ТХО для закрытия 21 счета. Согласно постановке задачи, необходимо создать свой алгоритм с использованием TXO API.
На вход алгоритма должно подаваться значение аналитики по кредиту «Материальные ценности» (КАУ2). Алгоритм должен на основе этого входного значения в таблице OBOROT находить значение аналитики по дебету «Материальные ценности» (КАУ1) и подавать его на выход для использования в функции TxoSetKau.
При реализации столкнулся с тем, что мой тестовый алгоритм (“APITEST”) отрабатывает всего один раз за время работы тхо, хотя по логике должен вызываться несколько раз для каждой проводки.
Вопросы:
Можно ли сделать так, чтобы идентификатор &VIP_[obj:”APITEST”] вызывался циклично для каждой обрабатываемой проводки (как, например &KAU). Если нельзя, то можно ли как-нибудь выкрутиться?
Можно ли сделать так, чтобы возвращать значение из своего интерфейса не через функции типа TxoBodyAddKau/TxoBodyInsert? Например, тот же &KAU возвращает значение как обычная функция. Мне надо так же.
Можно ли в качестве параметра для идентификатора &VIP_ указывать не явное значение, а подставлять функцию, например &VIP_[obj:”APITEST”][&KAU[Кау:4]]. Система ругается на такой синтаксис. Выкручиваюсь через savemydsk в шаблоне тхо и readmydsk в теле своего интерфейса.
Буду рад любой помощи, это мой первый опыт работы с ТХО.
Прикладываю описание ТХО.
Закрытие счета 21 (Корректировка стоимости ПФ) (10_07)
Регистр учета: План счетов 2001г
ДЕБЕТ: 10.01 КРЕДИТ: 10.07
КАУ 1: <режим 0 - Материальные ценности> КАУ 1: <авто - Организации>
Подразделение: <авто - Подразделения> КАУ 2: <авто - Материальные ценности>
Подразделение: <авто - Подразделения>
Дата проводки: <авто - дата>
Содержание проводки:
Алгоритм в НДЕ: if(П[Период:М]Д10_01[1:?160]\c10|07|na10|01[2:?0] =0,0,&S2_10_07)
Алгоритм в валюте <по настройке>:
Алгоритм количество:
Вычисление формул: Вычислять все формулы по списку
Фильтр для циклической обработки:
Циклическая обработка: <Материальные ценности>
Результат: знак суммы не обрабатывать, корреспонденцию счетов не изменять
Сумму в проводке: не конвертировать
Внешняя классификация:
10 &C10_07 = if(С[Период:М]Д10_07[2:?0]=0, -С[Период:М]К10_07[2:?0],С[Период:М]Д10_07[2:?0])
11 &A10_07 = С[Тип:В][Период:М]Д10_07[2:?0]
12 &B10_07 = О[Период:М]Д10_07[2:?0]
13 &D10_07 = С[Тип:В][Период:М][Рез:Кол]Д10_07[2:?0]
14 &E10_07 = О[Период:М][Рез:Кол]Д10_07[2:?0]
15 &F10_07 = С[Период:М][Рез:Кол]Д10_07[2:?0]
16 &S2_10_07 = &C10_07-(&A10_07+&B10_07)/(&D10_07+&E10_07)*&F10_07
19 &11 = savemydsk(string(&KAU[Кау:4],17,1),1)
21 &C10_01 = С[Период:М]Д10_01[1:?0]
22 &A10_01 = С[Тип:В][Период:М]Д10_01[1:?0]
23 &B10_01 = О[Период:М]Д10_01[1:?0]
24 &D10_01 = С[Тип:В][Период:М][Рез:Кол]Д10_01[1:?0]
25 &E10_01 = О[Период:М][Рез:Кол]Д10_01[1:?0]
26 &F10_01 = С[Период:М][Рез:Кол]Д10_01[1:?0]
27 &S2_10_01 = &C10_01-(&A10_01+&B10_01)/(&D10_01+&E10_01)*&F10_01
28 &R_10_01 = &Kol10_01*(&S2_10_01/(&D10_01+&E10_01-&F10_01))
29 &Kol10_01 = П[Период:М][Рез:Кол]Д20_02[1:?]\10_01[1:?0]
31 &2 = TxoSetKau(4,160,&VIP[obj:"APITEST"])
32 &3 = coTXOGetExtAttr('KATMC','Составляющий комплекта',&KAUK1)
33 &4 = TxoSetKau(4,161,&3)
Прикладываю заготовку своего фейса, в нем нет полезного кода, но может быть, чем-нибудь поможет.
На вход алгоритма должно подаваться значение аналитики по кредиту «Материальные ценности» (КАУ2). Алгоритм должен на основе этого входного значения в таблице OBOROT находить значение аналитики по дебету «Материальные ценности» (КАУ1) и подавать его на выход для использования в функции TxoSetKau.
При реализации столкнулся с тем, что мой тестовый алгоритм (“APITEST”) отрабатывает всего один раз за время работы тхо, хотя по логике должен вызываться несколько раз для каждой проводки.
Вопросы:
Можно ли сделать так, чтобы идентификатор &VIP_[obj:”APITEST”] вызывался циклично для каждой обрабатываемой проводки (как, например &KAU). Если нельзя, то можно ли как-нибудь выкрутиться?
Можно ли сделать так, чтобы возвращать значение из своего интерфейса не через функции типа TxoBodyAddKau/TxoBodyInsert? Например, тот же &KAU возвращает значение как обычная функция. Мне надо так же.
Можно ли в качестве параметра для идентификатора &VIP_ указывать не явное значение, а подставлять функцию, например &VIP_[obj:”APITEST”][&KAU[Кау:4]]. Система ругается на такой синтаксис. Выкручиваюсь через savemydsk в шаблоне тхо и readmydsk в теле своего интерфейса.
Буду рад любой помощи, это мой первый опыт работы с ТХО.
Прикладываю описание ТХО.
Закрытие счета 21 (Корректировка стоимости ПФ) (10_07)
Регистр учета: План счетов 2001г
ДЕБЕТ: 10.01 КРЕДИТ: 10.07
КАУ 1: <режим 0 - Материальные ценности> КАУ 1: <авто - Организации>
Подразделение: <авто - Подразделения> КАУ 2: <авто - Материальные ценности>
Подразделение: <авто - Подразделения>
Дата проводки: <авто - дата>
Содержание проводки:
Алгоритм в НДЕ: if(П[Период:М]Д10_01[1:?160]\c10|07|na10|01[2:?0] =0,0,&S2_10_07)
Алгоритм в валюте <по настройке>:
Алгоритм количество:
Вычисление формул: Вычислять все формулы по списку
Фильтр для циклической обработки:
Циклическая обработка: <Материальные ценности>
Результат: знак суммы не обрабатывать, корреспонденцию счетов не изменять
Сумму в проводке: не конвертировать
Внешняя классификация:
10 &C10_07 = if(С[Период:М]Д10_07[2:?0]=0, -С[Период:М]К10_07[2:?0],С[Период:М]Д10_07[2:?0])
11 &A10_07 = С[Тип:В][Период:М]Д10_07[2:?0]
12 &B10_07 = О[Период:М]Д10_07[2:?0]
13 &D10_07 = С[Тип:В][Период:М][Рез:Кол]Д10_07[2:?0]
14 &E10_07 = О[Период:М][Рез:Кол]Д10_07[2:?0]
15 &F10_07 = С[Период:М][Рез:Кол]Д10_07[2:?0]
16 &S2_10_07 = &C10_07-(&A10_07+&B10_07)/(&D10_07+&E10_07)*&F10_07
19 &11 = savemydsk(string(&KAU[Кау:4],17,1),1)
21 &C10_01 = С[Период:М]Д10_01[1:?0]
22 &A10_01 = С[Тип:В][Период:М]Д10_01[1:?0]
23 &B10_01 = О[Период:М]Д10_01[1:?0]
24 &D10_01 = С[Тип:В][Период:М][Рез:Кол]Д10_01[1:?0]
25 &E10_01 = О[Период:М][Рез:Кол]Д10_01[1:?0]
26 &F10_01 = С[Период:М][Рез:Кол]Д10_01[1:?0]
27 &S2_10_01 = &C10_01-(&A10_01+&B10_01)/(&D10_01+&E10_01)*&F10_01
28 &R_10_01 = &Kol10_01*(&S2_10_01/(&D10_01+&E10_01-&F10_01))
29 &Kol10_01 = П[Период:М][Рез:Кол]Д20_02[1:?]\10_01[1:?0]
31 &2 = TxoSetKau(4,160,&VIP[obj:"APITEST"])
32 &3 = coTXOGetExtAttr('KATMC','Составляющий комплекта',&KAUK1)
33 &4 = TxoSetKau(4,161,&3)
Прикладываю заготовку своего фейса, в нем нет полезного кода, но может быть, чем-нибудь поможет.
Код: Выделить всё
#include TxoApi.vih
#Component "F_TXOAPI"
VipInterface Txo_APITEST implements ObjTxoIdentPlugin Licensed(Free);
Interface Txo_APITEST;
create view ;
function GetInfo : string;
{
GetInfo :=’Test’;
}
function ParamMaster : string;
{
}
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
var buf : string[17];
var h, res: boolean;
Message('TEST');
TxoAllowRecallStoreCycles(hTxo);
TxoHeadClear(hTxo);
TxoBodyClear(hTxo);
readmydsk(buf,1,h);
message('buf ' + buf);
TxoDebugMsg(hTxo,'buf', buf);
TxoBodyAddKau(hTxo, wFlKau_Mode0, cgKau_KatMC, comp(buf)); // ничего не возвращает
txobodyinsert(htxo)
}
handleevent
cmOnVipLoad: {message('cmOnVipLoad')}
cmOnVipUnload: {message('cmOnVipUnLoad')}
end;
end.