// приём инфо  из  промежут табл rsv1_info.tmp  в табл  СЗВМ
// вызов модуля  PoiskTN  из "Начало расчета таблицы"__:
//       UnloadScriptModule("user\\Ctrl_rsv_w");LoadScriptModule("user\\Ctrl_rsv_w");return PoiskTN(__AdrTable);  
// вызов модуля  ReadRSV  из "Конец расчета таблицы"__:
//       UnloadScriptModule("user\\Ctrl_rsv_w");LoadScriptModule("user\\Ctrl_rsv_w");return ReadRSV(__AdrTable);  
//

   var CTabl   = CreateObject("CurPrnTbl");
   var SprTabl  = CreateObject("CurPrnTbl");     // справ таблица

   int CountTabl = 0;
   int NumZap = 0;

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

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




ReadRSV(__AdrTable)
{
   // подготавливаем предварительно массивы
   for ( int LRcr=0; LRcr<MaxSZVM; LRcr++ )
    {
     SZVM_tn[LRcr]=0;
     RSV_tn[LRcr]="";
    }

 CTabl.Initial(__AdrTable);

 ReadSprTbl();    //  заполнили массив RSV_tn[NewTN]=StgRSV;

 Nmes = atoi(CTabl.TextS("Nmes",0));    // № проверяемого месяца (в квартале)
 KolZap=0;

   for ( int RcrSZVM=0; RcrSZVM<CTabl.Count_Rcr(); ++RcrSZVM )         //  просматр таблицу  SZVM
    {                                                                   
     int TN_szvm = atoi(CTabl.TextS("C_FIO",RcrSZVM));                 //  заполняем массив SZVM_tn[]  данными из табл "СЗВ-М"  
     SZVM_tn[TN_szvm] = RcrSZVM+1;                                     //  где:  индекс=ТН;  значение=Order_в_табл;
     KolZap++;
       
     char citi[9];  sprintf(citi,"%s",to_string(RSV_tn[TN_szvm]));   FreeSpaceString(citi,3,"");
     CTabl.STextS("CITIZEN",RcrSZVM, to_string(citi));

     string st1="";
     if(Nmes == 1)  st1=substr(citi,0,1);
     if(Nmes == 2)  st1=substr(citi,1,1);
     if(Nmes == 3)  st1=substr(citi,2,1);

     CTabl.STextS("RSV",RcrSZVM, to_string(st1));   // в табл СЗВМ в стлб "RSV" пишем признак застрахованности в РСВ                  
    }

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


   int Cnt1SZV = CTabl.Count_Rcr()-1;                 //   добавляем строку
   CTabl.Add_Rcr(Cnt1SZV,1);                          //   в конец
   CTabl.STextS("CITIZEN",Cnt1SZV, to_string(111));   //   таблицы 


   // сверка массивов  RSV_tn и SZVM_tn
   int prz_0=0;
   char SZVM_null[1000];

   for ( int LRcr=0; LRcr<MaxSZVM; LRcr++ )
    {
     char RSVstg[9];  sprintf(RSVstg,"%s",to_string(RSV_tn[LRcr]));   FreeSpaceString(RSVstg,3,"");
     string st2="";
     if(Nmes == 1)  st2=substr(RSVstg,0,1);
     if(Nmes == 2)  st2=substr(RSVstg,1,1);
     if(Nmes == 3)  st2=substr(RSVstg,2,1);

     //______________________  если в РСВ присутствует ТабНом  а в  СЗВМ  отсутствует
     if ( (atoi(st2) > 0) && (SZVM_tn[LRcr] == 0) )       //if ( (strlen(st2) > 0) && (SZVM_tn[LRcr] == 0) )
      {
       sprintf(SZVM_null,"%s;_%i",to_string(SZVM_null),LRcr);   FreeSpaceString(SZVM_null,3,"");
       prz_0 = 1;

       // мех-м добавления ТабНом в конец табл СЗВМ (если ТН в РСВ присут а в СЗВМ отсут) - пока отключен
       int CntSZV = CTabl.Count_Rcr()-1;               //   добавляем строку
       CTabl.Add_Rcr(CntSZV,1);                        //   с ТН  из массива
       CTabl.STextS("RSV",CntSZV, to_string(LRcr));    //   RSV_tn[LRcr]
      }     
    }

  string mess = to_string(SZVM_null);
  if( prz_0 > 0 )
   {
    AmbaMessageBox("ТН, отсутствующие в СЗВМ: "+mess,"Расхождения",0, 0);
   }

}



ReadSprTbl()
{
   SprTabl.InitialNameFile("T_PFOND\\rsv1_info.tmp");

   KolZap=0;
     
   //_________ Начинаем обработку записей таблицы
   for ( int RcrTbl=0; RcrTbl<SprTabl.Count_Rcr(); ++RcrTbl )
    {
      int NewTN = atoi(SprTabl.TextS("C_FIO",RcrTbl));

      int StgON1  = atoi(SprTabl.TextS("StgON1",RcrTbl));                            
      int StgON2  = atoi(SprTabl.TextS("StgON2",RcrTbl));
      int StgON3  = atoi(SprTabl.TextS("StgON3",RcrTbl));
                                                         
      //if (ESC==Panel_Zapros(" Читаем rsv1_info","",
      //                  "  NewTN:  ",NewTN, 5,
      //                  "  StgON1: ",StgON1, 5,
      //                  "  StgON2: ",StgON2, 5,
      //                  "  StgON3: ",StgON3, 5)
      //                                                        ) return ESC;

      char StgRSV[9];

      if((StgON1==1) || (StgON2==1) || (StgON3==1) )
         {
           sprintf(StgRSV,"%i%i%i",StgON1,StgON2,StgON3);  FreeSpaceString(StgRSV,3,"");
           RSV_tn[NewTN]=StgRSV;
         }

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






PoiskTN(__AdrTable)  
{
 //var CTabl = CreateObject("CurPrnTbl");
 CTabl.Initial(__AdrTable);

 for (int zap=0; zap<CTabl.Count_Rcr(); zap++)
  {
    //int tn = atoi(CTabl.TextS("C_FIO",zap));   

    string snils = CTabl.TextS("STRAH_N",zap);    //  
    int tn=TNfromStrahN(snils);

    CTabl.STextS("C_FIO",zap,to_string(tn));

  }
}









