// модуль предназначен для приема информации из таблицы РСВ-1    выделенной в списке таблиц
//   в таблицу "Контроль СЗВ-м"
//        
//   Вызывается по Alt-F10.  Вызов из Ф-ции приема из файла:  user\ctrl_SZVm,Dialog,0 
//   
//   //на основе sta_705
char nt1[4], nt2[4], nt3[4], nt4[4], nt5[4], nt6[4];


   var CTabl   = CreateObject("CurPrnTbl");
   var SpTabl  = CreateObject("CurPrnTbl");     // таблицы из списка

int CountTabl = 0;


Dialog( AdrCTabl,     // адрес передаваемой таблицы
       AdrCListTabl, // адрес списка таблиц
       RcrInList      // номер записи в списке таблиц
     )
{

  CTabl.Initial(AdrCTabl);    // текущая таблица
  CTabl.Clear();              // очистка таблицы

   var CListTabl = CreateObject("CurPrnTbl");   // список таблиц
   CListTabl.Initial(AdrCListTabl);


  // int CrIns=CListTabl.GetCountInsertRcr();     // колич таблиц, выделнных INS
  //
  // if (ESC==Panel_Zapros(" Просмотр списка выбранных таблиц ","",
  //                       "Всего выбрано таблиц: ",CrIns, 3)      
  //                                                         ) return ESC;                                                             
  //   надо добавить (вставить)



   for ( int LRcr=0; LRcr<CListTabl.Count_Rcr(); LRcr++ )
   {
      if( CListTabl.Check_Empty_Rcr(LRcr) || !CListTabl.Flag_Action_0(LRcr) ) continue;

      long newt = CListTabl.GetTableFromList(LRcr);
      if ( !newt ) continue;

      SpTabl.Initial(newt);

      CountTabl = CountTabl + 1;
                                    
      if (ESC==Panel_Zapros(" Прием информации из таблиц ","",
                        "  Таблица_N: ",CountTabl, 3)
                                                              ) return ESC;


      ReadTbl();  


   }

  return 1;
}


