
Vyh_114_2()   //скидки по видам доходов -  R_Tax(114)  
{
   char Arg[256],Str[256];
   
   sprintf(Arg,"%d,1,%d,%d,Источник выплаты,*,Н",114,0,0);
   string s=R_Tax(Arg,Str,255,0);//получили  cписок вида "КодДох1,СумДох1,КодСкд1,СумСкд1; КодДох2,СумДох2,КодСкд2,СумСкд2;..."

   sprintf(Str,"%s",to_string(s));  FreeSpaceString(Str,3,"");
   double sum_vyh = 0;
   
   for(var nn=0; nn<=9; nn++)       
    {
     char n_1[91], n_2[91];

     var VHParam = CreateObject("ParamFuncRW");
     VHParam.IInitial(static_cast_to_string(Str)," ;",9);
     sprintf(n_1,"%s", to_string(VHParam.Get(nn)));

     sprintf(n_2,"%s", to_string(n_1));

     var VYParam = CreateObject("ParamFuncRW");       
     VYParam.IInitial(static_cast_to_string(n_2)," ,",4);

     char n3[10], n4[90];

     sprintf(n3,"%s", to_string(VYParam.Get(2))); 
     sprintf(n4,"%s", to_string(VYParam.Get(3)));
     if (atoi(n3)>499 && atoi(n3)<510) sum_vyh += atof(n4);

     //sprintf(n3,"%s", to_string(VYParam.Get(0)));
     //sprintf(n4,"%s", to_string(VYParam.Get(1))); 
     //if (atoi(n3)>0 && atoi(n3)<126) sum_vyh += atof(n4);
     
    }

   return sum_vyh;
}


Vyh_114(vyh)    // извлеч вычетов из R_tax(114)
{
   char a2[250];
   sprintf(a2,"%.90s",static_cast_to_string(vyh));    //  вся строка вычетов с кодами дохода

   var VYH = CreateObject("ParamFuncRW");
   VYH.IInitial(static_cast_to_string(a2)," ;",4);    //  разделили на части по  " ;"

   double sum_vyh=0;

   for(var nn=0; nn<4; nn++)          //   перебираем части
     {
      char a22[91];
      sprintf(a22,"%s", static_cast_to_string(VYH.Get(nn)));

      var VYPart = CreateObject("ParamFuncRW");
      VYPart.IInitial(static_cast_to_string(a22)," ,",4);   //  разделили часть на блоки по  " ,"

      char a33[10];
      sprintf(a33,"%.9s", static_cast_to_string(VYPart.Get(2)));   //   выбираем 3-й блок с кодом вычета


      if ((atoi(a33)==501) || (atoi(a33)==502) || (atoi(a33)==503) || (atoi(a33)==504)) 
        {
         char a31[10];
         sprintf(a31,"%.9s", static_cast_to_string(VYPart.Get(3)));  //   выбираем 4-й блок с суммой вычета

         sum_vyh += atoi(a31);
        }
     }
 
   return sum_vyh;
 
}



GodVyh_pers()   //сумма вычетов - аналог R_Tax(14)  для квитка
{
   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"%d,1,%d,%d,Источник выплаты,*,Н",112,-1,0);
   string s=R_Tax(Arg,Str,255,0);//получили  cписок вида "код вычета1,сумма вычета1;код вычета2,сумма вычета2;..."

   sprintf(Str,"%s",to_string(s));  FreeSpaceString(Str,3,"");
   double sum_vyh = 0;
   
   for(var nn=0; nn<=9; nn++)       // if(sss==10) break;
    {
     char n_1[91], n_2[91];

     var VHParam = CreateObject("ParamFuncRW");
     VHParam.IInitial(static_cast_to_string(Str)," ;",9);
     sprintf(n_1,"%s", to_string(VHParam.Get(nn)));

     sprintf(n_2,"%s", to_string(n_1));

     var VYParam = CreateObject("ParamFuncRW");       
     VYParam.IInitial(static_cast_to_string(n_2)," ,",3);

     char n3[10], n4[90];
     sprintf(n3,"%s", to_string(VYParam.Get(0)));
     sprintf(n4,"%s", to_string(VYParam.Get(1))); 

     if (atoi(n3)>0 && atoi(n3)<126) sum_vyh += atof(n4);
     
    }

   return sum_vyh;
}


Vyh_pers()   //сумма вычетов - аналог R_Tax(14)  для квитка
{
   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"%d,1,%d,%d,Источник выплаты,*,Н",112,0,0);
   string s=R_Tax(Arg,Str,255,0);//получили  cписок вида "код вычета1,сумма вычета1;код вычета2,сумма вычета2;..."

   sprintf(Str,"%s",to_string(s));  FreeSpaceString(Str,3,"");
   double sum_vyh = 0;
   
   for(var nn=0; nn<=9; nn++)       // if(sss==10) break;
    {
     char n_1[91], n_2[91];

     var VHParam = CreateObject("ParamFuncRW");
     VHParam.IInitial(static_cast_to_string(Str)," ;",9);
     sprintf(n_1,"%s", to_string(VHParam.Get(nn)));

     sprintf(n_2,"%s", to_string(n_1));

     var VYParam = CreateObject("ParamFuncRW");       
     VYParam.IInitial(static_cast_to_string(n_2)," ,",3);

     char n3[10], n4[90];
     sprintf(n3,"%s", to_string(VYParam.Get(0)));
     sprintf(n4,"%s", to_string(VYParam.Get(1))); 

     if (atoi(n3)>0 && atoi(n3)<126) sum_vyh += atof(n4);
     
    }

   return sum_vyh;
}


