Страница 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?