Бухгалтерский калькулятор

База знаний

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

Бухгалтерский калькулятор

Сообщение edward_K » Пт авг 19, 2016 12: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.
edward_K
Заслуженный деятель интернет-сообщества
 
Сообщения: 5149
Зарегистрирован: Вт мар 29, 2005 17:49
Откуда: SPB galaxy spb
Reputation point: 115

Вернуться в Опыт

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


cron