Vyh_s(tab)   //вычеты строкой 
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);      FreeSpaceString(ls1,3,"");
   lsread(ls1,0);                       // инициализация ТН

   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"%d,1,%d,%d,Источник выплаты,*,Н",112,0,0);
   string s=R_Tax(Arg,Str,255,0);//получили  cписок вида "код вычета1,сумма вычета1;код вычета2,сумма вычета2;..."

   sprintf(Str,"%s",to_string(s));  FreeSpaceString(Str,3,"");
   return Str;
}

Vyh_14(tab)   //вычеты - аналог R_Tax(14)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);      FreeSpaceString(ls1,3,"");
   lsread(ls1,0);                       // инициализация ТН

   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"%d,1,%d,%d,Источник выплаты,*,Н",112,0,0);
   string s=R_Tax(Arg,Str,255,0);//получили  cписок вида "код вычета1,сумма вычета1;код вычета2,сумма вычета2;..."

   sprintf(Str,"%s",to_string(s));  FreeSpaceString(Str,3,"");
   double sum_vyh = 0;
   
   for(var nn=0; nn<=9; nn++)       // if(sss==10) break;
    {
     char n_1[91], n_2[91];

     var VHParam = CreateObject("ParamFuncRW");
     VHParam.IInitial(static_cast_to_string(Str)," ;",9);
     sprintf(n_1,"%s", to_string(VHParam.Get(nn)));

     sprintf(n_2,"%s", to_string(n_1));

     var VYParam = CreateObject("ParamFuncRW");       
     VYParam.IInitial(static_cast_to_string(n_2)," ,",3);

     char n3[10], n4[90];
     sprintf(n3,"%s", to_string(VYParam.Get(0)));
     sprintf(n4,"%s", to_string(VYParam.Get(1))); 

     if (atoi(n3)>0 && atoi(n3)<126) sum_vyh += atof(n4);
     
    }

   return sum_vyh;
}



Sverx25_2(osn,per,tab, mon)
{
   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(osn));
   FreeSpaceString(tm1,3,"");
   double t3 = atof(tm1);         //колич основных часов (от полной базы)

   char tm2[91];
   sprintf(tm2,"%.90s",static_cast_to_string(per));
   FreeSpaceString(tm2,3,"");
   double t4 = atof(tm2);         //колич переводных часов  (от оклада)

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char am[250];
   sprintf(am,"%s",static_cast_to_string(mon));   FreeSpaceString(am,3,"");
   int absm=atoi(am);

   s50(absm);

   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4   

   double  n6 = n5*t4/norm(2); // -  сумма за переводные часы (с оклада)
   round2(n6,0,0,n6);

   // находим надбавки
   double n_4, n_5, n_31, n_43, n_46, n_68, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 25, 0, 0, n_68);
   poiskbz(0, 21, 0, 0, n_71);

   double n4;
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+(n_4/100*n_68)+(n_4/100*n_71);

   double n55 = n5 + n4;       // - полная база для основных часов
   double n66= n55*t3/norm(2); // - сумма по основным часам (с оклада + надбавки)
   round2(n66,0,0,n66);

   double svur = n6 + n66;

   return svur;


   
}


SvPer_2(tim1,tab, mon)   // св-урочные переводные часы   (за любой месяц) 31.01.2015
{
   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(tim1));
   FreeSpaceString(tm1,3,"");
   double n3 = atof(tm1);      //переводное время для св-ур

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   lsread(ls1,0);                   // инициализация ТН

   char am[250];
   sprintf(am,"%s",static_cast_to_string(mon));   FreeSpaceString(am,3,"");
   int absm=atoi(am);

   s50(absm);


   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4   
   double n6;
   n6=(n5*n3/norm(2)); // -  переводные часы (с оклада)
   round2(n6,0,0,n6);
   return n6;
   
}


SvOsn_2(tim1,tab, mon)   // св-урочные основные часы  (за любой месяц) 31.01.2015
{
   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(tim1));
   FreeSpaceString(tm1,3,"");
   double n3 = atof(tm1);      //основное время для св-ур

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char am[250];
   sprintf(am,"%s",static_cast_to_string(mon));   FreeSpaceString(am,3,"");
   int absm=atoi(am);

   s50(absm);


   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4
   // находим надбавки
   double n_4, n_5, n_31, n_43, n_46, n_68, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 25, 0, 0, n_68);
   poiskbz(0, 21, 0, 0, n_71);
   double n4;
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+(n_4/100*n_68)+(n_4/100*n_71);
   n5 = n5 + n4;
   double n6;
   n6=(n5*n3/norm(2)); // - основные часы (с оклада + надбавки)
                              
   round2(n6,0,0,n6);
   return n6;
   
}


