MarkGuardians()
{
  //цикл по ЛС
  {
    bool bInsertls=false;//только по выделенным ЛС 
    bool skipArhiveLs=true; //пропустить архивные ЛС
    int countLs=(bInsertls)?cntnum:counttn;

    var CMsg = CreateObject("ProgressBar");    CMsg.Initial(0,100,50);    CMsg.SetShowTime(false);
    for(int i=0;i<countLs;i++)
    {
      if (CMsg.Msg_Proc(("Подождите немного. Идет обработка ЛС"),100.*i/countLs)==ESC ) {return ESC;}
      
      int tnum=(bInsertls)?Porobr1(i)%sizetn:tn(i)%sizetn;
      if (skipArhiveLs && IsArchLS(tnum))
        continue;
        
      int RC=LSRead(tnum, 0); //читаем ЛС
      if ( !RC || RC==ESC ) //не удалось прочитать
        continue;
      
      //if (IsLsGuardian())//текущий ЛС опекун - отмечаем
      if (IsLsAlim())      //текущий ЛС алимнты - отмечаем
        MarkLs(tnum);
      }
    }  
}

IsLsGuardian()
{
  
  var List = CreateObject("ListOfKin");
  for (List.SetBegin(); !List.IsEnd(); List.Next() )
  {
    var Kin = List.GetCurKin();
    int idKindFss=Kin.GetIDKindFSS();
    if (idKindFss==40) //"опекун"
      return 1;
  }
  return 0;
}

MarkLs(tn)
{
  int ind = poiskl(tn);
  if (ind != EOF) 
    SetAtr(ind, ++porobr);
}



IsLsAlim()
{
     double KodVidaNU=0.;  
     int Kod_alim = 219;
     
     for ( int i=0; i<countkod; i++ )            // цикл по строкам видов в ЛС
     {
      KodVidaNU=GetCode(i);   // попробовать GetIntegerCode (  int Row)int
      double DatEnd = GetEndDate(i);

      var dd  = CreateObject("KDate"); //создаем объекта класса  KDate  
      dd.SetMonth(mrasch);             //инициализируем объект значением глобальной переменной mrasch
      double dat=dd.GetDouble();

      //var d  = CreateObject("KDate");     //создаем объекта класса  KDate  
      //d.SetDate("11.02.2013");            //инициализируем объект строкой вида ДД.ММ.ГГГГ
      //double dat=d.GetDouble();           //метод вернет 201302.11



      char KodV[250];   sprintf(KodV,"%s",static_cast_to_string(KodVidaNU));
      var PSParam = CreateObject("ParamFuncRW");
      PSParam.IInitial(static_cast_to_string(KodV),".",2);
      char KodShort[150];                                   // ищем целое значение вида
      sprintf(KodShort,"%s", static_cast_to_string(PSParam.Get(0))); FreeSpaceString(KodShort,3,"");

      // if (KodShort == Kod_alim) return 1;    // нашли хотя бы один 
      if ((KodShort == Kod_alim) && (DatEnd > dat))  return 1; 

     }
     return 0;
}
 