Страница 1 из 1

Вопрос по TXO API

Добавлено: 06 фев 2009, 13:49
Sytin
У меня есть ТХО, которая обрабатывает некоторые данные по таблице соответствия. Таблица соответствия находится в ексель-файле. Получается, что для каждой проводки вызывается ТХО и соответственно происходит загрузка ексель - файла во временную таблицу, что естественно занимает много лишнего времени... Можно ли как-нибудь сделать так чтобы таблица загружалась только при первом запуске ТХО?

Добавлено: 06 фев 2009, 14:43
ilshat
может таблицу в текстовик загнать? :smile:

Добавлено: 07 фев 2009, 08:22
LaaLaa
Можно закешировать содержимое эскель файла в таблицу в памяти

1) объявить таблицу в памяти на уровне проекта (перед словом interface)

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

  table struct MyRef
  (
    ...
  );

  VipInterface Txo_MyAlg Implements ObjTxoIdentPlugin;
  Interface Txo_MyAlg;
2) в алгоритме где идет загрузка из эскель сделать что то типа:

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

   if( getfirst MyRef <> tsOk )
   {
     mtChangeRefCount(tnMyRef, 1);
     //это на 1 увеличить число ссылок на таблицу в памяти, чтобы она не закрылась до конца работы с Галактикой

     // перекачать данные из экселя в память
   }
3) далее по алгоритму использовать закаченные данные

Добавлено: 07 фев 2009, 23:33
Sytin
Да, знаю такую функцию. Хорошее решение. Спасибо!

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 06:21
Алексей
Есть ли возможность при написании алгоритма в кредит счета заполнить либо счет (по условию) либо поставить режим "выбор из каталога".
что-то я так поглядел и не понял... в настройке шаблона же сразу пишешь либо "выбор из каталога" либо "режим 0" к примеру... а хотелось бы этот режим определить программно, возможно?
З.Ы.: дело в том что я не знаю какой кредит ставить... знает только бухгалтер. и нигде в базе инфы нет.

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 11:33
edward_K
Выбора из каталога лучше избегать. Как вариант можно настроить внешний атрибут к чему либо (текстовый или ссылочный на прочие таблицы) и в апихе его подхватывать. Например можно к подразделениям - если речь о затратных счетах, или к группам МЦ, если речь о накладных. Не забудьте циклическую обработку включить по счету субсчету.

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 11:37
Den
Алексей писал(а):.... заполнить либо счет (по условию) ...
З.Ы.: дело в том что я не знаю какой кредит ставить... знает только бухгалтер. и нигде в базе инфы нет.
не очень понятно все же есть то условие в БД, которое можно выловить для определения нужно счета или нет ?
и как широк диапазон возможных счетов, которые могут проходить по кредиту ?

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 12:17
Алексей
скажем так, это ТХО к документу на внутреннее перемещение в спец.одежде, когда человек переходит с одного подразделения в другое.
если срок носки позиции СФО меньше года, то в дебет счет пишем затратный счет подразделения нового, а вот в кредит затратный счет старого подразделения, и вот тут непонятно какой счет подставлять и какой цех, т.к. по кодировкам и аналитикам нет полной аналогии...
заставлять писать ШЗ кредита в какой-нибудь атрибут? в принципе можно...
и всё-таки, ответа на мой вопрос не последовало: можно ли программно изменять настройку шаблона, чтобы заполнялось либо автоматом либо давало возможность пользователю выбирать из каталога ?

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 12:59
poneatovski
Я бы настроил ТХО с несколькими проводками с заранее указанными счетами\субсчетами, а для формирования той или иной проводки при привязке ТХО я написал бы ТХО АПИ, которая бы анализировала срок использования спецодежды.

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 15:32
edward_K
В теории то можно все. Тут главное то что - проводки формируются по каждой операции и сначала наверное выполняется алгоритм, а потом ручной выбор аналитики. Если это так то в алгоритме меняете hozobor по идее этого хватит - но распространиться на все проводки по этом hozobor. В последней операции вам нужно запустить алгоритм , который все вернет обратно. Но это путь ведущий в никуда. Лучше уж в каждой спецификации указать тогда и дебет и кредит раз совсем плохо, но вроде все решают почти стандартными алгоритмами.

Re: Вопрос по TXO API

