Бухгалтерский калькулятор
Добавлено: 19 авг 2016, 11:18
Код: Выделить всё
#doc
Бухгалтерский калькулятор
#end
Interface My_Buh_Calc 'Бухгалтерский калькулятор' EscClose;
Show at (,3,90,14);
Create view vwBuh_Calc
Var
Str_Formula : string;
ResultNDE, ResultBV, ResultKol : double;
ResNDE, ResBV, ResKol : double;
bChangeFormula : Boolean;
As select
KlVal.SimvolV
From
KlVal (ReadOnly)
Where
((
coGetTune('REP.CVAL') == KlVal.NRec
));
Parameters ResNDE, ResBV, ResKol;
//------------------------------------------------------------------------------
Screen scBuh_Calc 'Бухгалтерский калькулятор' (,hcBuh_Calculator,sci1Esc);
Fields
Str_Formula ('Введите формулу для расчета. Enter - Расчет',,sci13Esc)
: NoProtect, PickButton;
ResultNDE ('Результат в национальной денежной единице')
: ['\+2p[|-]366`666`666`666`667.88'], Protect, {Font={Bold=true}};
sGetTune('NDE.SIMVRUB')
: Skip, {Font={Bold=true}};
ResultBV ('Результат в валюте отчетов')
: ['\+2p[|-]366`666`666`666`667.88'], Protect, {Font={Bold=true}};
KlVal.SimvolV : Skip, {Font={Bold=true}};
ResultKol ('Количество')
: ['\+2p[|-]366`666`666`666`667.88'], Protect, {Font={Bold=true}};
Buttons
cmValue1,Default,,'Вычислить значение формулы';
cmOk,,,'Принять результат';
cmCancel,,,'Выход';
<<
`Формула` .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
`Результат`.@@@@@@@@@@@@@@@@@@ .@@@@@@ .@@@@@@@@@@@@@@@@@@ .@@@@@@ .@@@@@@@@@@@@@@@@@@
<. Рассчитать .> <. Продолжить .> <. Отмена .>
>>
end; // screen
//------------------------------------------------------------------------------
HandleEvent
cmInit :
{
Str_Formula := '';
if (ResNDE <> 0)
{
ResultNDE := ResNDE;
Str_Formula := string(ResultNDE);
}
if (ResBV <> 0) ResultBV := ResBV;
if (ResKol <> 0) ResultKol := ResKol;
}
cmPick:
{
var Ident: string;
if(runinterface('MasterAllIdent', word(cgIdent_Pat or cgIdent_Typical or cgIdent_PatDef),
word(0), word(0), word(0), word(0), word(cgiPick), Ident) = cmDefault)
{
Str_Formula := LTrim(Trim(Str_Formula) + ' ' + Ident + ' ');
RereadRecord;
bChangeFormula := True;
}
FieldSelectAll(scBuh_Calc, #Str_Formula, false);
}
cmCheckField:
if(CurField = #Str_Formula)
bChangeFormula := True;
cmValue1:
{
if(trim(Str_Formula) = '')
{
ResultNDE := 0;
ResultBV := 0;
ResultKol := 0;
}
else
{
FormExInit;
FormExClearFormula;
FormExAddKey('&1', trim(Str_Formula), '', '', '');
if(FormExStartCount(0))
FormExGetKeyValues('&1', ResultNDE, ResultBV, ResultKol)
else
{
ResultNDE := 0;
ResultBV := 0;
ResultKol := 0;
}
FormExDone;
}
set ResultKol := ResultKol;
bChangeFormula:= False;
}
cmOk:
{
if bChangeFormula
ProcessCommand(cmValue1);
ResNDE := ResultNDE;
ResBV := ResultBV;
ResKol := ResultKol;
CloseInterface(cmDefault);
}
End;
End.