ReadTbl()
{
           // Если у нас получилась всего одна строка да и та пустая   (т.е. в файле нет информации), то выходим
           // if ( SpTabl.Count_Rcr()<2 &&  SpTabl.Check_Empty_Rcr(0)==-1 ) return ESC;

     //double Vyrab=0, Sum_06=0, Sum_34=0;
     string fio, frv;
     
     //int OldTN = atoi(SpTabl.TextS("C_FIO",0));
     int Year = atoi(SpTabl.TextS("Year",0));
     string MonthBeg = SpTabl.TextS("MonthBeg",0);
     string MonthEnd = SpTabl.TextS("MonthEnd",0);
     char MBeg[90], MEnd[90];
     sprintf(MBeg,"%s.%s",MonthBeg,to_string(Year)); 
     sprintf(MEnd,"%s.%s",MonthEnd,to_string(Year)); 

     var mes1  = CreateObject("KDate");    mes1.SetDate(to_string(MBeg));      int mBA=mes1.GetAbs();
     var mes2  = CreateObject("KDate");    mes2.SetDate(to_string(MEnd));      int mEA=mes2.GetAbs();
  
     string StagMAS[90];

     // Начинаем обработку файла построчно
     for ( int RcrTbl=0; RcrTbl<SpTabl.Count_Rcr(); ++RcrTbl )
      {
       int NewTN = atoi(SpTabl.TextS("C_FIO",RcrTbl));
       string FIO = SpTabl.TextS("FIO",RcrTbl);
       string Fio1 = SpTabl.TextS("Fio1",RcrTbl);
       string Fio2 = SpTabl.TextS("Fio2",RcrTbl);
       string Fio3 = SpTabl.TextS("Fio3",RcrTbl);
                                                           
       int CountStag = atoi(SpTabl.TextS("CountStag",RcrTbl));
       string Stag1 = SpTabl.TextS("Stag1",RcrTbl);  StagMAS[1] =  Stag1;
       string Stag2 = SpTabl.TextS("Stag2",RcrTbl);  StagMAS[2] =  Stag2;
       string Stag3 = SpTabl.TextS("Stag3",RcrTbl);  StagMAS[3] =  Stag3;
       string Stag4 = SpTabl.TextS("Stag4",RcrTbl);  StagMAS[4] =  Stag4;
       string Stag5 = SpTabl.TextS("Stag5",RcrTbl);  StagMAS[5] =  Stag5;
       string Stag6 = SpTabl.TextS("Stag6",RcrTbl);  StagMAS[6] =  Stag6;

       string Stag7 = SpTabl.TextS("Stag7",RcrTbl);  StagMAS[7] =  Stag7;
       string Stag8 = SpTabl.TextS("Stag8",RcrTbl);  StagMAS[8] =  Stag8;
       string Stag9 = SpTabl.TextS("Stag9",RcrTbl);  StagMAS[9] =  Stag9;
       string Stag10 = SpTabl.TextS("Stag10",RcrTbl); StagMAS[10] =  Stag10;
       string Stag11 = SpTabl.TextS("Stag11",RcrTbl); StagMAS[11] =  Stag11;
       string Stag12 = SpTabl.TextS("Stag12",RcrTbl); StagMAS[12] =  Stag12;

       string Stag13 = SpTabl.TextS("Stag13",RcrTbl); StagMAS[13] =  Stag13;
       string Stag14 = SpTabl.TextS("Stag14",RcrTbl); StagMAS[14] =  Stag14;
       string Stag15 = SpTabl.TextS("Stag15",RcrTbl); StagMAS[15] =  Stag15;
       string Stag16 = SpTabl.TextS("Stag16",RcrTbl); StagMAS[16] =  Stag16;
       string Stag17 = SpTabl.TextS("Stag17",RcrTbl); StagMAS[17] =  Stag17;
       string Stag18 = SpTabl.TextS("Stag18",RcrTbl); StagMAS[18] =  Stag18;

       string Stag19 = SpTabl.TextS("Stag19",RcrTbl); StagMAS[19] =  Stag19;
       string Stag20 = SpTabl.TextS("Stag20",RcrTbl); StagMAS[20] =  Stag20;
       string Stag21 = SpTabl.TextS("Stag21",RcrTbl); StagMAS[21] =  Stag21;
       string Stag22 = SpTabl.TextS("Stag22",RcrTbl); StagMAS[22] =  Stag22;
       string Stag23 = SpTabl.TextS("Stag23",RcrTbl); StagMAS[23] =  Stag23;
       string Stag24 = SpTabl.TextS("Stag24",RcrTbl); StagMAS[24] =  Stag24;

       string Stag25 = SpTabl.TextS("Stag25",RcrTbl); StagMAS[25] =  Stag25;

                                                         
       int StgON1, StgON2, StgON3;
       StgON1 = StgON2 = StgON3 = 0;


       //var mes3  = CreateObject("KDate");    mes3.SetDate(to_string(st1));      int mBA_3=mes3.GetAbs();
       //var mes4  = CreateObject("KDate");    mes4.SetDate(to_string(st2));      int mEA_4=mes4.GetAbs();
       //       char st3[90];
       //       sprintf(st3,"%s___%s",to_string(mBA_3),to_string(mBA_3));


       for(int i=1; i<=25;  i++)
        {
         string st1 =  SubStr(StagMAS[i],3,7);  FreeSpaceString(st1,3,"");
         string st2 =  SubStr(StagMAS[i],14,7); FreeSpaceString(st2,3,"");
         var mes3  = CreateObject("KDate");    mes3.SetDate(to_string(st1));      int mBA_3=mes3.GetAbs();
         var mes4  = CreateObject("KDate");    mes4.SetDate(to_string(st2));      int mEA_4=mes4.GetAbs();

         if( (mBA_3 == mBA) && (mEA_4 == mBA) )      { StgON1 = 1; }
         if( (mBA_3 == mBA) && (mEA_4 == (mBA+1)) )  { StgON1 = StgON2 = 1; }
         if( (mBA_3 == mBA) && (mEA_4 == mEA) )      { StgON1 = StgON2 = StgON3 = 1; }
         if( (mBA_3 == (mBA+1)) && (mEA_4 == mEA) )  { StgON2 = StgON3 = 1; }
         if( (mBA_3 == mEA) && (mEA_4 == mEA) )      { StgON3 = 1; }

         if( (mBA_3 == (mBA+1)) && (mEA_4 == (mBA+1)) )      { StgON2 = 1; }
                                                
        }


       WriTabl(NewTN,FIO,Fio1,Fio2,Fio3,CountStag,Stag1,Stag2,Stag3,Stag4,Stag5,Stag6,Stag7,Stag8,Stag9,Stag10,Stag11,Stag12,
               MBeg,MEnd,mBA,mEA,Year,
               StgON1,StgON2,StgON3);

       //  if(NewTN != OldTN)
       //   {
       //    if(Vyrab != 0) WriTabl(OldTN,fio,Vyrab,Sum_06,Sum_34,frv);
       //    Vyrab = Sum_06 = Sum_34 =0;
       //    //frv = 0;
       //    OldTN = NewTN;
       //   }

       //  fio = SpTabl.TextS("FIO",RcrTbl);
       //  frv = SpTabl.TextS("frv_d",RcrTbl);
     
       //  Vyrab  += atof(SpTabl.TextS("VsegoDt",RcrTbl));
       //  Sum_06 += atof(SpTabl.TextS("Sum006",RcrTbl));
       //  Sum_34 += atof(SpTabl.TextS("Sum034",RcrTbl));

      }
}


