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

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

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

З.Ы.: Алгоритм не циклический.

Добавлено: 14 янв 2009, 11:25
Den
У меня есть в одном апи :

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

вроде работает все. Или у тебя какая то более сложная ситуевина ?

Добавлено: 14 янв 2009, 11:29
Алексей
у тебя аналитика жетская 10005... а у меня на один счет 10001 на друго 10002 на третий 10003.... счет заполняется а кау остается пустым...

Добавлено: 14 янв 2009, 11:45
Den
по условию разве нельзя ?

case myschet of
...

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

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

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

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

Добавлено: 14 янв 2009, 12:23
edward_K
если аналитика на счетах разная, то без вариантов - на каждый счет своя проводка шаблона. а в апихе задаете параметр по какому счету считать. Желательно ее вызвать в формуле проводки, а не в ключах.

Добавлено: 14 янв 2009, 15:41
sim
можно попробовать через пользовательские режимы
например, для счета - режим 0, для КАУ1 - режим 1
а алгоритм в зависимости от условий будет подсовывать нужный счет и КАУ
P.S. сам не проверял, только предполагаю

Добавлено: 14 янв 2009, 23:35
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)...и КАУ встают корректно.
Делал наспех, так что все тупо в лоб... или я опять тебя не понял :???:

Добавлено: 15 янв 2009, 03:47
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.

Добавлено: 15 янв 2009, 03:52
LaaLaa
Доработки по снятию ограничения 6+10 для циклической обработки в ТХО когдато планировались. В словаре Галактки 8.1 для этого даже новые таблицы были созданы. Но Алгоритм ТХО так и не доработали.

Добавлено: 15 янв 2009, 06:04
Алексей
Спасибо, всё получилось. :cool:

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

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

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

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

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

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

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

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

PS: Вспомните задачу: "Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины? Думаете одно? Hичего подобного. Hикто же не знает сколько у него уже было яблок до этого. Мораль - обнуляйте переменные!!! "

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

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

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

Добавлено: 06 мар 2012, 09:53
LaaLaa
Нет, просто то что в HeadKau сами передаете, сделайте чтобы оно корректно перевычислялось. Вы сами туда передаете протухшие значения. Проверьте в отладчике что туда вы передаете?