Страница 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 я просто не привёл. Считается.