WriTabl(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,MBeg,MEnd,mBA,mEA,Year,StgON1,StgON2,StgON3)
{
        int CurRcr = CTabl.Count_Rcr()-1;
        CTabl.Add_Rcr(CurRcr,1);

        CTabl.STextS("C_FIO",CurRcr, static_cast_to_string(a1));  
        CTabl.STextS("FIO",CurRcr, static_cast_to_string(a2));
        CTabl.STextS("Fio1",CurRcr, static_cast_to_string(a3));
        CTabl.STextS("Fio2",CurRcr, static_cast_to_string(a4));
        CTabl.STextS("Fio3",CurRcr, static_cast_to_string(a5));

        CTabl.STextS("CountStag",CurRcr, static_cast_to_string(a6));
        CTabl.STextS("Stag1",CurRcr, static_cast_to_string(a7));
        CTabl.STextS("Stag2",CurRcr, static_cast_to_string(a8));
        CTabl.STextS("Stag3",CurRcr, static_cast_to_string(a9));
        CTabl.STextS("Stag4",CurRcr, static_cast_to_string(a10));
        CTabl.STextS("Stag5",CurRcr, static_cast_to_string(a11));
        CTabl.STextS("Stag6",CurRcr, static_cast_to_string(a12));
        CTabl.STextS("Stag7",CurRcr, static_cast_to_string(a13));
        CTabl.STextS("Stag8",CurRcr, static_cast_to_string(a14));
        CTabl.STextS("Stag9",CurRcr, static_cast_to_string(a15));
        CTabl.STextS("Stag10",CurRcr, static_cast_to_string(a16));
        CTabl.STextS("Stag11",CurRcr, static_cast_to_string(a17));
        CTabl.STextS("Stag12",CurRcr, static_cast_to_string(a18));


        CTabl.STextS("MonthBeg",CurRcr, static_cast_to_string(MBeg));
        CTabl.STextS("MonthEnd",CurRcr, static_cast_to_string(MEnd));                                                                          
        CTabl.STextS("MBegAbs",CurRcr, static_cast_to_string(mBA));
        CTabl.STextS("MEndAbs",CurRcr, static_cast_to_string(mEA));
        CTabl.STextS("Year",CurRcr, static_cast_to_string(Year));

        //CTabl.STextS("LStag1",CurRcr, static_cast_to_string(st3));
                                                                 

        CTabl.STextS("StgON1",CurRcr, static_cast_to_string(StgON1));
        CTabl.STextS("StgON2",CurRcr, static_cast_to_string(StgON2));
        CTabl.STextS("StgON3",CurRcr, static_cast_to_string(StgON3));

}
