Страница 1 из 2
TXO для закрытия счета
Добавлено: 18 фев 2009, 20:07
Sytin
Кто нибудь писал TXO для закрытия счетов? Если да, скиньте пожалуйсто примерчик.
Добавлено: 19 фев 2009, 03:02
edward_K
доку читайте . там все нормально написано.
маленького нет под рукой.
вот вам затравка
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
var
bufcloSch: TTxoInfoCloSch ;
k :word ;
wsu,wsud :double ;
wkl_deb :word ;
{
set CurSoprDoc := buf.cSoprDoc;
set CurSoprHoz := buf.cSoprHoz;
set CurDatOb := buf.DatOb;
set CurTidk := buf.TidkGal;
set MyPlansNo:= buf.cplanssch ;
ParamParser(hTxo);
TxoAllowRecallStoreCycles(hTxo);
if getfirst planssch=0
{ wschk:=planssch.kod+'10'
wschd:=planssch.kod+wsch
}
else
{ message('')
exit ;
}
TxoGetInfoCloSch(htxo,bufcloSch)
set c_groupmc := bufcloSch.cKau_3 ;
set c_saldonm := bufcloSch.csaldonm
Добавлено: 19 фев 2009, 21:08
Sytin
Спасибо, буду разбираться. У меня просто доки толковой нет...
Добавлено: 20 фев 2009, 00:00
LaaLaa
Добавлено: 20 фев 2009, 17:11
Sytin
Большое спасибо!
Добавлено: 22 фев 2009, 11:54
Sytin
Еще такой вопрос. Я закрываю счет 90.04. В корреспонденции ТХО я указываю дебет 90.04, а кредит с режимом 0. В алгоритме я вывожу кредит с режимом 0, а как вывести аналитику для кредита (настроить режим в ТХО невозможно)? В каком режиме? Надо ли указывать ее в циклической обработке?
Добавлено: 22 фев 2009, 12:22
edward_K
1. Если без ТХОАПИ, то закрываемый счет должен быть в кредите всегда! Аналитику из сальдо брать по ключу KAU по дебету. Если направление проводки должно быть всегда обратное , то играйтесь со знаком суммы(для кредитового сальдо &SUm будет отрицательным).
2. Насчет аналитики все как обычно. Если проводки идут на счета с одинаковой аналитикой, то выбираете сначала первый из них явно, а потом уже ставите режимы аналитик(в том числе и на счет). Если с разной, то на каждую группу придется настраивать свою проводку и предусматривать отбор по каким то параметрам. Циклическую лучше поставить - так оно как то надежней.
Может LaaLaa скажет чего то новенького? вроде собирались переделать.
Добавлено: 23 фев 2009, 12:05
LaaLaa
Если для закрытия счета вам на каждую позицию сальдо нужно сделать только ону проводку. То это не циклический алгоритм. Тогда вам нужно в TXO API за закачки ссылок использовать функции TxoHeadAddSchet и TxoHeadAddKau. При этом и счет и аналитику нужно закачивать с одним режимом (например flKau_Mode0). Затем а нвстройке ТХО просто указать <режим 0> для счета и субсчета, для аналитики ничего не заполнять. Будет вам счастье. Алгоритм ТХО автоматом расставит аналитику в провоке по своим местам.
Добавлено: 23 фев 2009, 12:10
LaaLaa
Если вам нужно сделать для каждой позиции сальдо более чем одну проводку. Типа распределить по некоторой пропорции. То это алгоритм циклический. Тогда для закачки ссылок нужно использовать функции TxoBodyAddSchet и TxoBodyAddKau. При этом в настройке ТХО уже нужно будет указывать и режим для счета, и режим для всех аналитик, и заполнять поля "Циклическая обработка по". Чтобы задать аналитику в этом случае - нужно окно настройки ТХО переключить в расширенный режим (см. локальное меню окна - [Alt+S]).
Добавлено: 24 фев 2009, 11:50
Sytin
Спасибо большое! Все получилось.
Добавлено: 10 сен 2009, 15:56
zna
Здравствуйте, уважаемые. Подскажите, пож., в чём причина неработоспособности объекта TTxoInfoCloSch: не читаются, например свойства cKau_1, сPodr?
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
{ TxoAllowRecallStoreCycles(hTxo);
CurChozoper:= buf.cHozoper;
CurObor := buf.cObor;
var info: TTxoInfoCloSch;
TxoGetInfoCloSch(hTxo,info);
cKau1:=info.cKau_1; // Здесь выдаётся 0
cpodr:=info.cPodr; // Тоже 0
...
Добавлено: 10 сен 2009, 17:35
LaaLaa
Проверьте какой результат выдает функция TxoGetInfoCloSch.
Возможно у Вас протухший TxoApi.vih файл. Возможно описания типов полей структуры TTxoInfoCloSch не соответствует текущей версии. В одной из версии менялись размеры строковых полей.
Что TxoApi.vih и прочие файлы достаточно свежие.
Добавлено: 11 сен 2009, 16:29
zna
LaaLaa, функция TxoGetInfoCloSch выдаёт false. Файл TxoApi.vih и остальные - от ноября 2008г., т.е. достаточно свежие.
Добавлено: 11 сен 2009, 16:50
LaaLaa
Вот смотрите сами реализацию этой функции false будет
если pTxo неправильная ссылка
если TiDkGal <> 777 запустили не из закрытия счетов
если переданная запись буфера pBufCloSch не является переменной или на подходит по размеру
Код: Выделить всё
function TxoGetInfoCloSch(pTxo : PTXOProc_Minimum; pBufCloSch : PField) : boolean;
begin
result := false;
// сработает только из закрытия счетов
if not Assigned(pTxo) then exit;
if pTxo^.InfoDoc.Ob_TiDkGal <> 777 then exit;
// pBufCloSch должно быть Record TTxoInfoCloSch
if not Assigned(pBufCloSch) then exit;
if not pBufCloSch^.Verify then exit;
if pBufCloSch^.DataType <> ftRecord then exit;
pTxo^.BodyIns_ResFlags := pTxo^.BodyIns_ResFlags or rfCloSchInfo;
with PCloseSchTXOProc(pTxo)^ do begin
// размер и количество полей долно совпадать
if pBufCloSch^.PasDataSize <> sizeof(bufCloSch) then exit;
// про количество поправка : массив - это одно поле
pBufCloSch^.PasPut (@bufCloSch, sizeof(bufCloSch));
end;
result := true;
end;
размер буфера TTxoInfoCloSch может не сойтись если типы составляющих его полей tSchet3 tSchet19 tSubSch tNoDok не верно определены
для 8.1 должно быть в dictypes.def должно быть
Код: Выделить всё
tNoDok = String [20], // Номер документа
tSchet3 = String [21], // Счет
tSchet19 = String [20], // Счет
tSubSch = String [21], // Субсчет
в старых версиях галактики эти типы были на пару символов меньше
более чем у верен что у вас устаревший файл dictypes.def
или наоборот устаревшая галактика а файл новый.
Добавлено: 11 сен 2009, 17:13
galover
LaaLaa
а можете пояснить что за языковая конструкция
pTxo^.BodyIns_ResFlags
т.е. что такое ^? не нашел в vipprogr описания
и вот это не понял, что за конструкция
with PCloseSchTXOProc(pTxo)^ do begin
end;
где почитать про with do begin?