Vyh22_2(tim,tab, mon)          // взамен Vyh22_      29.01.2016
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim));
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН


   char am[250];
   sprintf(am,"%s",static_cast_to_string(mon));   FreeSpaceString(am,3,"");
   int absm=atoi(am);

   s50(absm);


   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   n3=n1;   //+n2;

   double s5;             //!!!   ВНИМАНИЕ:          
   sumvid("*m",15,0,s5);  //s5 действит только на этапе внедрения

   double n_4, n_5, n_31, n_43, n_46, n_45, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 24, 0, 0, n_45);
   poiskbz(0, 21, 0, 0, n_71);
   
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+n_45+(n_4/100*n_71);
  // n4 = (n_4/100*n_5)+s5+(n_4/100*n_31)+n_43+n_46+n_45+(n_4/100*n_71);
   // убран 31-й вид до расчёта в марте
   //n4 = (n_4/100*n_5)+s5+n_43+n_46+n_45+(n_4/100*n_71);

   n5=2*(n3*time/norm(2))+n4/norm(2)*time;
   round2(n5,0,0,n5);
   return n5;
}


NRV_h_2(tab, mon)              // взамен NRV_h      29.01.2016
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char am[250];
   sprintf(am,"%s",static_cast_to_string(mon));   FreeSpaceString(am,3,"");
   int absm=atoi(am);

   s50(absm);

   double nrv_h = norm(2);

   return nrv_h;
}


NRV_h(tab, mon)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char mg[250];
   sprintf(mg,"%s",static_cast_to_string(mon));   FreeSpaceString(mg,3,"");

   if ( strlen(mg) > 5)
     {
       var PSParam = CreateObject("ParamFuncRW");
       PSParam.IInitial(static_cast_to_string(mg),".",3);

       char m1[150], mm[9];
       sprintf(m1,"%s", static_cast_to_string(PSParam.Get(0))); FreeSpaceString(m1,3,"");
       sprintf(mm,"%s",m1);  FreeSpaceString(mm,3,"");

       char g1[150], gggg[9];
       sprintf(g1,"%s", static_cast_to_string(PSParam.Get(1))); FreeSpaceString(g1,3,"");
       sprintf(gggg,"%s",g1);  FreeSpaceString(gggg,3,"");

       int mes = atoi(mm);
       int god = atoi(gggg);

       var dat = CreateObject("KDate");  //создаем объекта класса  KDate  
       dat.SetMonthYear(mes,god);        //инициализируем объект месяцем и годом

       s50(dat.GetAbs());
     }

   else s50(mtek);

   double nrv_h = norm(2);

   return nrv_h;
}



Vyh22_(tim,tab, mon)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim));
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН


   char mg[250];
   sprintf(mg,"%s",static_cast_to_string(mon));   FreeSpaceString(mg,3,"");

   if ( strlen(mg) > 5)
     {
       var PSParam = CreateObject("ParamFuncRW");
       PSParam.IInitial(static_cast_to_string(mg),".",3);

       char m1[150], mm[9];
       sprintf(m1,"%s", static_cast_to_string(PSParam.Get(0))); FreeSpaceString(m1,3,"");
       sprintf(mm,"%s",m1);  FreeSpaceString(mm,3,"");

       char g1[150], gggg[9];
       sprintf(g1,"%s", static_cast_to_string(PSParam.Get(1))); FreeSpaceString(g1,3,"");
       sprintf(gggg,"%s",g1);  FreeSpaceString(gggg,3,"");

       int mes = atoi(mm);
       int god = atoi(gggg);

       var dat = CreateObject("KDate");  //создаем объекта класса  KDate  
       dat.SetMonthYear(mes,god);        //инициализируем объект месяцем и годом

       s50(dat.GetAbs());
     }

   else s50(mtek);


   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   n3=n1;   //+n2;

   double s5;             //!!!   ВНИМАНИЕ:          
   sumvid("*m",15,0,s5);  //s5 действит только на этапе внедрения

   double n_4, n_5, n_31, n_43, n_46, n_45, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 24, 0, 0, n_45);
   poiskbz(0, 21, 0, 0, n_71);
   
   n4 = (n_4/100*n_5)+s5+(n_4/100*n_31)+n_43+n_46+n_45+(n_4/100*n_71);
   // убран 31-й вид до расчёта в марте
   //n4 = (n_4/100*n_5)+s5+n_43+n_46+n_45+(n_4/100*n_71);

   n5=2*(n3*time/norm(2))+n4/norm(2)*time;
   round2(n5,0,0,n5);
   return n5;
}


TNvsk(tab)   // ТН для высокот из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char str1[9];
      kch_from("tn_vsk",str1);
     // int pr = atoi(str1);
      return str1;
    }
}



