// модуль предназначен для приема информации из таблицы "6НДФЛ"    выделенной в списке таблиц
//   в таблицу "2016-Форма 6-НДФЛ (Обобщенный регистр 201807)" 
//        
//   Вызывается по Alt-F10.  Вызов из "Ф-ция приема из файла" :  user\ndfl6_reg,Dialog,0 
//   
//   //на основе  ctrl_SZVm2, sta_705

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

   int CountTabl = 0;
   int NumZap = 0;
   int KolZap = 0;

Dialog( AdrCTabl,     // адрес передаваемой таблицы
       AdrCListTabl,  // адрес списка таблиц
       RcrInList      // номер записи в списке таблиц
      )
{
   CTabl.Initial(AdrCTabl);    // текущая таблица
   CTabl.Clear();              // очистка таблицы

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

           // таблица со списком подготовленных таблиц//   var MainTable=CreateObject("VedListMainTable");//   MainTable.InitByAdr(AdrCListTabl);

   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(" Прием информации из таблиц ","",
                        "Отмечено таблиц для анализа: ",CountTabl, 3)
                                                              ) return ESC;

      ReadTbl();
      SpTabl.Reduce();
      //SpTabl.Del_Empty_Rcr();      
   }

  return 1;
}




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

   KolZap=0;
     
     // Просматриваем таблицу-источник
     for ( int RcrTbl=0; RcrTbl<SpTabl.Count_Rcr(); ++RcrTbl )
      {
       int NewTN = atoi(SpTabl.TextS("C_FIO",RcrTbl));

       int IDDepart   = atoi(SpTabl.TextS("IDDepart",RcrTbl));                            
       int IDVed      = atoi(SpTabl.TextS("IDVed",RcrTbl));
       int IDTypeInc  = atoi(SpTabl.TextS("IDTypeInc",RcrTbl));

       string Fld100  = SpTabl.TextS("Fld100",RcrTbl);                                              
       string Fld110  = SpTabl.TextS("Fld110",RcrTbl);                                              
       string Fld120  = SpTabl.TextS("Fld120",RcrTbl);                                              

       string Fld130  = SpTabl.TextS("Fld130",RcrTbl);                                              
       string Fld140  = SpTabl.TextS("Fld140",RcrTbl);                                              

       // выделяем месяц
       char c1[20];  char c2[10];
       sprintf(c1,"%s",to_string(Fld100));  FreeSpaceString(c1,3,"");
       c2 = SubStr(c1,3,2);  FreeSpaceString(c2,3,"");

       // вычеты и налог
       double Fld30_13 = 0;  // вычеты по ФЛ
       double Fld40_13 = 0;  // исчисленный НДФЛ по ФЛ
       if(NewTN && !IDTypeInc) {
                     // Fld20_13  всего доход к обложению по ставке 13% начисленный в отчетном периоде
          Fld20_13 = atof(SpTabl.TextS("Fld20_13",RcrTbl));  
                     // Fld30_13  всего вычетов по ставке 13% приходящихся на отчетный период
          Fld30_13 = atof(SpTabl.TextS("Fld30_13",RcrTbl));
                     // Fld40_13  всего НДФЛ по ставке 13% начисленный в отчетном периоде
          Fld40_13 = atof(SpTabl.TextS("Fld40_13",RcrTbl));

          //if (ESC==Panel_Zapros(" Обраб вычеты и НДФЛ ","",
          //                   "Fld30_13: ",Fld30_13, 10,
          //                   "Fld40_13: ",Fld40_13, 10)
          //                                                    ) return ESC;


       }

       if ( IDTypeInc > 0 )  WriTabl(NewTN,IDDepart,IDVed,IDTypeInc,Fld100,Fld110,Fld120,Fld130,Fld140,c2);
       
       KolZap++;
      }
}


WriTabl(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
{
        int CurRcr = CTabl.Count_Rcr()-1;
        CTabl.Add_Rcr(CurRcr,1);

        CTabl.STextS("C_FIO",CurRcr, static_cast_to_string(a1));  
        CTabl.STextS("Mon",CurRcr, static_cast_to_string(a10));  
        CTabl.STextS("IDDepart",CurRcr, static_cast_to_string(a2));
        CTabl.STextS("IDVed",CurRcr, static_cast_to_string(a3));
        CTabl.STextS("IDTypeInc",CurRcr, static_cast_to_string(a4));
        CTabl.STextS("Fld100",CurRcr, static_cast_to_string(a5));
        CTabl.STextS("Fld110",CurRcr, static_cast_to_string(a6));
        CTabl.STextS("Fld120",CurRcr, static_cast_to_string(a7));
        CTabl.STextS("Fld130",CurRcr, static_cast_to_string(a8));
        CTabl.STextS("Fld140",CurRcr, static_cast_to_string(a9));

        int CountFL = 1;
        CTabl.STextS("CountFL",CurRcr, CountFL);
}
