TXO для закрытия счета

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

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

Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

TXO для закрытия счета

Сообщение Sytin »

Кто нибудь писал TXO для закрытия счетов? Если да, скиньте пожалуйсто примерчик.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение 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
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Сообщение Sytin »

Спасибо, буду разбираться. У меня просто доки толковой нет...
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Сообщение Sytin »

Большое спасибо!
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Сообщение Sytin »

Еще такой вопрос. Я закрываю счет 90.04. В корреспонденции ТХО я указываю дебет 90.04, а кредит с режимом 0. В алгоритме я вывожу кредит с режимом 0, а как вывести аналитику для кредита (настроить режим в ТХО невозможно)? В каком режиме? Надо ли указывать ее в циклической обработке?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1. Если без ТХОАПИ, то закрываемый счет должен быть в кредите всегда! Аналитику из сальдо брать по ключу KAU по дебету. Если направление проводки должно быть всегда обратное , то играйтесь со знаком суммы(для кредитового сальдо &SUm будет отрицательным).
2. Насчет аналитики все как обычно. Если проводки идут на счета с одинаковой аналитикой, то выбираете сначала первый из них явно, а потом уже ставите режимы аналитик(в том числе и на счет). Если с разной, то на каждую группу придется настраивать свою проводку и предусматривать отбор по каким то параметрам. Циклическую лучше поставить - так оно как то надежней.
Может LaaLaa скажет чего то новенького? вроде собирались переделать.
LaaLaa

Сообщение LaaLaa »

Если для закрытия счета вам на каждую позицию сальдо нужно сделать только ону проводку. То это не циклический алгоритм. Тогда вам нужно в TXO API за закачки ссылок использовать функции TxoHeadAddSchet и TxoHeadAddKau. При этом и счет и аналитику нужно закачивать с одним режимом (например flKau_Mode0). Затем а нвстройке ТХО просто указать <режим 0> для счета и субсчета, для аналитики ничего не заполнять. Будет вам счастье. Алгоритм ТХО автоматом расставит аналитику в провоке по своим местам.
LaaLaa

Сообщение LaaLaa »

Если вам нужно сделать для каждой позиции сальдо более чем одну проводку. Типа распределить по некоторой пропорции. То это алгоритм циклический. Тогда для закачки ссылок нужно использовать функции TxoBodyAddSchet и TxoBodyAddKau. При этом в настройке ТХО уже нужно будет указывать и режим для счета, и режим для всех аналитик, и заполнять поля "Циклическая обработка по". Чтобы задать аналитику в этом случае - нужно окно настройки ТХО переключить в расширенный режим (см. локальное меню окна - [Alt+S]).
Sytin
Постоянный обитатель
Сообщения: 159
Зарегистрирован: 28 сен 2005, 19:48
Откуда: mos
Контактная информация:

Сообщение Sytin »

Спасибо большое! Все получилось.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Сообщение 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
...
LaaLaa

Сообщение LaaLaa »

Проверьте какой результат выдает функция TxoGetInfoCloSch.

Возможно у Вас протухший TxoApi.vih файл. Возможно описания типов полей структуры TTxoInfoCloSch не соответствует текущей версии. В одной из версии менялись размеры строковых полей.

Что TxoApi.vih и прочие файлы достаточно свежие.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Сообщение zna »

LaaLaa, функция TxoGetInfoCloSch выдаёт false. Файл TxoApi.vih и остальные - от ноября 2008г., т.е. достаточно свежие. :-(
LaaLaa

Сообщение 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
или наоборот устаревшая галактика а файл новый.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

LaaLaa
а можете пояснить что за языковая конструкция
pTxo^.BodyIns_ResFlags
т.е. что такое ^? не нашел в vipprogr описания
и вот это не понял, что за конструкция
with PCloseSchTXOProc(pTxo)^ do begin
end;
где почитать про with do begin?
Ответить