TxoApi как подставить нужную аналитику в проводку??

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

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

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

TxoApi как подставить нужную аналитику в проводку??

Сообщение Masygreen »

День добрый не могу победить проводки или настройки помогите советом :)

Задача проводка вешается на Акт ... акт привязан к ПКП подряда, ПКП подряда привязано к ПКП субподряда, ПКП субподряда к договору субподряда.
Необходимо в проводке указать КАУ2 договор субподряда....

Написал TxoApi ....

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

#include TxoApi.vih

#Component "F_TxoApi"

VipInterface Txo_Api_AktSP01 Implements ObjTxoIdentPlugin Licensed(Free);

// Простой интерфейс для обработки накладной
Interface Txo_Api_AktSP01;

// Логическая таблица, описывает стуктуру накладной
create view MainView01
var
  CurSoprDoc    : comp;
  nRecDogovorSP : comp;
as select
   dogovor.nrec
from
   katsopr,dogovor,calplan,calplan calplan1
where
((
comp(CurSoprDoc)==katsopr.nrec
and katsopr.ccalplan == calplan.nrec
and calplan.nrec ==  SPSCHEM.Cdoc
and SPSCHEM.Cschem == DOCSCHEM.Nrec
and DOCSCHEM.Cdoc == calplan1.nrec
and calplan1.cdogovor == dogovor.nrec
and 403==SPSCHEM.Tidk
and 403== SPSCHEM.Tidkbase
))
and 403=DOCSCHEM.Tidkgal
;

function GetInfo : string;
{
   GetInfo := 'МАРТ.ТХО Получение субподрядного договора для акта подряда';
}

function ParamMaster : string;
{
   ParamMaster := '';
}

procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
    // установить ограничения на логическую таблицу
    CurSoprDoc := buf.cSoprDoc;
    _loop katsopr
    {
     _loop calplan
     {
      _loop SPSCHEM
      {
      _loop DOCSCHEM
      {
       _loop calplan1
       {
        _loop dogovor
        {
        nRecDogovorSP:=dogovor.nrec; 
        LogStrToFile('c:\1.txt',dogovor.nrec +'=='+dogovor.nodoc);
        /*лог сделан только для проверки .. возвращает все правильно*/
        }
       }
      }
      }
     }
    }
  TxoBodyClear(hTxo);
  TxoBodyAddKau(hTxo, 0, 2, nRecDogovorSP);
  TxoBodyInsert(hTxo);
}
end.
В натройках Тхо

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

КАУ2 режим 0
Алгоритмы

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

 &SoprDoc   &Vip[Obj:"API_AKTSP01"]
 &1              TxoSetKau(14,160,&SoprDoc)
Результат 0.... или неправильные алгоритмы или TXOAPI.. подскажите направление
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

TxoBodyAddKau(hTxo, 0, 2, nRecDogovorSP);
а почему 2? это подразделение. см настройка - аналитика скажем во фро.
ключики у вас тоже интересные :)
&soprdoc - это стандартный ключ - не надо ему значение присваивать.
txosetkau тоже нафиг
vip возвращает сумму ( у вас тут 0). Его просто нужно вызвать и все.
а вот циклическую обработку по договорам нужно поставить.
а чтоб со стандартным не мешалось лучше гнать не по avto(1 параметр) а по режиму 0 (160).
И перечитайте доку и посмотрите примеры. Здесь и txoheadaddkau покатит.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

как вариант пробовал
TxoBodyAddKau(hTxo, wFlKau_Mode0, cgKau_Dogovor, nRecDogovorSP);

Ключи взяты по аналогии(если проставить число то договор привязывается)

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

 &SoprDoc   1898464618163156
 &1              TxoSetKau(14,160,&SoprDoc)
т.е. ключи вообще не надо использовать ??? тогда как вызвать свой алгоритм????
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

просто в любом ключе
&Vip_[Obj:"API_AKTSP01"]*0
ну или сие добавить к алгоритму
раз вы уж через body сделали то "_" обязательно.
еще не забудте режим 0 поставить в аналитике.
не получится уберите TxoBodyClear(hTxo); - обычно после это определяют всю аналитику. Дальше включайте отладку и смотрите на ключики.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Пробовал комбинации

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

  TxoBodyClear(hTxo);
  TxoBodyAddKau(hTxo,wFlKau_Mode0, cgKau_Dogovor, nRecDogovorSP);
  TxoBodyInsert(hTxo);

 TxoHeadClear(hTxo);
 TxoHeadAddKau(hTxo,wFlKau_Mode0, cgKau_Dogovor, nRecDogovorSP);
Не помогает .. не пойму как эта байда работает .. хелп тоже особо не просвятил ... меня в принципе устраивает вариант .. ...

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

&1 &Vip_[Obj:"API_AKTSP01"]
&2 TxoSetKau(14,160,&1) 
только как вернуть в &1 nRec ?? вообще TXOAPI это позволяет??? или я вообще не там ищу???
Время ведет!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

в формулу VIP_MYTXO возвращает тока сумму....
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а поскоку nrec большой то наверное придется бить на части рублевую и валютную и тащить векторную составляющую, а мож и нет. 8)
Проще раз и навсегда разобраться с апихой и зараз задавать по сотне аналитик, а не одну, но в теории ваше желание выполнимо.
Clear в вашем разе не нужно.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

еще может TxoBodySetSum нужно. Вроде как с нулевой суммой проводка просто не сформируется...
Ответить