Как устроено ТХО?

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

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

PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Как устроено ТХО?

Сообщение PViP »

Народ помогайте разобраться! Срочно нужно понять как это ТХО устроено.

Вопрос1: почему подразделят процедуры и функции на циклические и не циклические?
К примеру:

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

 procedure TxoHeadClear (hTxo : longint);
и

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

 procedure TxoBodyClear (hTxo : longint);
Получается что есть два буфера, для циклической обработки и для нециклической?

Вопрос2: Раз 2 разных буфера, то почему функции заполнения сумм только циклические?

ВОпрос3: Делаю циклическое тхо API, по какому принципу разноска происходит? К примеру есть кау1: word((23), ы циклической обработке я устанавливаю тоже кау word(23). В своем интерфейсе в цикле делаю следующее

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

TxoBodyClear(hTxo);
for (i := 0; i < 5; inc(i)){
  Txobodyaddkau(htxo, wflkau_auto, 23 , comp('000100000000C751h')+i); 
  Txobodysetsum(htxo, 45678, 0, 0);
  TxoBodyInsert(hTxo);
}
Получается у меня должно создаться 5 проводок, потому что в буфере будет 5 разных значений kau.

Вопрос4: Есть ли сервер ТХО?
Последний раз редактировалось PViP 05 сен 2007, 10:04, всего редактировалось 1 раз.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

А Вы доку по ТХО API не пробовали читать...там вроде все довольно подробно расписано
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

НЕ циклическую не надо записывать, на то она и не циклическая.
Если вы определите пять режимов (режим-0) для подров, то ф буфер попадет только последнее.

А по циклической надо делать инсерт. Хотя в рамках одного инсерта сохраняется предыдущее правило.

Ну а сервер есть конечно - как же без него.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Den, Вы очень любознательны, Я читал доку! От куда бы я по вашему такие вопросы задавал!? Ответ вроде вашего, не несет смысловой нагрузки, а хотелось бы умных людей послушать и поучиться! Или есть дока которая описывает устройство ТХО?

Seybukan, по поводу сумм, сумма проводки заносится в обеих случаях(цикл и не цикл) одной функцией? Но при учете что функция перекачки сумм циклическая и пишет она в буфер "циклический", то как без инсерта это все будет работать, если по инсерту передаются данные серверу ТХО!?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Я это так представляю:
1. Буфера 2
2. По аналогии тех же накладных: шапка и строки спецификации. В Head достаточно один раз записать и для всех записей будет одно и то же значение
3. В результате получится не 5 проводок, а 5 записей в буфере. А чтоб получилось 5 проводок нужно делать циклическую обработку данной аналитики
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Nikos, по поводу 3 пункта - понимаю! По поводу 1 догадываюсь! А вот по поводу 2 совсем запутался, как мне сумму установить в не циклической обработке!?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

А разве если сумму через TxoBodySetSum добавить, то не будет работать?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Так нормально работает:
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
TxoHeadAddSchet(hTxo, wFlKau_Mode8, '710', '01');
TxoBodySetSum(hTxo,100,0,0);
TxoBodyInsert(hTxo);
}

В настройке ТХО просто вызываю &Vip[Obj:"TEST"] без всяких циклов, и счет и сумму ставит правильно
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

Как работает сервер ТХО прекрасно понимаю, а объяснить не могу....
Только на пальцах получиться.

Я вообще не понимаю как можно объяснить то - во что просто допереть надо.
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

Это надо юзать, один раз второй раз.
Просто прочитав доку ни фига не поймешь.
Вот когда попробуешь, только тогда поймешь глубинный смымсл всей этой ерунды.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Seybukan, млин, полностью с тобой согласен! :grin: Метод научного тыка - основной инструмент в познании "Галиктики"!

Nikos, так как ты написал работает - это я знаю, вопрос в логике, если нециклическая обработка идет, то зачем нам делать TxoBodyInsert(hTxo)? Я понимаю что сервер сам зделает агрегацию сумм, если мы несколько раз сделаем TxoBodyInsert(hTxo), но чушь получается! Моно прописать #define-ом свою функцию TxoHeadSetSum(hTxo,0,0,0), который будет подставлять код TxoBodySetSum(hTxo,0,0,0);TxoBodyInsert(hTxo); .
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Уважаемые, еще один вопрос, теперь говорим о версии 8.10.
В доке пишут что деректива

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

#Component "Component_Name"
просто необходимо чтоб данные брались, но на практике оказывается что это не так. Отсутствие директивы не запрещает доступ к данным, а при ее упоминании к примеру в видах

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

#Component "L_SoprDoc"
или

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

#Component "F_TxoApi"
или

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

#Component "L_PlPor"
компилятор выдает
SecondOrg.vip(20) Предупреждение: Компонент L_SOPRDOC не имеет ни одной таблицы в словаре, возможно ошибочно задано имя компонента (стр.20, поз.1 в SecondOrg.vip)
Interface Txo_TxoSecondOrg;


Смысл этой директивы в API?
Seybukan
Местный житель
Сообщения: 1357
Зарегистрирован: 29 мар 2005, 17:49
Откуда: СПб, ЭП-Аудит
Контактная информация:

Сообщение Seybukan »

TxoBodyInsert(hTxo) вставляет запись в буфер сервера ТХО.

Но назначить какой либо аналитики одного режима можешь сколько угодно раз в коде, но возьмется все равно последний....
А если буфер не чистить в цикле, то значения Txobodyaddkau, TxobodySetSum сохранятся предыдущие.

Да и вообще вы спрашиваете зачем надо делать TxoBodyInsert(hTxo).
Тогда я спрашу а зечем нам надо делать Insert в таблицу?

Разве непонятно что нецеклически может быть реализована только аналитика или счет субсчет, но в таком случае лучше использовать
ObjTxoMenuPlugin
ObjTxoExtractKauPlugin
Они как раз и позволяют сделать свой режим нециклической аналитики. В таком случае вы просто используете его в настройке ТХО, а сумму берете любую, любым стандартным идентификатором ТХО.

Сумма в данном функционале (ТХО API как таковом) всегда циклическая!
Только нециклически настроенный идентификатор вернет сумму итоговую по циклическому буферу.
Надобности суммы в нециклическом буфере просто НЕТ.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Seybukan, спасибо.

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

Сообщение zna »

Народ, помогите разобраться с Txo api в 810. Пытаюсь компилить код, который нормально проходил в 712, а здесь спотыкается на вызове первой же процедуры в StoreCycles, в данном случае это TxoDebugMsg:
...
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
...
TxoDebugMsg(hTxo, 'cod_sr aa', string(CurSoprDoc));// Здесь выдаётся ошибка
TxoBodyClear(hTxo);
...
}
...
Что ей надо?
Ответить