TXO API для бюджета, у кого есть опыт?

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

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

Ответить
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

TXO API для бюджета, у кого есть опыт?

Сообщение ecasoft »

Ни у кого опыта нет в вопросе этом? как-то в доке мало написано в этом плане. Может где здесь обсуждали?

Нужно исходя из того, что привязано к договору (внешняя классификация) при разноске сопроводительных документов этого договора делать разноску на определенную аналитику статьи.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

При написании ТХО АПИ нужно учитывать то, что если хочешь подключать какие-то КАУ (пользовательские - в вашем случае это статьи?), то нужно их заполнять прямо в випе командой: TxoBodyAddKau(hTxo, wFlKau_Mode0, Hozobor.TBLOS[1], SpKaud.Nrec), при чём Spkau должна быть спозиционирована нужным образом на нужную запись.
Если КАУ совпадёт, проводки склеятся.
Ну и в настройке не забыть указать циклическую обработку спецификаций по вашим статьям.
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

Нет так не пойдет!
Если сделать при помощи TxoBodyAddKau, то придется прописывать как будут грузиться суммы и прочие другие аналитики.
Ест вариант на много проще:
Я так полагаю что по отношению к проводимому документу аналитика в бюджете будет формироваться не циклически!
Если так - то то лучше написать режим формирования аналитики, в данном случае статею бюджетов. В таком случае суммы вы сможете вытаскивать стандартными идентификаторами, а аналитику собственным режимом! При помощи ObjTxoMenuPlugin и ObjTxoExtractKauPlugin.

И статьи там не пользовательские!
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Сообщение ecasoft »

Что-то взял исходники примеров, а они не компилируются для 7 11.

Пришлось подцепить типы, так как описание типов не подинклюдено в исходниках...или чего-то не то делаю?
Сейчас компилируется, но неужели надо менять код, чтобы скмпилировать примеру?

Мне кажется я как-то неверно понимаю вообще возможнотси API.

Я так понимаю, что алгоритм написанный на ВИПе вызывается в ходе привязки оборота к документу (обработка ТХО, в которой в алгоритме стоит &VIP....

В данном алгоритме я могу подцепить исходя из знания Nrec-а разносимого документа любую информацию, связанную с ним в БД.

Делая этот анализ я могу - подцепить к обороту аналитику, пересчитать сумму оборота и другие его атрибуты. Так?

Теперь уже идет к статье бюджета. Аналитика привязывается также к обороту, как и в случае с обычный оборотом? И вроде правильно написали, что используется функция записи аналитики. Только я не понял, что с чем должно совпадать и почему второй автор все это отмел :)

Может у кого есть примеры или в опыте?
Некоммерческое общение в форуме
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Писал недавно Тхо (712) по складским ордерам, чтобы аналитика (организация) проставлялась из накладной. Причем ссылка на накладую через внешний атрибут.

Shift + F3 Режимы формирования аналитики

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

#include TxoApi.vih

VipInterface TxoMenu_MFGetOrg implements ObjTxoMenuPlugin;

Interface TxoMenu_MFGetOrg;
create view
var 
  wNone: Word;
;

procedure OnMakeMenu(hMenu : ObjTxoMenuServer);
{ // добавить два режима 5000 и 5001 для счета и аналитики
  hMenu.AddTxoMenu(mnuFlUserKau, 0, 0, 'separator', '');
  hMenu.AddTxoMenu(mnuFlUserKau, 0, 5600, 
    'Организация из накладной - [Тюмбит-АСУ]', '<авто - Организация из накладной - [Тюмбит-АСУ]>');
}
procedure OnSetEnableMenu(hMenu : ObjTxoMenuServer; TiDkGal, SysOper : word);
{ //определить доступность добавленных нами режимов
var flag: Boolean;

  flag := (TiDkGal = Word(160)) or (TiDkGal = Word(260)) or
          (TiDkGal = Word(150)) or (TiDkGal = Word(250));

  if flag hMenu.EnableMenu(mnuFlUserKau, 0, 5600)
  else hMenu.DisableMenu(mnuFlUserKau, 0, 5600)
}
end.
Реализация режима.

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

#include TxoApi.vih

VipInterface Txo_MFGetOrg implements ObjTxoIdentPlugin;

Interface Txo_MFGetOrg;
create view 
var
  cAttrNam: Comp;
as select	
  AttrNam.Name
from
  AttrNam(Readonly);

function GetInfo: String;
{
  GetInfo := 'Получить Организацию из накладной по ссылке, заданной во вн. атрибуте складского ордера';
}

function ParamGen: String;
{
var Result: String;

  PackFields;
  ParamGen := '';
}

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

const
  sSklOrder_cSopr = 'Ссылка на накладную';
end;

