TXOAPI - подстановка счета автоматически, и надо учесть КАУ

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

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

Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

TXOAPI - подстановка счета автоматически, и надо учесть КАУ

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

Хочу сделать алгоритм, который бы в дебет счета выбирал затратный счет по определенному алгоритму.
Сам счет мне заполнить удалось(TxoHeadAddSchet), а вот аналитика (пользовательская) к разным счетам разная и заполнить её мне никак не удается. Может быть есть какой-то способ?

З.Ы.: Алгоритм не циклический.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

У меня есть в одном апи :

TxoHeadAddSchet(hTxo, wFlKau_Mode1, '368','02');
TxoHeadAddKau(hTxo, wFlKau_mode1,10005,000000000000029Dh);

вроде работает все. Или у тебя какая то более сложная ситуевина ?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

у тебя аналитика жетская 10005... а у меня на один счет 10001 на друго 10002 на третий 10003.... счет заполняется а кау остается пустым...
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

по условию разве нельзя ?

case myschet of
...
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

да не в этом дело. это я делаю.
в самой галактике как в шаблоне указать какую аналитику по КАУ заполнять? Я же все 3 кау в КАУ1 не могу указать.

Если там указать КАУ от 25-го счета, то когда заполняется 25-й счет - то и КАУ заполнится. Как только счет идет 23 - КАУ пустое.
Если указать при настроке КАУ от 23-го счета - с точностью до наоборот...

Получается что если на счетах стоит КАУ, то заполнится он из ТХО АПИ только в том случае, если у всех возможных счетов (которые могут подставится) будет одинаковое КАУ...

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

Сообщение edward_K »

если аналитика на счетах разная, то без вариантов - на каждый счет своя проводка шаблона. а в апихе задаете параметр по какому счету считать. Желательно ее вызвать в формуле проводки, а не в ключах.
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

можно попробовать через пользовательские режимы
например, для счета - режим 0, для КАУ1 - режим 1
а алгоритм в зависимости от условий будет подсовывать нужный счет и КАУ
P.S. сам не проверял, только предполагаю
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Алексей писал(а):да не в этом дело. это я делаю.
в самой галактике как в шаблоне указать какую аналитику по КАУ заполнять? Я же все 3 кау в КАУ1 не могу указать.

Если там указать КАУ от 25-го счета, то когда заполняется 25-й счет - то и КАУ заполнится. Как только счет идет 23 - КАУ пустое.
Если указать при настроке КАУ от 23-го счета - с точностью до наоборот...

Получается что если на счетах стоит КАУ, то заполнится он из ТХО АПИ только в том случае, если у всех возможных счетов (которые могут подставится) будет одинаковое КАУ...

З.Ы.: Выход конечно есть, настроить столько шаблонов, сколько счетов и в алгоритме проверять считанный счет со счетом из шаблона, если все ок - цифру в сумму, если нет - 0.
Сделал новую ТХО. Задал у дебета счет /субсчет <режим1>, у кредита счет/субсчет <режим2>. В полях КАУ дебета и кредита все оставил по умолчанию (пустышки)
Далее в апи рисую :
....
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
var cur_sch , cur_sub :string ;
....

if runinterface('GetBuhSchet',1,0000000000000005h,cur_sch,cur_sub)<>CmCancel
{
Message('cur_sch='+cur_sch+' cur_sub='+cur_sub);
}

// выбираю 68/04 . У меня три уровня КАУ на нем....
case cur_sch of
'368': {
TxoHeadAddSchet(hTxo, wFlKau_Mode1,cur_sch,subschet);
TxoHeadAddKau(hTxo, wFlKau_mode1,10005,000000000000029Dh);
TxoHeadAddKau(hTxo, wFlKau_mode1,44,000100000000000Ch);
TxoHeadAddKau(hTxo, wFlKau_mode1,2, 9);
}
// выбираю 69/02. Тут два уровня КАУ. Первый совпадает, второй отличный ....третьего вообще нема.
'369': {
TxoHeadAddSchet(hTxo, wFlKau_Mode1,cur_sch,subschet);
TxoHeadAddKau(hTxo, wFlKau_mode1,10005,000000000000029Dh);
TxoHeadAddKau(hTxo, wFlKau_mode1,10015,281474976710673);
}

end;

TxoHeadAddSchet(hTxo, wFlKau_Mode2,'379','02');

}


Собрал, запустил на выполнение ТХО то с такой апи - корректно все встает в дебет и при первом выборе (68/04 )при втором (69/02)...и КАУ встают корректно.
Делал наспех, так что все тупо в лоб... или я опять тебя не понял :???:
LaaLaa