DD_R(a1)  
{
   char pp[250];
   sprintf(pp,"%s",static_cast_to_string(a1));

   var PSParam = CreateObject("ParamFuncRW");
   PSParam.IInitial(static_cast_to_string(pp),".",4);

   char p1[150];
   sprintf(p1,"%s", static_cast_to_string(PSParam.Get(0))); FreeSpaceString(p1,3,"");

   sprintf(pp,"%s",p1);
   int rr = atoi(pp);
   return rr;
}

MM_R(a1)  
{
   char pp[250];
   sprintf(pp,"%s",static_cast_to_string(a1));

   var PSParam = CreateObject("ParamFuncRW");
   PSParam.IInitial(static_cast_to_string(pp),".",4);

   char p1[150];
   sprintf(p1,"%s", static_cast_to_string(PSParam.Get(1))); FreeSpaceString(p1,3,"");

   sprintf(pp,"%s",p1);
   int rr = atoi(pp);
   return rr;
}

GGGG_R(a1)  
{
   char pp[250];
   sprintf(pp,"%s",static_cast_to_string(a1));

   var PSParam = CreateObject("ParamFuncRW");
   PSParam.IInitial(static_cast_to_string(pp),".",4);

   char p1[150];
   sprintf(p1,"%s", static_cast_to_string(PSParam.Get(2))); FreeSpaceString(p1,3,"");

   sprintf(pp,"%s",p1);
   int rr = atoi(pp);
   return rr;
}



Oklad_bz_m(tab, m)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));  FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char mm[91];
   sprintf(mm,"%.90s",static_cast_to_string(m));  FreeSpaceString(mm,3,"");
   int mmm = atoi(mm);

   double n1=0;
   poiskbzm(4, mmm, n1, 0);  //оклад по 4-му виду
   
   return n1;
}


Oklad_bz(tab)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));  FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   double n1=0;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   
   return n1;
}


DMG(n5,n6,n7)
{

      char p1[90];
      sprintf(p1,"%s",static_cast_to_string(n5));
      FreeSpaceString(p1,3,"");

      char p2[90];
      sprintf(p2,"%s",static_cast_to_string(n6));
      FreeSpaceString(p2,3,"");

      char p3[90];
      sprintf(p3,"%s",static_cast_to_string(n7));
      FreeSpaceString(p3,3,"");

      char p5[90];
      sprintf(p5,"%s%s%s",p1,p2,p3);
      FreeSpaceString(p5,3,"");

      return p5;
}

DMG_r(n5,n6,n7,n15)
{

      char p1[90];
      sprintf(p1,"%s",static_cast_to_string(n5));
      FreeSpaceString(p1,3,"");

      char p2[90];
      sprintf(p2,"%s",static_cast_to_string(n6));
      FreeSpaceString(p2,3,"");

      char p3[90];
      sprintf(p3,"%s",static_cast_to_string(n7));
      FreeSpaceString(p3,3,"");

      char p4[90];
      sprintf(p4,"%s",static_cast_to_string(n15));
      FreeSpaceString(p4,3,"");

      char p5[90];
      sprintf(p5,"%s%s%s%s",p1,p2,p3,p4);
      FreeSpaceString(p5,3,"");

      return p5;

}


PSP_rev(a1,a2)  
{
   char pp[250];
   sprintf(pp,"%s",static_cast_to_string(a1));

   var PSParam = CreateObject("ParamFuncRW");
   PSParam.IInitial(static_cast_to_string(pp),",",4);

   char p1[150];
   sprintf(p1,"%s", static_cast_to_string(PSParam.Get(0))); FreeSpaceString(p1,3,"");
   char p2[150];                                            
   sprintf(p2,"%s", static_cast_to_string(PSParam.Get(1))); FreeSpaceString(p2,3,"");
   char p3[150];
   sprintf(p3,"%s", static_cast_to_string(PSParam.Get(2))); FreeSpaceString(p3,3,"");
   char p4[150];
   sprintf(p4,"%s", static_cast_to_string(PSParam.Get(3))); FreeSpaceString(p4,3,"");

   char dd[90];
   sprintf(dd,"%s",static_cast_to_string(a2));  FreeSpaceString(dd,3,"");


  // char v4[20];
   sprintf(pp,"%s,%s,%s,%s",p1,p2,p3,dd);
   return pp;
}


LgStag(a1,a2,a3,a4)
{
   char kps[21];
   sprintf(kps,"%s",static_cast_to_string(a1));
   FreeSpaceString(kps,3,"");
   char klp[21];
   sprintf(klp,"%s",static_cast_to_string(a2));
   FreeSpaceString(klp,3,"");
   char datn[11];
   sprintf(datn,"%s",static_cast_to_string(a3));
   FreeSpaceString(datn,3,"");
   char datk[11];
   sprintf(datk,"%s",static_cast_to_string(a4));
   FreeSpaceString(datk,3,"");

   char lgst[91];
   sprintf(lgst,"%s,2,,,%s,%s,,,,,,,,,,", static_cast_to_string(datk),static_cast_to_string(klp),static_cast_to_string(kps));
   
  // sprintf(lgst,"111,,,,,,,,,,333");
   return lgst;
}



