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

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

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

Spvl
Постоянный обитатель
Сообщения: 136
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение Spvl »

Подскажите
Существует ли функция, которая вернула бы, задолженность контрагента по оперативному контуру на заданную дату.
forummaster
Посетитель
Сообщения: 46
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение 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>
Spvl
Постоянный обитатель
Сообщения: 136
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение Spvl »

Огромное спасибо....
Но нельзя ли подробней.
Превый раз столкнулся с объектным интерфейсом
прочитал все в документации но откомпелировать не получается.
var gkb:GKonBalObj;
ошибка:Ожидался тип параметра.
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

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

Сообщение Deinis »

Spvl
Постоянный обитатель
Сообщения: 136
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение Spvl »

Разобрался ....
Благодарен всем за участие!
Serrenium
Посетитель
Сообщения: 46
Зарегистрирован: 05 июл 2005, 18:06
Откуда: Корпорация Галактика
Контактная информация:

Сообщение 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
WiRuc
Местный житель
Сообщения: 414
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж

Сообщение WiRuc »

А у вас оперативный расчет сальдо контрагента ведется (есть такая настройка)? Если нет, то работать не будет.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение 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, декабрьские патчи.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

И все молчат...
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение 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 + свой интерфейс под него слегка поменять...
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение 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.
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Сообщение KATZ »

Лучше так попробуйте:

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

GKB: GKonBal;
. . .
GKB.InitTuneParams; 
// Без GetVipRef(GKB,'GKonBal'); 
block:=GKB.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB); 
. . .
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Нет. Так не считает. Опытным путём подобрал эту последовательность:

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

  GetVipRef(GKB,'GKonBal');
  gkb.InitTuneParams;
  block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB);
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

а так?

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

gkb : GKonBalObj; // cсылка на obj не на vip
GetVipRef(gkb, 'GKonBal');
gkb.InitTuneParams();
block:=gkb.GetKontrBalance(10000000000C4h, date(31,12,2009), 1, BalR, BalV, BalB);
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Так ведь и есть, секцию var я просто не привёл. Считается.
Ответить