TXO API для закрытия счета

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Timofey
Сообщения: 6
Зарегистрирован: 05 мар 2012, 11:37

TXO API для закрытия счета

Сообщение Timofey »

Разрабатываю шаблон ТХО для закрытия 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)

Прикладываю заготовку своего фейса, в нем нет полезного кода, но может быть, чем-нибудь поможет.

Код: Выделить всё

#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. 
Timofey
Сообщения: 6
Зарегистрирован: 05 мар 2012, 11:37

Re: TXO API для закрытия счета

Сообщение Timofey »

LaaLaa писал(а):Почитайте
ftp://ftp.galaktika.ru/pub/support/gala ... txoapi.pdf
3.5. ТХО API ДЛЯ ЗАКРЫТИЯ СЧЕТОВ
Спасибо за ссылку, но это всё я читал. В реализации ТХО, которую я привел в первом сообщении, все операции, кроме алгоритма поиска соответствий аналитик в проводках, можно реализовать стандартными идентификаторами. Меня интересует, можно ли этот один алгоритм закодировать на API? Не хотелось бы переписывать весь шаблон ТХО на API из-за того, что для одного алгоритма не нашлось подходящего идентификатора.
Есть ли способ выкрутиться или все же придется кодить весь шаблон на API?
Ответить