Nalog03(tab)   //вычисление налога и облаг базы
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"7,1,-1,-1,*,*,А");
   sum_str = atof(R_Tax(Arg,Str,14,2));
  // sprintf(Arg,"7,1,-2,-2,*,*,Л",);
  // sum_nak += atof(R_Tax(Arg,Str,14,2));

   return sum_str;

}



Bases01(tab)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"1,1,-2,-2,*,*,А");
   sum_str = atof(R_Tax(Arg,Str,14,2));
  // sprintf(Arg,"7,1,-2,-2,*,*,Л",);
  // sum_nak += atof(R_Tax(Arg,Str,14,2));

   return sum_str;

}


Nalog01(tab)
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

   char Arg[256],Str[256];
   double sum_str=0, sum_nak=0;
   sprintf(Arg,"7,1,-2,-2,*,*,А");
   sum_str = atof(R_Tax(Arg,Str,14,2));
  // sprintf(Arg,"7,1,-2,-2,*,*,Л",);
  // sum_nak += atof(R_Tax(Arg,Str,14,2));

   return sum_str;

}



TN(tab)   // № подраздел из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char str1[9];
      kch_from("podr",str1);
      int pr = atoi(str1);
      return pr;
    }
}



Tim04(tab) 
{

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

//      double sum;                       
//      rvvid("*m",4,0,sum);  

      s50(mtek);
      double rv_mes = 0;
      rv_mes = dney_v_tab("Р",calm,1,countday);   // dney_v_tab(rsimv,calm,1,countday);

      return  rv_mes;   // sum;   20140905
}


Sum841(tab) 
{

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      double sum;                       
      sumvid("*",741,0,sum);  

      return sum;


    }
}


Sum04(tab) 
{

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      double sum;                       
      sumvid("*m",4,0,sum);  

      return sum;


    }
}



StPF(tab,ms)   // № подраздел из КЧ
{
   char mm[91];
   sprintf(mm,"%.90s",static_cast_to_string(ms));
   FreeSpaceString(mm,3,"");
   int Mes = atoi(mm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char Arg[256], Str[256]; double sum; 
      sprintf(Arg,"1,1,_Beg(%d),_End(%d),Источник выплаты,*,А",Mes,Mes);
      sum=atof(R_Tax(Arg,Str,14,2));  

      return sum;
    }
}


Pasp(ser,nom,kem,kog)
{

      char p1[90];
      sprintf(p1,"%s",static_cast_to_string(ser));
      FreeSpaceString(p1,3,"");

      char p2[90];
      sprintf(p2,"%s",static_cast_to_string(nom));
      FreeSpaceString(p2,3,"");

      char p3[90];
      sprintf(p3,"%s",static_cast_to_string(kog));
      FreeSpaceString(p3,3,"");

      char p4[90];
      sprintf(p4,"%s",static_cast_to_string(kem));
      FreeSpaceString(p4,3,"");

      char p5[90];
      sprintf(p5,"%s,%s,%s,%s",p1,p2,p3,p4);
      FreeSpaceString(p5,3,"");

      return p5;

}


DatVys(vys)     
{
   char vv[91];
   sprintf(vv,"%.90s",static_cast_to_string(vys));

   var VHParam = CreateObject("ParamFuncRW");
   VHParam.IInitial(static_cast_to_string(vv)," .",3);

   char v1[10];
   sprintf(v1,"%.9s", static_cast_to_string(VHParam.Get(2)));
   char v2[10];
   sprintf(v2,"%.9s", static_cast_to_string(VHParam.Get(1)));
   char v3[10];
   sprintf(v3,"%.9s", static_cast_to_string(VHParam.Get(0)));

   char v4[20];
   sprintf(v4,"%s.%s.%s",v1,v2,v3);
   return v4;
}



CodK(tab)   // 
{
   char tn[91], tn2[91];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   //double tabn = atof(tn);

   char n1[2], n2[3], n3[4], n4[5];
   n1[0]='0';
   int ln = strlen(tn);

  // if ( ln == 1 )  sprintf(tn2,"%s%s%s%s%s",n1,n1,n1,n1,tn);
  // if ( ln == 2 )  sprintf(tn2,"%s%s%s%s",n1,n1,n1,tn);
  // if ( ln == 1 )  sprintf(tn2,"%s%s%s",n1,n1,tn);
   if ( ln == 1 )  sprintf(tn2,"%s%s",n1,tn);
   if ( ln == 2 )  sprintf(tn2,"%s",tn);

   //sprintf(tn2,"%s%s",n1,tn);

   return tn2;

}


