Вопрос по TXO API

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

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

Ответить
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Вопрос по TXO API

Сообщение Sytin »

У меня есть ТХО, которая обрабатывает некоторые данные по таблице соответствия. Таблица соответствия находится в ексель-файле. Получается, что для каждой проводки вызывается ТХО и соответственно происходит загрузка ексель - файла во временную таблицу, что естественно занимает много лишнего времени... Можно ли как-нибудь сделать так чтобы таблица загружалась только при первом запуске ТХО?
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Сообщение ilshat »

может таблицу в текстовик загнать? :smile:
LaaLaa

Сообщение LaaLaa »

Можно закешировать содержимое эскель файла в таблицу в памяти

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

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

  table struct MyRef
  (
    ...
  );

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

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

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

     // перекачать данные из экселя в память
   }
3) далее по алгоритму использовать закаченные данные
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Сообщение Sytin »

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

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

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

Есть ли возможность при написании алгоритма в кредит счета заполнить либо счет (по условию) либо поставить режим "выбор из каталога".
что-то я так поглядел и не понял... в настройке шаблона же сразу пишешь либо "выбор из каталога" либо "режим 0" к примеру... а хотелось бы этот режим определить программно, возможно?
З.Ы.: дело в том что я не знаю какой кредит ставить... знает только бухгалтер. и нигде в базе инфы нет.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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

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

Сообщение Den »

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

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

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

скажем так, это ТХО к документу на внутреннее перемещение в спец.одежде, когда человек переходит с одного подразделения в другое.
если срок носки позиции СФО меньше года, то в дебет счет пишем затратный счет подразделения нового, а вот в кредит затратный счет старого подразделения, и вот тут непонятно какой счет подставлять и какой цех, т.к. по кодировкам и аналитикам нет полной аналогии...
заставлять писать ШЗ кредита в какой-нибудь атрибут? в принципе можно...
и всё-таки, ответа на мой вопрос не последовало: можно ли программно изменять настройку шаблона, чтобы заполнялось либо автоматом либо давало возможность пользователю выбирать из каталога ?
poneatovski
Постоянный гость
Сообщения: 60
Зарегистрирован: 25 июн 2009, 14:59

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

Сообщение poneatovski »

Я бы настроил ТХО с несколькими проводками с заранее указанными счетами\субсчетами, а для формирования той или иной проводки при привязке ТХО я написал бы ТХО АПИ, которая бы анализировала срок использования спецодежды.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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

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

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

ясн. ладно, завтра ещё подумаю, предложу варианты. так то обычно мало перемещений туда-сюда по цехам...
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

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

Сообщение 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   )+'  Конец периода документа      ');
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

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

Сообщение zna »

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