перенос функции
Модераторы: m0p3e, edward_K, Модераторы
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: перенос функции
Вот вот. Сделайте маленький фейсик, народ поможет, но привести его нужно целиком.
в фейсе должен быть типа такого
create view
var
pcOrg :comp
select katorg.nrec
from katorg
where (( pcOrg == katorg.nrec
.....
))
parameters pcOrg;
...
HandleEvent
cmInit:
{ if getfirst katorg<>0 message('???')
....
closeinterface(cmDone)
}
end;
end.
вызывать соотв. RunInterface(?????, basedoc.corg)
Дальше уж сами думайте. Или платите кому нибудь за думанье.
в фейсе должен быть типа такого
create view
var
pcOrg :comp
select katorg.nrec
from katorg
where (( pcOrg == katorg.nrec
.....
))
parameters pcOrg;
...
HandleEvent
cmInit:
{ if getfirst katorg<>0 message('???')
....
closeinterface(cmDone)
}
end;
end.
вызывать соотв. RunInterface(?????, basedoc.corg)
Дальше уж сами думайте. Или платите кому нибудь за думанье.
Re: перенос функции
спасибо за то, что указал на ошибку. Внимательно разобравшись с данной строкой поняли, что она не влияет на данный код. По совету Edwarda сделал небольшой фейсикRAJAH писал(а):Вы ж про ДО на продажу говорили? А ограничение-то на контрагента указывает на собственную организацию (coGetTune('MYORG')), и, вообще, ссылка на каталог договоров (basedoc.cdogovor)!Espada писал(а):Код: Выделить всё
create view condition org as basedoc.cdogovor=coGetTune('MYORG');
Код: Выделить всё
#component "L_BaseDoc"
const
cmbut1=143213;
end;
alter interface VSCHET;
var
weight_tek:Double
weight:Double
data:Date
nomer:String
i:Double
j:Double
org:Word
saldo_tekD:Double
saldo_tekK:Double
saldo_vx:Double
saldo_vxD:Double
saldo_vxK:Double
attrsaldoD:Double
attrsaldoK:Double
saldo_ISX:Double
saldo_ISXD:Double
saldo_ISXK:Double
k:Double
d_ob:Double
k_ob:Double
Nastr:String
OP:Date
VIDS:String
org_nrec:Double
Create view massa
from katsopr, spsopr, katmc
where
((
org_nrec == KatSopr.cOrg
...
));
Create view Org_attr
from katorg,synonym attrnam attrnamD,synonym attrval attrvalD,synonym attrnam attrnamK,synonym attrval attrvalK,synonym attrnam attrnamM,synonym attrval attrvalM
where
...
Create view Saldo from SALDMOUN
where
...
Create view obormot from oborot
where
...
Create view obormotka from oborot
where
...
window wvschet;
handleevent
cmInit:
{
...
}
cmbut1:
{
{
org_nrec:=katorg.nrec;
data := To_Date(01,10,2012);
org := 1418;
Nastr := sGetTune('DAT_M_OT');
OP := To_Date(Substr(Nastr, 1, 2),Substr(Nastr, 4, 2),Substr(Nastr, 7, 4));
}
{
if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет';
if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит';
}
{
if VIDS = 'Дебет' d := d + Saldo.SALDMOUN.SUMS;
if VIDS = 'Кредит' k := k + Saldo.SALDMOUN.SUMS;
}...
};
if saldo_ISX < 0
{
saldo_ISXD := 0;
saldo_ISXK := saldo_ISX*(-1);
};
...
{
if ( Substr(massa.katmc.KGROUPMC, 1, 2) = '04' and Substr(massa.katmc.KGROUPMC, 1, 4) <> '0410')
weight := weight + massa.sporder.kol;
}
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamD = tsOk and Org_Attr.getfirst AttrValD = tsOk)
{
saldo_tekD := Org_Attr.AttrValD.vdouble;
if (saldo_tekD = saldo_ISXD)
{} else if
(saldo_tekD <> saldo_ISXD)
{
Org_Attr.AttrValD.vdouble := saldo_ISXD;
Org_Attr.update current AttrValD;
i:=i+1;
};
};
...
}
{
if (Org_Attr.getfirst AttrValD <> tsOk)
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamD = tsOk)
{
Org_Attr.AttrValD.vstring := '';
Org_Attr.AttrValD.cattrnam := Org_Attr.attrnamD.nrec;
Org_Attr.AttrValD.wtable := word(org);
Org_Attr.AttrValD.crec := org_nrec;
Org_Attr.AttrValD.vdouble := saldo_ISXD;
Org_Attr.insert current AttrValD;
i:=i+1;
};
};
attrsaldoD:= Org_Attr.AttrValD.vdouble;
...
end;
end;
end.
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: перенос функции
я вам не зря советовал отдельный фейс и небольшой пример, но полный.
Как минимум не хватает позиционирования по дополнительным вьюхам типа saldo, oborotka и так далее. Во всех кроме основной мало задать параметры отбора, ди и в основной лучше подпихнуть принудительно.
Как минимум не хватает позиционирования по дополнительным вьюхам типа saldo, oborotka и так далее. Во всех кроме основной мало задать параметры отбора, ди и в основной лучше подпихнуть принудительно.
Re: перенос функции
Ребят, перепробовал, наверное, всё! никак у меня не хочет перечитывать. или я думал может где-то косяк и не берутся данные из каталога.
это весь код, тут большая часть кода повторяется
Код: Выделить всё
#include ExtAttr.Vih
#component "L_BaseDoc"
const
cmbut1=143213;
end;
alter interface VSCHET;
var
iAttr : iExtAttr
weight_tek:Double
weight:Double
data:Date
nomer:String
i:Double
j:Double
org:Word
saldo_tekD:Double
saldo_tekK:Double
saldo_vx:Double
saldo_vxD:Double
saldo_vxK:Double
attrsaldoD:Double
attrsaldoK:Double
saldo_ISX:Double
saldo_ISXD:Double
saldo_ISXK:Double
k:Double
d_ob:Double
k_ob:Double
Nastr:String
OP:Date
VIDS:String
org_nrec:Double
Create view massa
from katsopr, spsopr, katmc
where
((
org_nrec == KatSopr.cOrg
and data <<= katsopr.dsopr
and word (201) == KatSopr.VidSopr (NoIndex)
and katsopr.nrec == spsopr.csopr
and spsopr.nrec == sporder.cspsopr
and sporder.CMC == katmc.nrec
));
Create view Org_attr
from katorg,synonym attrnam attrnamD,synonym attrval attrvalD,synonym attrnam attrnamK,synonym attrval attrvalK,synonym attrnam attrnamM,synonym attrval attrvalM
where
((
org_nrec == katorg.nrec and // Кредит
word(1418) == attrnamK.wtable and
'Сальдо исходящее (кредит)' == attrnamK.name and
word(1418) == attrvalK.wtable and
katorg.nrec == attrvalK.crec and
attrnamK.nrec == attrvalK.cattrnam and
word(1418) == attrnamD.wtable and // Дебет
'Сальдо исходящее (дебет)' == attrnamD.name and
word(1418) == attrvalD.wtable and
katorg.nrec == attrvalD.crec and
attrnamD.nrec == attrvalD.cattrnam and
word(1418) == attrnamM.wtable and // Масса
'Отгрузка за период' == attrnamM.name and
word(1418) == attrvalM.wtable and
katorg.nrec == attrvalM.crec and
attrnamM.nrec == attrvalM.cattrnam
));
Create view Saldo from SALDMOUN
where
((
'562' == SALDMOUN.SCHETO and
OP == SALDMOUN.DATESAL and
org_nrec == SALDMOUN.KAUOS[1](noindex)
));
Create view obormot from oborot
where
((
OP <<= oborot.DATob and
'562' == oborot.SCHETO and
org_nrec == oborot.KAUOS[1](noindex)
));
Create view obormotka from oborot
where
((
OP <<= oborot.DATob and
'562' == oborot.SCHETK and
org_nrec == oborot.KAUKS[1](noindex)
));
window wvschet;
handleevent
cmInit:
{
if(Inherited::HandleEvent(cmInit) = heOk)
{
}
var pobj1,pobj2:longint;
var err:string;
cfsCreateObject ('button','SCVSCHET','but1',False,pobj2);
cfsSetProp(pobj2,'Origin_X',563);
cfsSetProp(pobj2,'Origin_Y',306);
cfsSetProp(pobj2,'Size_X',189);
cfsSetProp(pobj2,'Size_Y',25);
cfsSetProp(pobj2,'Title','Пересчитать скидки');
cfsSetProp(pobj2,'StatusCtx',sci13Esc);
cfsSetProp(pobj2,'Command',cmBut1);
}
cmbut1:
{
{
org_nrec:=katorg.nrec;
data := To_Date(01,10,2012);
org := 1418;
Nastr := sGetTune('DAT_M_OT');
OP := To_Date(Substr(Nastr, 1, 2),Substr(Nastr, 4, 2),Substr(Nastr, 7, 4));
saldo_vxD := 0;
saldo_vxK := 0;
attrsaldoD := 0;
attrsaldoK := 0;
saldo_ISXD := 0;
saldo_ISXK := 0;
i := 0;
j := 0;
d := 0;
k := 0;
k_ob := 0;
d_ob := 0;
weight := 0;
}
{
if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет';
if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит';
}
{
if VIDS = 'Дебет' d := d + Saldo.SALDMOUN.SUMS;
if VIDS = 'Кредит' k := k + Saldo.SALDMOUN.SUMS;
}
{
saldo_vx := d - k;
if saldo_vx >= 0 saldo_vxD := saldo_vx;
if saldo_vx <= 0 saldo_vxK := saldo_vx*(-1);
}
{
d_ob := d_ob + obormot.oborot.sumob;
}
{
k_ob := k_ob + obormotka.oborot.sumob;
}
{
saldo_ISX := saldo_vxD - saldo_vxK + d_ob - k_ob;
if saldo_ISX > 0
{
saldo_ISXD := saldo_ISX;
saldo_ISXK := 0;
};
if saldo_ISX < 0
{
saldo_ISXD := 0;
saldo_ISXK := saldo_ISX*(-1);
};
if saldo_ISX = 0
{
saldo_ISXD := 0;
saldo_ISXK := 0;
};
weight :=0;
}
{
if ( Substr(massa.katmc.KGROUPMC, 1, 2) = '04' and Substr(massa.katmc.KGROUPMC, 1, 4) <> '0410')
weight := weight + massa.sporder.kol;
}
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamD = tsOk and Org_Attr.getfirst AttrValD = tsOk)
{
saldo_tekD := Org_Attr.AttrValD.vdouble;
if (saldo_tekD = saldo_ISXD)
{} else if
(saldo_tekD <> saldo_ISXD)
{
Org_Attr.AttrValD.vdouble := saldo_ISXD;
Org_Attr.update current AttrValD;
i:=i+1;
};
};
attrsaldoD:= Org_Attr.AttrValD.vdouble;
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamK = tsOk and Org_Attr.getfirst AttrValK = tsOk)
{
saldo_tekK := Org_Attr.AttrValK.vdouble;
if (saldo_tekK = saldo_ISXK)
{} else if
(saldo_tekK <> saldo_ISXK)
{
Org_Attr.AttrValK.vdouble := saldo_ISXK;
Org_Attr.update current AttrValK;
j:=j+1;
};
};
attrsaldoK:= Org_Attr.AttrValK.vdouble;
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamM = tsOk and Org_Attr.getfirst AttrValM = tsOk)
{
weight_tek := Org_Attr.AttrValM.vdouble;
if (weight_tek = weight)
{} else if
(weight_tek <> weight)
{
Org_Attr.AttrValM.vdouble := weight;
Org_Attr.update current AttrValM;
};
};
}
{
if (Org_Attr.getfirst AttrValD <> tsOk)
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamD = tsOk)
{
Org_Attr.AttrValD.vstring := '';
Org_Attr.AttrValD.cattrnam := Org_Attr.attrnamD.nrec;
Org_Attr.AttrValD.wtable := word(org);
Org_Attr.AttrValD.crec := org_nrec;
Org_Attr.AttrValD.vdouble := saldo_ISXD;
Org_Attr.insert current AttrValD;
i:=i+1;
};
};
attrsaldoD:= Org_Attr.AttrValD.vdouble;
if (Org_Attr.getfirst AttrValK <> tsOk)
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamK = tsOk)
{
Org_Attr.AttrValK.vstring := '';
Org_Attr.AttrValK.cattrnam := Org_Attr.attrnamK.nrec;
Org_Attr.AttrValK.wtable := word(org);
Org_Attr.AttrValK.crec := org_nrec;
Org_Attr.AttrValK.vdouble := saldo_ISXK;
Org_Attr.insert current AttrValK;
j:=j+1;
};
};
attrsaldoK:= Org_Attr.AttrValK.vdouble;
if (Org_Attr.getfirst AttrValM <> tsOk)
{
if (Org_Attr.getfirst katorg = tsOk and Org_Attr.getfirst attrnamM = tsOk)
{
Org_Attr.AttrValM.vstring := '';
Org_Attr.AttrValM.cattrnam := Org_Attr.attrnamM.nrec;
Org_Attr.AttrValM.wtable := word(org);
Org_Attr.AttrValM.crec := org_nrec;
Org_Attr.AttrValM.vdouble := weight;
Org_Attr.insert current AttrValM;
};
};
}
{
saldo_vxD := 0;
saldo_vxK := 0;
attrsaldoD := 0;
attrsaldoK := 0;
saldo_ISXD := 0;
saldo_ISXK := 0;
d := 0;
k := 0;
k_ob := 0;
d_ob := 0;
}
message(iAttr.sGetAttr(coKatorg,katorg.nrec,'Сальдо исходящее (дебет)'));
}
end;
end;
end.
это весь код, тут большая часть кода повторяется
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: перенос функции
Черт. если вам говорят - сделайте небольшой пример то так и надо делать.
последний вам ответ - уже повторный
перед этим куском в форме у вас что-то было.
наверное надо saldo._loop saldmoun здесь поставить
и так далее по тексту. Вставьте в циклы мессаги - проверьте что вы в них собираете.
последний вам ответ - уже повторный
Код: Выделить всё
{
if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет';
if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит';
}
{
if VIDS = 'Дебет' d := d + Saldo.SALDMOUN.SUMS;
if VIDS = 'Кредит' k := k + Saldo.SALDMOUN.SUMS;
}
наверное надо saldo._loop saldmoun здесь поставить
и так далее по тексту. Вставьте в циклы мессаги - проверьте что вы в них собираете.
Re: перенос функции
Вот часть кода откуда переделывалedward_K писал(а):Черт. если вам говорят - сделайте небольшой пример то так и надо делать.
последний вам ответ - уже повторныйперед этим куском в форме у вас что-то было.Код: Выделить всё
{ if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет'; if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит'; } { if VIDS = 'Дебет' d := d + Saldo.SALDMOUN.SUMS; if VIDS = 'Кредит' k := k + Saldo.SALDMOUN.SUMS; }
наверное надо saldo._loop saldmoun здесь поставить
и так далее по тексту. Вставьте в циклы мессаги - проверьте что вы в них собираете.
Код: Выделить всё
.endfields
.begin
data := To_Date(01,10,2012);
...
weight := 0;
end.
^
.{
^ ^
.{table 'Saldo'
.begin
if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет';
if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит';
end.
^ ^ &'&&&&&&&&&&&&&&&&&& ^ ^
.begin
if VIDS = 'Дебет' d := d + Saldo.SALDMOUN.SUMS;
if VIDS = 'Кредит' k := k + Saldo.SALDMOUN.SUMS;
end.
.}
.begin
saldo_vx := d - k;
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: перенос функции
Espada писал(а):Вот .{table 'Saldo' (цикл по локальной таблице) как его правильно задать в ViP?
Код: Выделить всё
saldo._loop viewtable
{
...
}
Re: перенос функции
Спасибо. сделал так как вы сказалиRAJAH писал(а):Espada писал(а):Вот .{table 'Saldo' (цикл по локальной таблице) как его правильно задать в ViP?Код: Выделить всё
saldo._loop viewtable { ... }
Код: Выделить всё
saldo._loop viewtable
{
{
if Saldo.SALDMOUN.VIOB = '1' Then VIDS := 'Дебет';
if Saldo.SALDMOUN.VIOB = '2' Then VIDS := 'Кредит';
}
...
}
...
obormot._loop viewtable
{
{
d_ob := d_ob + obormot.oborot.sumob;
}
}
obormotka._loop viewtable
{
{
k_ob := k_ob + obormotka.oborot.sumob;
}
}
и т.д
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: перенос функции
и ещё небольшой(скорее всего глупый) вопросик в коде отчёта использовал .{
тобиш end.-в випе заменяю на }
.{table 'Saldo' -на Saldo._loop viewtable
.begin - на {
а на что менять .{ или его можно просто опустить???
Код: Выделить всё
weight := 0;
end.
^
.{
^ ^
.{table 'Saldo'
.begin
.{table 'Saldo' -на Saldo._loop viewtable
.begin - на {
а на что менять .{ или его можно просто опустить???
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Re: перенос функции
Наверное, можно опустить: это начало цикла, видимо, из формы-прототипа (тогда ещё .} пониже будет).Espada писал(а):на что менять .{ или его можно просто опустить???
Re: перенос функции
Спасибо большоеRAJAH писал(а):Наверное, можно опустить: это начало цикла, видимо, из формы-прототипа (тогда ещё .} пониже будет).Espada писал(а):на что менять .{ или его можно просто опустить???
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
-
- Местный житель
- Сообщения: 209
- Зарегистрирован: 18 окт 2006, 17:03
- Откуда: Ростов на Дону Новочеркасск Новороссийск
- Контактная информация:
Re: перенос функции
Добрый день!
подскажите, как использовать ф-ю GetKontrBalance в присоединенной форме, при компиляции ругается, хотя в самописном интерфейсе работает. Может есть ньансы?
спасибо!
подскажите, как использовать ф-ю GetKontrBalance в присоединенной форме, при компиляции ругается, хотя в самописном интерфейсе работает. Может есть ньансы?
спасибо!
Re: перенос функции
На что ругается? #define ComponentVersion делали?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: перенос функции
У вас должно быть что то такое
Если в проекте то перед компиляцией форм
Если через Fcom(не помню точно _
В форме
Ну и где то
Ну и где то должно быть
Если в проекте то перед компиляцией форм
Код: Выделить всё
#include GKonBal.vih
#include GKonBalB.vih
Код: Выделить всё
#declare
#include GKonBal.vih
#include GKonBalB.vih
#end
Код: Выделить всё
.var
gkb : GKonBalObj;
gkbb: GKonBalBuyerObj;
.endvar
Код: Выделить всё
if (TypeDolg = 1) // как покупатель
GKB.GetKontrBalance(comp(KontrComp),
d1,
Tune_SoprKontr,
BalR,
BalV,
BalB)
else
GKBB.GetKontrBalanceBuyer(comp(KontrComp),
d1,
Tune_SoprKontr,
BalR,
BalV,
BalB);
Код: Выделить всё
#define ComponentVersion
-
- Местный житель
- Сообщения: 209
- Зарегистрирован: 18 окт 2006, 17:03
- Откуда: Ростов на Дону Новочеркасск Новороссийск
- Контактная информация:
Re: перенос функции
Спасибо, получилось откомпилить! но результат не сходиться.
изначально задача следующая, в реестр платежных документов необходимо вывести данные по кредиторской задолженности.
Но начинаю сравнивать результат расчета с актом сверки взаиморасчетов по договорам (поставщики получатели) результат частенько не сходиться, не на много, но не сходиться. Или функция считает по другому алгоритму, не как акт сверки?
А если нужно считать кредиторскую задолженность в разрезе договоров, то придется самому ее рассчитывать?
изначально задача следующая, в реестр платежных документов необходимо вывести данные по кредиторской задолженности.
Но начинаю сравнивать результат расчета с актом сверки взаиморасчетов по договорам (поставщики получатели) результат частенько не сходиться, не на много, но не сходиться. Или функция считает по другому алгоритму, не как акт сверки?
А если нужно считать кредиторскую задолженность в разрезе договоров, то придется самому ее рассчитывать?