Сообщение LaaLaa »

Сегодня в аське меня уже спрашивали про это. Повторю еще раз.

Если аналитика не циклическая то пример Den-а будет работать даже в таком виде:

procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{
var cur_sch , cur_sub :string ;
....

if runinterface('GetBuhSchet',1,0000000000000005h,cur_sch,cur_sub)<>CmCancel
{
Message('cur_sch='+cur_sch+' cur_sub='+cur_sub);
}

TxoHeadAddSchet(hTxo, wFlKau_Mode1,cur_sch,subschet);
TxoHeadAddKau(hTxo, wFlKau_mode1,10005,000000000000029Dh);
TxoHeadAddKau(hTxo, wFlKau_mode1,44,000100000000000Ch);
TxoHeadAddKau(hTxo, wFlKau_mode1,2, 9);
TxoHeadAddKau(hTxo, wFlKau_mode1,10015,281474976710673);

}


В окне настройки ТХО для КАУ ничего при этом указывать не нужно. Только <режим 1> для счета. Алгоритм ТХО сам разберется куда какую аналитику поставить.

Но это сработает только для нециклических КАУ. Если по документу нужно сформировать много проводок в цикле, то тогда действительно проблема. Перечень возможных аналитик ограничен 6-ю для каждой стороны проводки, и 10-ю в полях циклическая обработка. В окне настройки ТХО также нужно переключить формат Alt+S.
LaaLaa

Сообщение LaaLaa »

Доработки по снятию ограничения 6+10 для циклической обработки в ТХО когдато планировались. В словаре Галактки 8.1 для этого даже новые таблицы были созданы. Но Алгоритм ТХО так и не доработали.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Спасибо, всё получилось. :cool:
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: TXOAPI - подстановка счета автоматически, и надо учесть

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

есть к примеру три документа... у всех трёх документов разные КАУ1
в ТХО АПИ алгоритме КАУ1 прописывается как TxoHeadAddKau т.к. к документу много проводок, но у всех КАУ одинаковая в пределах одного док-та.

Если пакетно привязать ТХО ко всем трём документам (пометить инсертом и выбрать ТХО) то КАУ1 заполняется данными из первого документа! Если же привязывать ТХО по одному к документу (без пометки инсерта а пройтись и три раза выбрать ТХО) то КАУ1 заполняется корректно

Вопрос такой: это моя ошибка или ошибка атлантиса? по сути, я думал что TxoHeadAddKau распространяется только на проводки одного документа, но не мог предположить что на все следующие ... т.е. при обработке 2-го и 3-го документов используется заполненный ранее буфер 1-го документа
Как решить задачу - перенести заполнение КАУ в циклическую обработку или как то очищать заполненный до этого буфер?
З.Ы.: функция TxoHeadClear(hTxo) вызывается в самом начале работы функции StoreCycles
LaaLaa

Re: TXOAPI - подстановка счета автоматически, и надо учесть

Сообщение LaaLaa »

Внутри сервера ТХО коллекция HeadKau которая связана с функциями TxoHeadClear TxoHeadAddKau очищается для каждого нового документа. Даже если вы их пометили плюсом к обработке. Проблема вряд-ли в этих функциях.

Скорее всего проблема в параметрах которые вы туда подаете. Скорее всего вы где-то в своем коде вызвали функцию TxoAllowRecallStoreCycles. Вызов этой функции дает сигнал не пере создавать ваш объект на каждый документ при обработке пачки документов. Если вызов этой функции TxoAllowRecallStoreCycles у вас присутствует вы сами должны позаботиться об получении актуальных данных для каждого документа.

В частности т.к. StoreCycles вызывается многократно без пересоздания объекта некоторые глобальные переменные или позиции в таблицах могут быть взяты из прошлого документа.

PS: Вспомните задачу: "Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины? Думаете одно? Hичего подобного. Hикто же не знает сколько у него уже было яблок до этого. Мораль - обнуляйте переменные!!! "
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: TXOAPI - подстановка счета автоматически, и надо учесть

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

ой, а я совсем забыл про эту волшебную функцию, TxoAllowRecallStoreCycles, действительно стоит.
получается что эту функцию можно применять только если уверен на 100% что headkau совпадают, верно?
LaaLaa

Re: TXOAPI - подстановка счета автоматически, и надо учесть

Сообщение LaaLaa »

Нет, просто то что в HeadKau сами передаете, сделайте чтобы оно корректно перевычислялось. Вы сами туда передаете протухшие значения. Проверьте в отладчике что туда вы передаете?
Ответить