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

Дата в циклической обработке TXOApi

Добавлено: 24 июл 2013, 14:05
spark
Добрый день!

Есть задача по определенному алгоритму с помощь ТХО создавать несколько одинаковых проводок с разной датой.
Взял пример TXOApi и сделал следующее:

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

/*
 ╔═══════════════════════════════════════════════════════════════════════════╗
 ║                     (c) 1994,2000 корпорация ГАЛАКТИКА                    ║
 ║ Проект        : ГАЛАКТИКА                                                 ║
 ║ Система       : Бухгалтерский контур                                      ║
 ║ Версия        : 5.8x                                                      ║
 ║ Назначение    : Пример использования TXO API                              ║
 ║ Ответственный : Ларин Михаил Николаевич (larin@galaktika.by)              ║
 ║ Параметры     : есть                                                      ║
 ╚═══════════════════════════════════════════════════════════════════════════╝
*/

#include TxoApi.vih

// Начиная с версии 5.85 в наименовании интерфейса
// обязательно использовать префикс "Txo_"

// Указываем, что наш интерфейс реализует расчет идентификатора ТХО
VipInterface Txo_KatSoprDemo implements ObjTxoIdentPlugin;

// Простой интерфейс для обработки накладной
Interface Txo_KatSoprDemo;

// Логическая таблица, описывает стуктуру накладной
create view DemoView
var
  CurTiDkGal : word;
  CurSoprDoc : comp;
  P1         : String;
  P2         : String;
as select
  *
from
  Katsopr,
  SpSopr
where
((
  CurSoprDoc == KatSopr.Nrec    and
  CurSoprDoc == SpSopr.cSopr
));


function GetInfo : string;
{
   GetInfo := 'Пример использования TXO API для накладных';
}

function ParamMaster : string;
{
   Message(''#3'здесь должен быть вызов окошка, чтобы помочь пользователю'#13+
           ''#3'заполнить строку дополнительных параметров идентификатора:'#13+
           ''#3'[Param1:"xxx"][Param2:"yyy"]');
   ParamMaster := '[Param1:"xxx"][Param2:"yyy"]';
}


procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
   // установить ограничения на логическую таблицу
   CurTiDkGal := buf.TiDkGal;
   CurSoprDoc := buf.cSoprDoc;

   // заполнить нециклическую аналитику
   if (getfirst KatSopr = tsOk)
   {
      TxoHeadAddKau(hTxo, 0,1,KatSopr.cOrg);     // организация
      TxoHeadAddKau(hTxo, 0,2,KatSopr.cPodrTo);  // подразделение
   }

   // построить выгрузку циклов
      // очистить промежуточный буффер
      TxoBodyClear(hTxo);

      TxoBodyAddDate(hTxo,3,To_Date(1,1,2013))

      // закачать суммы
      TxoBodySetSum(hTxo, 10,10,10);

      // добавить в выгрузку
      TxoBodyInsert(hTxo);

      TxoBodyClear(hTxo);

      TxoBodyAddDate(hTxo,3,To_Date(2,2,2013))

      // закачать суммы
      TxoBodySetSum(hTxo, 11,11,11);

      // добавить в выгрузку
      TxoBodyInsert(hTxo);


}
end.
Все хорошо компилируется.
ТХО настроена вот так:
Изображение

А на выходе получается одна проводка на сумму 21 и без даты!

Что я делаю неправильно?

Re: Дата в циклической обработке TXOApi

Добавлено: 24 июл 2013, 15:00
Den
Хм..прямо как у Вас действительно не пашет. Но сделал :

<режим 1 - дата>

...

TxoBodyAddDate(hTxo,wflKau_Mode1,To_Date(1,1,2013))
TxoBodyAddDate(hTxo,wflKau_Mode1,To_Date(2,2,2013))


и почему то заработало (т.е. нарезало две проводки). в шаблоне, правда, несколько другие счета выбрал..но не суть наверное.

Re: Дата в циклической обработке TXOApi

Добавлено: 24 июл 2013, 15:10
edward_K
Ну да wflKau_Mode1 это не 1, а 161 8) . Есть еще несколько скрытых от настройки режимов - в inc смотрите, а можно еще и свои добавить.

Re: Дата в циклической обработке TXOApi

Добавлено: 24 июл 2013, 15:13
spark
Den писал(а):Хм..прямо как у Вас действительно не пашет. Но сделал :

<режим 1 - дата>

...

TxoBodyAddDate(hTxo,wflKau_Mode1,To_Date(1,1,2013))
TxoBodyAddDate(hTxo,wflKau_Mode1,To_Date(2,2,2013))