procedure StoreCycles(hTxo: Longint; Buf: TTxoApiInfoDoc);
{
var	wParser: Word;
var wi: Word;
var wX: Word;
var cSopr: Comp;
var cOrg: Comp;

  cAttrNam := '';
  if (Buf.TiDkGal <> Word(160)) and (Buf.TiDkGal <> Word(260)) and
     (Buf.TiDkGal <> Word(150)) and (Buf.TiDkGal <> Word(250))
  {
    TxoDebugMsg(hTxo, 'MFGetOrg - [Тюмбит-АСУ]', 'Функция работает только со складским ордером');
    exit;
  }

  cSopr := Comp(0);
  cOrg := Comp(0);
  if GetFirst AttrNam where ((coSklOrder == AttrNam.wTable and
                              sSklOrder_cSopr == AttrNam.Name)) = tsOK
  {
    if GetFirst AttrVal where ((coSklOrder == AttrVal.wTable and
                                Buf.cSoprDoc == AttrVal.cRec and
                                AttrNam.nRec == AttrVal.cAttrNam)) = tsOK
    {
      cSopr := AttrVal.vComp;
      if GetFirst KatSopr where ((cSopr == KatSopr.nRec)) = tsOK
      {
        cOrg := KatSopr.cOrg;
      }
    }
  }

  TxoDebugMsg(hTxo, 'MFGetOrg - [Тюмбит-АСУ]', '[Ссылка на накладную:' + cSopr + ']');

  TxoDebugMsg(hTxo, 'MFGetOrg - [Тюмбит-АСУ]', '[Ссылка на организацию:' + cOrg + ']');
  TxoHeadAddKau(hTxo, 5600, cgKau_KatOrg, cOrg);

  TxoDebugMsg(hTxo, 'MFGetOrg - [Тюмбит-АСУ]', '---<****>---');
}
end.
Кстате, обещают в 712 патч через месяца два, который решит как эту проблему, так и позволит передавать значение аналитики в определенный режим. А так же расширит функционал, связанный с внешними атрибутами (coTxoGetAttr).
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

Вот создание режима формирования аналитики грузополучатели/отправителя:

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

 
#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.
Данный режим можно вызвать по Ctrl+F3 в аналитике по контрам.
Суммы же в свою очередь формируются стандартными идентификаторами.
Самая большая беда что такой режим не написать для циклицеских аналитик. Ну например для МЦ по спецификации накладной, так как аналитика по отношению к хозоперации будет циклическая.
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Сообщение ecasoft »

Во..я написал, как последний автор...только я привязывался не к системной, а к пользовательской аналитике и к разным режимам (ну тем, что по shift+f3), поэтому у меня не cgКауKatOrg, а просто код аналитики 10000 - это первый код пользовательской аналитики. И регистрировал я только 1 документ..другие не нужны были.

Так вроде работает все. С циклической я не пробывал, т.к. мне нужно было по документу, а не по спецификации.

А почему не работает циклическая...ведь теоретически надо просто подчеркивание поставить там и должно работать. Да и команды есть вроде. Это просто глючит или нет такой функциональности (что сомнительно). Давайте разберемся до конца.
Некоммерческое общение в форуме
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Еще вопрос по API

Сообщение ecasoft »

Еще возник вопрос ао API

У меня в документе нет циклических полей(спецификации) ,т.е. циклическую операцию я в ТХО задать не могу( если я правильно пнимаю). Но мне надо, чтобы по документу было создано много обротов с различными аналитическими признаками.

Могу ли я это сделать с помощью инструментов TXO API или нет (НЕТ я имею ввиду то, что API позвоняет только уточнять аналитику в хозоперации, суммы и т.д., но создавать новые обороты ОНА НЕ МОЖЕТ)? .

Мне надо по одному регистру учета чтобы было.
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Re: Еще вопрос по API

Сообщение Deinis »

ecasoft писал(а): У меня в документе нет циклических полей(спецификации) ,т.е. циклическую операцию я в ТХО задать не могу( если я правильно пнимаю). Но мне надо, чтобы по документу было создано много обротов с различными аналитическими признаками.
Почему нет???
Если вы в теле процедуры StoreCycles организуете цикл по любым таблицам, из которых можно взять аналитические признаки с соответствующими им суммами и при этом в настройках шаблона ТХО в полях "Циклическая обработка по" выберете нужные вам группы аналитики, то этого вполне достаточно.

В принципе, даже можно создать временную таблицу и в процессе работы выводить ее на экран. А на экране ее заполнять. После заполнения проходиться по ней и выдавать в StoreCycles нужные суммы из нее и соответствующие аналитические признаки из нее же. Это похоже на создание оборотов, только их будет создавать сама ТХО на потоке ваших данных :)
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Сообщение ecasoft »

спасибо за информацию, хотя так и не попробывал. Переключился на другую срочную задачу, а это ждет.

Если я правильно понял, то в ТХО указываешь аналитики в полях циклической аналитики. Затем в алгоритме по циклу выполнешь заполнение и в результате выполнения такако алгоритма получим количество оборотов равное количеству циклов. Попробую.
Некоммерческое общение в форуме
Ответить