VidNU(tab)   // 
{
   char tn[91], tn2[91];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   //double tabn = atof(tn);

   char n1[2], n2[3], n3[4], n4[5];
   n1[0]='0';
   int ln = strlen(tn);

  // if ( ln == 1 )  sprintf(tn2,"%s%s%s%s%s",n1,n1,n1,n1,tn);
  // if ( ln == 2 )  sprintf(tn2,"%s%s%s%s",n1,n1,n1,tn);
   if ( ln == 1 )  sprintf(tn2,"%s%s%s",n1,n1,tn);
   if ( ln == 2 )  sprintf(tn2,"%s%s",n1,tn);
   if ( ln == 3 )  sprintf(tn2,"%s",tn);

   //sprintf(tn2,"%s%s",n1,tn);

   return tn2;

}



TabN(tab)   // 
{
   char tn[91], tn2[91];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   //double tabn = atof(tn);

   char n1[2], n2[3], n3[4], n4[5];
   n1[0]='0';
   int ln = strlen(tn);

   if ( ln == 1 )  sprintf(tn2,"%s%s%s%s%s",n1,n1,n1,n1,tn);
   if ( ln == 2 )  sprintf(tn2,"%s%s%s%s",n1,n1,n1,tn);
   if ( ln == 3 )  sprintf(tn2,"%s%s%s",n1,n1,tn);
   if ( ln == 4 )  sprintf(tn2,"%s%s",n1,tn);
   if ( ln == 5 )  sprintf(tn2,"%s",tn);

   //sprintf(tn2,"%s%s",n1,tn);

   return tn2;

}


RV4(tab)   // 
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   double llss = atof(ls1);
   lsread(ls1,0);                   // инициализация ТН

   double rv4;
   rvvid("*",4,0,rv4);
   return rv4;

  // rv4=dney_v_tab("Р",calm,1,countday);

  // return rv4;

}


Podr(tab)   // № подраздел из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char str1[9];
      kch_from("podr",str1);
      int pr = atoi(str1);
      return pr;
    }
}

Fam(tab)   // фамилия из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char str1[30];
      kch_from("f",str1);
      //int pr = atoi(str1);
      return str1;
    }
}


VysVet(tab)   // фамилия из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   if(tabn != 0)
    {
      lsname(Find_Full_TN(tabn),ls1);
      FreeSpaceString(ls1,3,"");
      double llss = atof(ls1);
      lsread(ls1,0);                   // инициализация ТН

      char str1[30];
      kch_from("vet_vys",str1);
      //int pr = atoi(str1);
      return str1;
    }
}



Prof(tab)   // № графика из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   double llss = atof(ls1);
   lsread(ls1,0);                   // инициализация ТН

   char str1[9];
   kch_from("pr_souz",str1);
   int pr = atoi(str1);
   return pr;

}


Vysl(tab)   // № графика из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   double llss = atof(ls1);
   lsread(ls1,0);                   // инициализация ТН

   char str1[9];
   kch_from("grafik",str1);
   int tn1 = atoi(str1);
  // return tn1;

   double n3;   
   procent_ot_staga(5,"datavys",1,0,1,EOF,0,0,n3);  // n3 - % от стажа

   return n3;

}

Graf(tab)   // № графика из КЧ
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   double llss = atof(ls1);
   lsread(ls1,0);                   // инициализация ТН

   char str1[9];
   kch_from("grafik",str1);
   int tn1 = atoi(str1);
   return tn1;


}

PersV(vyh)    // извлеч перс вычетов из deti0110_103.dbf
{
   char a2[91];
   sprintf(a2,"%.90s",static_cast_to_string(vyh));

   var VHParam = CreateObject("ParamFuncRW");
   VHParam.IInitial(static_cast_to_string(a2)," ;",3);

   char a22[10];
   sprintf(a22,"%.9s", static_cast_to_string(VHParam.Get(0)));

  //return a22;


   char a3[91];
   sprintf(a3,"%.90s",static_cast_to_string(a22));

   var VYParam = CreateObject("ParamFuncRW");       
   VYParam.IInitial(static_cast_to_string(a3)," ,",3);

   char a33[10];
   sprintf(a33,"%.9s", static_cast_to_string(VYParam.Get(1)));
   char a31[1];
   if ((atoi(a33)==104) || (atoi(a33)==105)) return a33;
   else return a31;

}

Praz30(tim,tab)
{ 

   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim));
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   double n1=0, n2=0, n3=0, n4=0, n5=0, n6=0;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   n3=n1;

   s73();
   s100("н",0,25,n4);   // выборка сумм по 26-му столбцу

   skoljko(n5,data,1,countday,rsimv,calm,cht);

   //if ( time != 0 )  n6=2*((n3*time/norm(2))+(n4/n5*time));  // коррекция от
   if ( time != 0 )  n6=n3*time/norm(2);                       // 03.03.2010
   round2(n6,0,0,n6);
   return n6;
}


Pod(tab)  // извлеч №_подразд на основании таб_№
{
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   char str1[9];
   kch_from("podr",str1);
   FreeSpaceString(str1,3,"");

   return str1;
}

KoOtp()
{
   char str1[9];
   kch_from("tn",str1);
   int tn1 = atoi(str1);
   return tn1;
}