Добавлено: 04 апр 2012, 17:15
Алексей
ясн. ладно, завтра ещё подумаю, предложу варианты. так то обычно мало перемещений туда-сюда по цехам...

Re: Вопрос по TXO API

Добавлено: 11 май 2012, 08:46
zna
Господа, прошу подсказать по ТХО АPI для закрытия счетов:
Как достать сумму исходящего сальдо? Есть объект TTxoInfoCloSch, но не вижу суммы. Вот фрагмент кода из примера (LaaLaa):

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

procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
   TxoDebugMsg(hTxo,'InfoCloSch','// проверка работоспособности функции TxoGetInfoCloSch');
   var bufCloSch : TTxoInfoCloSch;
   if ( TxoGetInfoCloSch(hTxo, bufCloSch) )
   {
       TxoDebugMsg(hTxo,'InfoCloSch','PlansSch  ='+string(bufCloSch.cPlansSch ));
       TxoDebugMsg(hTxo,'InfoCloSch','Schet     ='+string(bufCloSch.Schet    ));
       TxoDebugMsg(hTxo,'InfoCloSch','DbSchet   ='+string(bufCloSch.DbSchet  ));
       TxoDebugMsg(hTxo,'InfoCloSch','SubSch    ='+string(bufCloSch.SubSch   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_1    ='+string(bufCloSch.wKau_1   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_2    ='+string(bufCloSch.wKau_2   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_3    ='+string(bufCloSch.wKau_3   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_4    ='+string(bufCloSch.wKau_4   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_5    ='+string(bufCloSch.wKau_5   ));
       TxoDebugMsg(hTxo,'InfoCloSch','wKau_6    ='+string(bufCloSch.wKau_6   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_1    ='+string(bufCloSch.cKau_1   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_2    ='+string(bufCloSch.cKau_2   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_3    ='+string(bufCloSch.cKau_3   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_4    ='+string(bufCloSch.cKau_4   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_5    ='+string(bufCloSch.cKau_5   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cKau_6    ='+string(bufCloSch.cKau_6   ));
       TxoDebugMsg(hTxo,'InfoCloSch','cPodr     ='+string(bufCloSch.cPodr    ));
       TxoDebugMsg(hTxo,'InfoCloSch','cGoNewPer ='+string(bufCloSch.cGoNewPer));
       TxoDebugMsg(hTxo,'InfoCloSch','cSaldoNm  ='+string(bufCloSch.cSaldoNm ));
       TxoDebugMsg(hTxo,'InfoCloSch','BuhSprNo  ='+string(bufCloSch.BuhSprNo ));
   }

   TxoDebugMsg(hTxo,'InfoDoc','// проверка работоспособности буфера buf');
   CurTiDkGal := buf.TiDkGal;
   CurSoprDoc := buf.cSoprDoc;
   TxoDebugMsg(hTxo,'InfoDoc','buf.cSoprHoz  ='+string(buf.cSoprHoz )+'  Журнал хозопераций           ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.TiDkGal   ='+string(buf.TiDkGal  )+'  Тип документа системный      ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.TiDk      ='+string(buf.TiDk     )+'  Тип документа пользоватеьский');
   TxoDebugMsg(hTxo,'InfoDoc','buf.cSoprDoc  ='+string(buf.cSoprDoc )+'  Документ                     ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.cHozOper  ='+string(buf.cHozOper )+'  ТХО                          ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.cPlansSch ='+string(buf.cPlansSch)+'  Регистр учета                ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.KodReg    ='+string(buf.KodReg   )+'  Код регистра учета           ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.cObor     ='+string(buf.cObor    )+'  Шаблон ТХО                   ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.DatOb     ='+string(buf.DatOb    )+'  Дата проводки                ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.cValut    ='+string(buf.cValut   )+'  Валюта проводки              ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.dBeginFp  ='+string(buf.dBeginFp )+'  Начало периода документа     ');
   TxoDebugMsg(hTxo,'InfoDoc','buf.dEndFp    ='+string(buf.dEndFp   )+'  Конец периода документа      ');

Re: Вопрос по TXO API

Добавлено: 11 май 2012, 10:09
zna
Разобрался сам: по ссылке bufCloSch.cSaldoNm находим текущую запись в рассчитанном сальдо, оттуда выуживаем искомую сумму.
Вопрос снят.