Подставить в проводку вычисляемое значение аналитики(TxoApi)

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Подставить в проводку вычисляемое значение аналитики(TxoApi)

Сообщение masygreen »

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

Хотелось решение вроде

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

&1 &Vip_[Obj:"API_AKTSP01"]
&2 TxoSetKau(14,160,&1) 
Но как я понял TxoApi не может вернуть nRec??? Есть ли еще варианты
ps...в апи я пытался ..так

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

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.
и так

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

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

 TxoHeadClear(hTxo);
 TxoHeadAddKau(hTxo,wFlKau_Mode0, cgKau_Dogovor, nRecDogovorSP); 
Seybukan
партнер
Сообщения: 85
Зарегистрирован: Чт, 20/09/2007 12:53
Имя Фамилия: Алексей Семенов
Откуда: ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

TxoBodyAddKau(hTxo,wFlKau_Mode0, cgKau_Dogovor, nRecDogovorSP)
Уже дает режим-0 аналитики.
Так не получиться. Иначе прописывайте в ТХО и выдяргивание суммы и прочую аналитику.

В вашей ситуации лучше дополнить список режимов формирования значений аналитики. Для этого требуется написать свою реализацию объектного интерфейса ObjTxoMenuPlugin. И для реализации пользовательского алгоритма извлечения значений аналитик из первичного документа, требуется написать свою реализацию объектного интерфейса ObjTxoExtractKauPlugin.
А в алгоритмах использовать стандартный идентификаторы.
Важно помнить, что данные режимы НЕ циклические. То есть их выгодно использовать скажем для шапки накладной или акта. Так как алгоритмы можно использовать стандартные.

Вот когда-то делал грузоотправителя грузополучателя:

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

#include TxoApi.vih

VipInterface TxoMenu_OrgGruz implements ObjTxoMenuPlugin;
Interface TxoMenu_OrgGruz
create view;
procedure OnMakeMenu(hMenu : ObjTxoMenuServer);
{
    hMenu.AddTxoMenu(mnuFlUserKau,     0 ,             0,    'separator', '');
    hMenu.AddTxoMenu(mnuFlUserKau,     0 ,             5560, 'Грузоотправитель', '<Грузоотправитель>');
    hMenu.AddTxoMenu(mnuFlUserKau,     0 ,             5561, 'Грузополучатель', '<Грузополучатель>');
}

procedure OnSetEnableMenu(hMenu : ObjTxoMenuServer; TiDkGal, SysOper : word);
{
   var flag : boolean;
   flag := false;
   case TiDkGal of
     101,111,201,211:
       flag := true;
   end;

   if(flag)
   {
     hMenu.EnableMenu(mnuFlUserKau,     0 ,             5560);
     hMenu.EnableMenu(mnuFlUserKau,     0 ,             5561);
   }
   else
   {
     hMenu.DisableMenu(mnuFlUserKau,     0 ,             5560);
     hMenu.DisableMenu(mnuFlUserKau,     0 ,             5561);
   }
}
end.


VipInterface TxoKau_OrgGruz implements ObjTxoExtractKauPlugin;
Interface TxoKau_OrgGruz;
const ifcName = 'TxoKau_OrgGruz';
end;

create view
var
  CurSoprDoc : comp;
as select
  *
from
  Katsopr
where
((
  CurSoprDoc == KatSopr.Nrec
))
;

procedure OnRegisterKauExtractor(hKau : ObjTxoExtractKauServer);
{
  // регистрируем типы документов
  hKau.InsertTxoExtKauRegister(cgDoc_0101,ifcName); // Накладная на прием МЦ
  hKau.InsertTxoExtKauRegister(cgDoc_0111,ifcName); // Акт на закупку услуг
  hKau.InsertTxoExtKauRegister(cgDoc_0201,ifcName); // Накладная на отпуск МЦ
  hKau.InsertTxoExtKauRegister(cgDoc_0211,ifcName); // Акт на оказание услуг
}

procedure OnExtractKau(hTxo : longint; TiDkGal : word; cSoprHoz, cSoprDoc : comp);
{
  CurSoprDoc := cSoprDoc;
  if (getfirst KatSopr = tsOk)
  {
    TxoHeadAddKau(hTxo, 5560, cgKau_KatOrg, KATSOPR.CGRUZFROM);
    TxoHeadAddKau(hTxo, 5561, cgKau_KatOrg, KATSOPR.CGRUZTO);
  }
}
end.
[/code]
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Сообщение masygreen »

Спасибо буду пробовать ...
Ответить