SvPer(tim1,tab)   // св-урочные переводные часы
{
   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(tim1));
   FreeSpaceString(tm1,3,"");
   double n3 = atof(tm1);      //переводное время для св-ур

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);

   lsname(Find_Full_TN(tabn),ls1);
   FreeSpaceString(ls1,3,"");
   double llss = atof(ls1);
   lsread(ls1,0);                   // инициализация ТН


   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4   
   double n6;
   n6=(n5*n3/norm(2)); // -  переводные часы (с оклада)
   round2(n6,0,0,n6);
   return n6;
}

SvOsn(tim1,tab)   // св-урочные основные часы
{
   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(tim1));
   FreeSpaceString(tm1,3,"");
   double n3 = atof(tm1);      //основное время для св-ур

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4
   // находим надбавки
   double n_4, n_5, n_31, n_43, n_46, n_68, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 25, 0, 0, n_68);
   poiskbz(0, 21, 0, 0, n_71);
   double n4;
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+(n_4/100*n_68)+(n_4/100*n_71);
   n5 = n5 + n4;
   double n6;
   n6=(n5*n3/norm(2)); // - основные часы (с оклада + надбавки)
                              
   round2(n6,0,0,n6);
   return n6;

}

SvUr25(tim1,tim2,tab)
{ 

   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(tim1));
   FreeSpaceString(tm1,3,"");
   double t3 = atof(tm1);         //колич первых 2 часов

   char tm2[91];
   sprintf(tm2,"%.90s",static_cast_to_string(tim2));
   FreeSpaceString(tm2,3,"");
   double t4 = atof(tm2);         //колич следующих часов

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН


   double pr1 = 1.5;   // процент доплаты тарифа за первые 2 часа
   double pr2 = 2;     // процент доплаты тарифа за след. часы

   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4   

   double n6;
   //n6 = pr1 * (n5*t3/norm(2)); // -  стоим первых 2 часов (с оклада)
     n6 = pr2 * (n5*t4/norm(2)); // -  стоим следующих часов (с оклада)
   round2(n6,0,0,n6);


   // находим надбавки
   double n_4, n_5, n_31, n_43, n_46, n_68, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 25, 0, 0, n_68);
   poiskbz(0, 21, 0, 0, n_71);

   double n4;
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+(n_4/100*n_68)+(n_4/100*n_71);

   double n55 = n5 + n4;  //полный набор видов для суммы
   double n66;
   //n66=pr2 * (n55*t4/norm(2)); // - основные часы (с оклада + надбавки)
     n66=pr1 * (n55*t3/norm(2)); // - основные часы (с оклада + надбавки)
   round2(n66,0,0,n66);

   double n77 = pr2 * (n55*t4/norm(2));   // двойные часы

   //double svur = n6 + n66;
   double svur = n77 + n66;

   return svur;
}


Sverx25(osn,per,tab)
{ 

   char tm1[91];
   sprintf(tm1,"%.90s",static_cast_to_string(osn));
   FreeSpaceString(tm1,3,"");
   double t3 = atof(tm1);         //колич основных часов (от полной базы)

   char tm2[91];
   sprintf(tm2,"%.90s",static_cast_to_string(per));
   FreeSpaceString(tm2,3,"");
   double t4 = atof(tm2);         //колич переводных часов  (от оклада)

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН


   // находим оклад
   double n5;                 // для суммы оклада из БЗ
   poiskbz(0, 4, 0, 0, n5);   // баз.знач. вида с внутр. кодом 4   

   double  n6 = n5*t4/norm(2); // -  сумма за переводные часы (с оклада)
   round2(n6,0,0,n6);


   // находим надбавки
   double n_4, n_5, n_31, n_43, n_46, n_68, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 25, 0, 0, n_68);
   poiskbz(0, 21, 0, 0, n_71);

   double n4;
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+(n_4/100*n_68)+(n_4/100*n_71);

   double n55 = n5 + n4;       // - полная база для основных часов
   double n66= n55*t3/norm(2); // - сумма по основным часам (с оклада + надбавки)
   round2(n66,0,0,n66);

   double svur = n6 + n66;

   return svur;
}



Vech19N(tim,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim)); // ночные часы
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1+n2;

   double proc = 35;
   //if (prz == 1) proc = 35;

   n5=n3/norm(2)*time*proc/100;
   round2(n5,0,0,n5);
   return n5;
}


Vech19(tim,przn,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim)); // ночные часы
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char pr[91];
   sprintf(pr,"%.90s",static_cast_to_string(przn));
   FreeSpaceString(pr,3,"");
   double prz = atof(pr);                          // признак 35%
   
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1+n2;

   double proc = 20;
   if (prz == 1) proc = 35;

   n5=n3/norm(2)*time*proc/100;
   round2(n5,0,0,n5);
   return n5;
}

Noch20N(tim,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim)); // ночные часы
   FreeSpaceString(tm,3,"");
   double time = atof(tm);
   
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

    char str1[9];
    kch_from("noch",str1);
    double proc = atof(str1);  //теперь % ночных берется из КЧ


   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1+n2;

   //double proc = 40;
   //if (prz == 1) proc = 35;

   n5=n3/norm(2)*time*proc/100;
   round2(n5,0,0,n5);
   return n5;
}