и почему то заработало (т.е. нарезало две проводки). в шаблоне, правда, несколько другие счета выбрал..но не суть наверное.
Гениально! Неистово плюсую! Спасибо! =)

Re: Дата в циклической обработке TXOApi

Добавлено: 01 авг 2013, 11:24
Алексей
Спрошу здесь: как формируются проводки... в смысле порядок их отображения после формирования? я сделал индекс, формирую проводки согласно индексу нарастанием, сделал вывод в лог.файл, таблица идет как надо, а на выходе проводки получаются в разнобой... почему?

Re: Дата в циклической обработке TXOApi

Добавлено: 01 авг 2013, 11:48
edward_K
Совершенно не по теме и без деталей.
Механизм слегка отличается при закрытии счетов и в остальных случаях.
В любом случае сначала заполняться временная таблица oborotnm - вопрос когда она пишется в oborot - после отработки всей ТХО(закрытие), или после обработки каждой операции.
Я здесь как-то писал как заполнить содержание - в последней операции добавляете пустую проводку с вызовом TXO_API. Что касается отображения где то, то с каждым случаем нужно
разбираться отдельно - getifccurrentfieldname хотя бы приводите. Можете в консоле управления посмотреть лог.таблицу фейса (как правило это встроенный) - от ваших индексов как то ничего не зависит.

Re: Дата в циклической обработке TXOApi

Добавлено: 01 авг 2013, 12:04
Алексей
тема - ТХО Апи
Эдвард, не понял, что Вам непонятно, и getifccurrentfieldname чего вы хотите чтобы я вывел?

попробую ещё раз :)

есть ТХО Апи, которое наполняет КАУ1 какого-либо счета. Я наполняю его по порядку, т.е. сначала идут проводки с КАУ1=1 потом КАУ1=2 потом КАУ1=3 и т.д.... а на выходе получаю проводки
КАУ1=2
КАУ1=3
КАУ1=1

а хочу
КАУ1=1
КАУ1=2
КАУ1=3

видимо Вы верно пишите, сначала они идут в буфер, а уже из буфера идут каким-то им известным образом.
т.е. сортировку программно нет смысла задавать... выход один - делать столько шаблонов, сколько вариантов и в них уже отсеивать по фильтру. но так не хочется...

Re: Дата в циклической обработке TXOApi

Добавлено: 01 авг 2013, 12:21
edward_K
1. Эта конкретно про дату 8)
2. Ctrl+F4 на поле типа дата оборотов в том фейсе, где не та сортировка. Все что приведет функция сюда. Сортировка по кау маловероятна - надо смотреть тот индекс, который используется при просмотре. Если ключ совпадает, то внутри него будет скорей всего по nrec - но смотрим про oborotnm.

Re: Дата в циклической обработке TXOApi

Добавлено: 01 авг 2013, 12:38
Алексей
ну просмотр то я думал тупо по нреку проводки... потому и давал их в своём порядке, думал так же и выйдут в просмотр
интересно то что формируется бывает
5
5
3
1
5
2
почему пятёрки не подряд... раз по нрекам... ай. видимо гиблое занятие :) по фиг на них тогда.

Re: Дата в циклической обработке TXOApi

Добавлено: 01 окт 2015, 13:30
savov
Доброго времени суток!
А у меня упорно не формируется дата проводки.

Делаю

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

            Sdate:=piExAttr.sGetAttr( 1109, t1.katsopr.nrec, 'Дата скидки  за объем');
            DatePr:=To_Date(substr(SDate,1,2), substr(SDate,4,2),substr(SDate,7,4)); 
            Message(DatePr,0);  //   в этой точке мессага выдает правильную дату
            TxoBodyAddDate(hTxo,  wFlKau_Mode1, datepr);

// формируем Д 90-01 - Кр 62-03
            TxoBodyAddSchet(hTxo,wFlKau_Mode0,SchO,'01');
            TxoBodyAddSchet(hTxo,wFlKau_Mode1,SchK,'03');

            TxoBodyAddKau(hTxo,  wFlKau_Mode0, cgKau_KatOrg , cmpItem);  //Здесь формируется все правильно

В настройке ТХО ставлю <режим 1 - дата>. Не формируется!!!! Галактика 8.10

Re: Дата в циклической обработке TXOApi

Добавлено: 01 окт 2015, 13:50
edward_K
циклическую не забыли поставить?

Re: Дата в циклической обработке TXOApi

Добавлено: 01 окт 2015, 14:10
savov
Вот черт, действительно забыл. Спасибо