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

Оперативный контур "Задолженность контрагента "?

Добавлено: 26 авг 2003, 12:10
Spvl
Подскажите
Существует ли функция, которая вернула бы, задолженность контрагента по оперативному контуру на заданную дату.

Re: Оперативный контур

Добавлено: 26 авг 2003, 12:26
forummaster
<HTML>Существует объектный интерфейс для этой цели GKonBalObj с функцией GetKontrBalance.
function GetKontrBalance ( _c1: comp; _d1: date; NaklOnlyWas: word; var BalR: double; var BalV: double; var BalB: double ): boolean;
/*
_c1, // nRec контрагента
_d1, // дата, на которую надо рассчитать баланс
NaklOnlyWas, // 1-если надо только по проведенным накладным
BalR, // баланс в национальной валюте
BalV, // баланс в валюте для отчетов
BalB // баланс в базовой валюте
*/

Пример использования :

var gkb : GKonBalObj;

...
GetVipRef(gkb,'GKonBal');
Result := gkb.GetKontrBalance( katOrg.nRec, date( 01, 01, 2100), wGetTune('Rep.SoprKontr'), BalR, BalV, BalB );</HTML>

Re: Оперативный контур

Добавлено: 26 авг 2003, 13:24
Spvl
Огромное спасибо....
Но нельзя ли подробней.
Превый раз столкнулся с объектным интерфейсом
прочитал все в документации но откомпелировать не получается.
var gkb:GKonBalObj;
ошибка:Ожидался тип параметра.

Re: Оперативный контур

Добавлено: 26 авг 2003, 13:52
Deinis

Re: Оперативный контур

Добавлено: 26 авг 2003, 14:22
Spvl
Разобрался ....
Благодарен всем за участие!

Добавлено: 02 дек 2005, 12:49
Serrenium
А я не разобрался. Не работает. Выводит нули и все тут.

Код: Выделить всё

ObjInterface GKonBalObj; 
function GetKontrBalance (_c1 : comp; _d1 : date; NaklOnlyWas: word; 
var BalR: double; var BalV:double; var BalB: double): boolean; 
end;

var GKB : GKonBalObj;
balr,balv,balb:double;

GetVipRef(GKB,'GKonBal');
GKB.GetKontrBalance(kontr_nrec,d1,0,balr,balv,balb);
message(balr+' '+balv+' '+balb);
Получаю нули. Что может быть не так? Gal 712

Добавлено: 02 дек 2005, 14:58
WiRuc
А у вас оперативный расчет сальдо контрагента ведется (есть такая настройка)? Если нет, то работать не будет.

Добавлено: 04 фев 2010, 14:04
RAJAH
Искал как сальдо по контрагенту посчитать, наткнулся на этот топик.
Что должно в этой настройке "Накладные в отчете "Расчеты с контрагентами"" стоять, что бы посчиталось: "все" или "только проведённые"? Пробовал код, который где-то Морзе приводил, использовать, но функция выдаёт false и, соответственно, баланс равен 0.

Код: Выделить всё

#define ComponentVersion

ObjInterface GKonBalObj;
function GetKontrBalance (_c1 : comp; _d1 : date; NaklOnlyWas: word;
var BalR: double; var BalV:double; var BalB: double): boolean;
end;

Interface GetBlockForCorgDO, AlwaysReturn;

var DoNrec : comp;
BalR, BalV, BalB, MaxDolgR : double;
GKB : GKonBalObj;
Block : Boolean;

Create View as select * from grnal;

browse www
  fields
    grnal.nrec;
end;

HandleEvent
cmInit :
{
  block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 0, BalR, BalV, BalB);
  Message(block+'*'+BalR+'*'+BalV+'*'+BalB);
  Abort;
  exit;
};
End;

#undef ComponentVersion
END.
Может, какие-то вихи нужны? 8.1, декабрьские патчи.

Добавлено: 11 фев 2010, 10:02
RAJAH
И все молчат...

Добавлено: 11 фев 2010, 11:06
KATZ
Вот GKonBal.vih (файл 2006-го года, но, скорее всего, подойдет, т. к. информация в текущем L_KontrBal.chm соответствует VIH-у):

Код: Выделить всё

//******************************************************************************
//                                                      (c) корпорация Галактика
// Галактика 7.12 - Логистика
// Подсчет баланса взаиморасчетов с контрагентом
//******************************************************************************

#ifndef __GKonBal_VIH__
#define __GKonBal_VIH__

#ifdef ComponentVersion
#component "L_KONTRBAL"
#end

//******************************************************************************
#doc
 Подсчет баланса взаиморасчетов с контрагентом
#end

ObjInterface GKonBalObj;
//------------------------------------------------------------------------------
#doc
 Инициализация переменных для подсчет баланса взаиморасчетов с контрагентом
#end
procedure InitTuneParams; // Внимание!!! InitTuneParams необходимо вызвать сразу после инициализации!!!
//------------------------------------------------------------------------------
#doc
 Подсчет баланса взаиморасчетов с контрагентом
#end

Function GetKontrBalance (
                _c1          : comp;    // код контрагента
                _d1          : Date;    // дата, на которую надо рассчитать баланс
                NaklOnlyWas  : word;    // 1-если надо только по проведенным накладным
                var BalR     : double;  // баланс в национальной валюте
                var BalV     : double;  // баланс в валюте для отчетов
                var BalB     : double   // баланс в базовой валюте
         ): boolean;
//------------------------------------------------------------------------------
end;

//******************************************************************************

VipInterface GKonBal implements GKonBalObj
#ifdef ATL51
Licensed (FREE)
#end
;

//******************************************************************************

#end
Предлагаю использовать этот VIH + свой интерфейс под него слегка поменять...

Добавлено: 11 фев 2010, 17:22
RAJAH
Спасибо! Только меня смущает, что вначале выскакивает ExObjIfcNoInit, хотя функция возвращает true и что-то считает. Это сильно страшно?

Код: Выделить всё

#define ComponentVersion
#include GKonBal.vih

Interface GetBlockForCorgDO, AlwaysReturn;

var
  DoNrec : comp;
  BalR, BalV, BalB, MaxDolgR : double;
  GKB : GKonBalObj;
  Block : Boolean;

Create View as select * from grnal;

browse www
  fields
    grnal.nrec;
end;

HandleEvent
cmInit :
{
  gkb.InitTuneParams;
  GetVipRef(GKB,'GKonBal');
  block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB);
  Message(block+'*'+BalR+'*'+BalV+'*'+BalB);
  Abort;
  exit;
};
End;

#undef ComponentVersion
END.

Добавлено: 11 фев 2010, 17:57
KATZ
Лучше так попробуйте:

Код: Выделить всё

GKB: GKonBal;
. . .
GKB.InitTuneParams; 
// Без GetVipRef(GKB,'GKonBal'); 
block:=GKB.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB); 
. . .

Добавлено: 12 фев 2010, 08:56
RAJAH
Нет. Так не считает. Опытным путём подобрал эту последовательность:

Код: Выделить всё

  GetVipRef(GKB,'GKonBal');
  gkb.InitTuneParams;
  block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB);

Добавлено: 12 фев 2010, 11:12
galover
а так?

Код: Выделить всё

gkb : GKonBalObj; // cсылка на obj не на vip
GetVipRef(gkb, 'GKonBal');
gkb.InitTuneParams();
block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB);

Добавлено: 12 фев 2010, 11:29
RAJAH
Так ведь и есть, секцию var я просто не привёл. Считается.