Noch20(tim,przn,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim)); // ночные часы
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char pr[91];
   sprintf(pr,"%.90s",static_cast_to_string(przn));
   FreeSpaceString(pr,3,"");
   double prz = atof(pr);                          // признак 35%
   
   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН

   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1+n2;

   double proc = 40;
   if (prz == 1) proc = 35;

   n5=n3/norm(2)*time*proc/100;
   round2(n5,0,0,n5);
   return n5;
}




Vyh23(tim,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim));
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН
   
   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
   poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1+n2;

   s73();
   s100("н",0,25,n4);   // выборка сумм по 26-му столбцу

   double n_4, n_5, n_31, n_43, n_46, n_45, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 24, 0, 0, n_45);
   poiskbz(0, 21, 0, 0, n_71);
   n4 = (n_4/100*n_5)+(n_4/100*n_31)+n_43+n_46+n_45+(n_4/100*n_71);

   n5=(n3*time/norm(2))+n4/norm(2)*time;
   round2(n5,0,0,n5);
   return n5;
}


Vyh22(tim,tab)
{ 
   char tm[91];
   sprintf(tm,"%.90s",static_cast_to_string(tim));
   FreeSpaceString(tm,3,"");
   double time = atof(tm);

   char tn[91], ls1[255];
   sprintf(tn,"%.90s",static_cast_to_string(tab));
   FreeSpaceString(tn,3,"");
   double tabn = atof(tn);
   lsname(Find_Full_TN(tabn),ls1);
   lsread(ls1,0);                   // инициализация ТН


   double n1, n2, n3, n4, n5;
   poiskbz(0, 4, 0, 0, n1);  //оклад по 4-му виду
  // poiskbz(0, 6, 0, 0, n2);  //оклад по 6-му виду
   n3=n1;   //+n2;

  // s73();
  // s100("н",0,29,n4);   // выборка сумм по 30-му столбцу

   double s5;             //!!!   ВНИМАНИЕ:          
   sumvid("*m",15,0,s5);  //s5 действит только на этапе внедрения

   double n_4, n_5, n_31, n_43, n_46, n_45, n_71;
   poiskbz(0, 4, 0, 0, n_4);
   poiskbz(0, 15, 0, 0, n_5);
   poiskbz(0, 31, 0, 0, n_31);
   poiskbz(0, 19, 0, 0, n_43);
   poiskbz(0, 16, 0, 0, n_46);
   poiskbz(0, 24, 0, 0, n_45);
   poiskbz(0, 21, 0, 0, n_71);
   
   n4 = (n_4/100*n_5)+s5+(n_4/100*n_31)+n_43+n_46+n_45+(n_4/100*n_71);
   // убран 31-й вид до расчёта в марте
   //n4 = (n_4/100*n_5)+s5+n_43+n_46+n_45+(n_4/100*n_71);

   n5=2*(n3*time/norm(2))+n4/norm(2)*time;
   round2(n5,0,0,n5);
   return n5;
}


MesGod(m1,g1)
{
   char ms[10];
   sprintf(ms,"%.9s",static_cast_to_string(m1));
   FreeSpaceString(ms,3,"");
   char gd[10];
   sprintf(gd,"%.9s",static_cast_to_string(g1));
   // FreeSpaceString(gd,3,"");
   int god=atoi(gd);
   god=2000+god;

   char mg[8];
   sprintf(mg,"%s.%s", static_cast_to_string(ms),static_cast_to_string(god));

   return mg;
}


TabNew(a1,a2,a3)
{
   double b1, b2, b4 ;
   b1 = a1; 
   b2 = a2;
   b4 = b2 - b1;   //разница:  календ_дни - число_кал_дней_прих_на_отраб_время

   char tab1[91];
   sprintf(tab1,"%.90s",static_cast_to_string(a3));    //календ по нормативному гоафику

   char tab2[32];
   sprintf(tab2,"%.31s", static_cast_to_string(tab1)); //календ для разноски в ЛС, если b4==0
   // FreeSpaceString(tab2,3,"");

   if ( b4 > 0 )
     {
      char tab4[b4+1];   //массив для символов "Н"
      char tab5[32];     //массив для неизмененной части календ (т.е. из нормативного графика) 
      double b5 = strlen(tab1);

      for(var m=b4; m<=b5; m++)   tab5[m-b4] = tab2[m];

      for(var m=1; m<=b4; m++)    tab4[m-1] ='Н';
     
      sprintf(tab2,"%s%s", static_cast_to_string(tab4),static_cast_to_string(tab5));
    }

   return tab2;  
}

TabExl(tbm,nom)
{
   char tab[32];
   sprintf(tab,"%.31s",static_cast_to_string(tbm));
   char nomr[9];
   sprintf(nomr,"%.8s",static_cast_to_string(nom));
   int nm=atoi(nomr);

   char sym[2];
   sym[0] = tab[nm-1];
   return sym;
}