Страница 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
Алексей
Спасибо, всё получилось.
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 сами передаете, сделайте чтобы оно корректно перевычислялось. Вы сами туда передаете протухшие значения. Проверьте в отладчике что туда вы передаете?