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


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

   int CountTabl = 0;
   int NumZap = 0;

   int MaxSZVM = 99999;
   double sm_fss[MaxSZVM];
   //int SZVM_tn[MaxSZVM];     // массив для данных из табл СЗВ_М  
   //string RSV_tn[MaxSZVM];      // массив для данных из табл  RSV

   int Nmes = 0;        // № проверяемого месяца (в квартале)
   int KolZap=0;

Dialog( AdrCTabl,     // адрес передаваемой таблицы
       AdrCListTabl, // адрес списка таблиц
       RcrInList      // номер записи в списке таблиц
      )
{
   // подготавливаем предварительно массивы
   for ( int LRcr=0; LRcr<MaxSZVM; LRcr++ )
    {
     //SZVM_tn[LRcr]=0;
     //RSV_tn[LRcr]="";
     sm_fss[LRcr]=0;
    }


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



   var CListTabl = CreateObject("CurPrnTbl");   // список таблиц
   CListTabl.Initial(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(" Прием информации из таблиц ","",
                        "  Таблица_N: ",CountTabl, 3)
                                                              ) return ESC;

      ReadTbl();  
   }


   KolZap=0;

   for ( int RcrSZVM=0; RcrSZVM<CTabl.Count_Rcr(); ++RcrSZVM )        //  просматр таблицу  SZVM
    {                                                                   
     int TN_szvm = atoi(CTabl.TextS("C_FIO",RcrSZVM));                 //  заполняем массив SZVM_tn[]  данными из табл "СЗВ-М"  

     double razn = atof(CTabl.TextS("S_Full_Y",RcrSZVM)) - sm_fss[TN_szvm];

     KolZap++;

     CTabl.STextS("S_Full_Y_1",RcrSZVM, to_string(sm_fss[TN_szvm]));  
     CTabl.STextS("Razn",RcrSZVM, to_string(razn));
     //CTabl.STextS("Razn",RcrSZVM, to_string(KolZap));
                      
    }

   if (ESC==Panel_Zapros(" Сверка таблиц закончена","",
                        "  всего записей: ",KolZap, 5)
                                                              ) return ESC;


   // сверка массивов  RSV_tn и SZVM_tn



  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));

       sm_fss[NewTN]  = atof(SpTabl.TextS("S_Full_Y",RcrTbl));
        
                      
       KolZap++;
      }

   if (ESC==Panel_Zapros(" Формиров массива  sm_fss[tn] закончено","",
                        "  всего записей: ",KolZap, 5)
                                                              ) return ESC;

}


