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]