// начало


  string name;                  // читаем имя workbook'а, чтобы обращатья потом к нему по имени
  var WSheet1; // создаем ссылку на на наш worksheet чтобы избежать впоследствии длинных записей
  string cell; // в эту строку будем записывать имена ячеек worksheet'а
  int len = 512;
  char Dir[len]; // Рабочий каталог амбы (обычно ZPL)
  string nm;     // Имя Excel шаблона
  var WorkDir,   // Рабочий каталог модуля
      xls,       // объект Excel.Application
      wb,        // объект workbook
      wsh;       // объект worksheet

  char ex1[99], ex2[6];

  int nStart = 8;
  int n = nStart;
  int NmLnEx = nStart;


int NewLst = 56;     //  56 - для матричн

int idxP = 0,
    idxK = 1,
    idxT = 2,
    idxS = 3,
    idxS01 = 4,
    idxS02 = 5,
    idxS03 = 6,
    idxS04 = 7,
    idxS05 = 8,
    idxS06 = 9,
    idxS07 = 10,
    idxS08 = 11,
    idxS09 = 12,
    idxS10 = 13,
    idxS11 = 14,
    idxS12 = 15,
    idxS13 = 16,
    idxS14 = 17,
    CountIdx=18;
int TblFld[CountIdx];


  double SumObS=0, SumObR=0, SumObV=0;
  double SrSm, SrSmN;
  double SumS[20];   // для строки  Служащие
  double SumR[20];   // для строки  Рабочие
  double SumV[20];   // для строки  Всего
  double s=0, r=0, v=0, sIt=0;      //  суммы общие по строке "Служ" "Раб"

  double SmSN[20];   //  для строк
  double SmRN[20];   //    по
  double SmVN[20];   //   НТН
  double sN=0, rN=0, vN=0;

  double SumIt[20];
  double SrIT;

  double SumKP[20], SumKPsl[20], SumKPrb[20];
  double SumZV[20], SumZVsl[20], SumZVrb[20];

  int kp, zv;
  double sItKP=0, sItZV=0;         // для итогов по КП и Заводу
  double sItKPsl=0, sItKPrb=0;     // отдельно по служ и раб
  double sItZVsl=0, sItZVrb=0;     // отдельно по служ и раб
  double SrKP=0, SrZV=0;           // численн по КП и Заводу
  double SrKPsl=0, SrKPrb=0;       // отдельно по служ и раб
  double SrZVsl=0, SrZVrb=0;       // отдельно по служ и раб
  double SrSmKP, SrSmZV;

  double SrS=0, SrR=0, SrV=0;      // численн по подразд
  double SrSN=0, SrRN=0, SrVN=0;   // численн по НТН

  int Kat;

  char Buf3[512], Buf4[512];
  char Buf31[512], Buf32[512], Buf33[512], Buf34[512];
  char Buf5[512];

  int cont = 0;

int CntStr=0;  // счётчик обработанных строк для перевода листа



Tbl6()
{
  SetupExcel();

  PreSum2();
  PreSum();
  Head();

  char Buf[512], Buf1[512], Buf2[512];   

  var CTabl = CreateObject("CurPrnTbl");
  if ( !FillIdxFldTbl(CTabl) )  return;
  
  int cr=CTabl.Count_Rcr(); // число рабочих записей в таблице

  int cntRcrTab  =0;         
  string OldPod  = CTabl.Text(TblFld[idxP],0);
  string NewPod;

  string OlPodN  = CTabl.TextS("PodrN",0);
  string NwPodN;
  string NwPodU;
  int kpO, zvO;

//______________ по записям таблицы _________________
  for (int zap=0; zap<cr; zap++)
   {
     NewPod  = CTabl.Text(TblFld[idxP],zap);
     NwPodN  = CTabl.TextS("PodrN",zap);
     cont = 0;

     kp = 0;
     zv = 0;
     NwPodU  = atoi(CTabl.TextS("Podr_U",zap));
     if ( NwPodU == 100) kp = 1;
     if ( NwPodU == 500) zv = 1;

     if ( NwPodN != OlPodN )         // если новый НТН
      {
       PrnStr(atoi(OldPod),kpO,zvO);
       OldPod=NewPod;
                        // ниже - если подразд не в НТН то итоги не нужны
       if ( atoi(OlPodN) < 100 )   PrnStr2(atoi(OlPodN));

/*
       sprintf(Buf5," -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
       print(Buf5);
*/
       OlPodN=NwPodN;

       cont = 1;
      }

     if ( cont == 0 )
      {
        if ( NewPod != OldPod )      
         {
           PrnStr(atoi(OldPod),kpO,zvO);
           OldPod=NewPod;
         }
      }


     Kat = atof(CTabl.Text(TblFld[idxK],zap));

     if (( Kat == 1) || ( Kat == 2) || ( Kat == 3))     
      {
       SumS[1] += atof(CTabl.Text(TblFld[idxS01],zap));
       SumS[2] += atof(CTabl.Text(TblFld[idxS02],zap));
       SumS[3] += atof(CTabl.Text(TblFld[idxS03],zap));
       SumS[4] += atof(CTabl.Text(TblFld[idxS04],zap));
       SumS[5] += atof(CTabl.Text(TblFld[idxS05],zap));
       SumS[6] += atof(CTabl.Text(TblFld[idxS06],zap));
       SumS[7] += atof(CTabl.Text(TblFld[idxS07],zap));
       SumS[8] += atof(CTabl.Text(TblFld[idxS08],zap));
       SumS[9] += atof(CTabl.Text(TblFld[idxS09],zap));
       SrS += atof(CTabl.Text(TblFld[idxS],zap));      

       if ( kp == 1 )  SrKPsl  += atof(CTabl.Text(TblFld[idxS],zap));
       if ( zv == 1 )  SrZVsl  += atof(CTabl.Text(TblFld[idxS],zap));
      }
     
     if (( Kat == 4) || ( Kat == 5))
      {
       SumR[1] += atof(CTabl.Text(TblFld[idxS01],zap));
       SumR[2] += atof(CTabl.Text(TblFld[idxS02],zap));
       SumR[3] += atof(CTabl.Text(TblFld[idxS03],zap));
       SumR[4] += atof(CTabl.Text(TblFld[idxS04],zap));
       SumR[5] += atof(CTabl.Text(TblFld[idxS05],zap));
       SumR[6] += atof(CTabl.Text(TblFld[idxS06],zap));
       SumR[7] += atof(CTabl.Text(TblFld[idxS07],zap));
       SumR[8] += atof(CTabl.Text(TblFld[idxS08],zap));
       SumR[9] += atof(CTabl.Text(TblFld[idxS09],zap));
       SrR += atof(CTabl.Text(TblFld[idxS],zap));

       if ( kp == 1 )  SrKPrb  += atof(CTabl.Text(TblFld[idxS],zap));
       if ( zv == 1 )  SrZVrb  += atof(CTabl.Text(TblFld[idxS],zap));
      }

     SrIT  += atof(CTabl.Text(TblFld[idxS],zap));
     if ( kp == 1 )  SrKP  += atof(CTabl.Text(TblFld[idxS],zap));
     if ( zv == 1 )  SrZV  += atof(CTabl.Text(TblFld[idxS],zap));

     kpO = kp;
     zvO = zv;
   }
  PrnStr(atoi(OldPod),kpO,zvO);
/*
  sprintf(Buf1," └────┴─────┴──────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┘"); 
  print(Buf1);
*/

  PrnStrIt();

//  sprintf(s,""); print(s);   // нормальная печать для матричного принтера

  xls.Visible=true;         // делаем Excel видимым

}


Head()
{
/*
  char arg[40], str[40];
  var Mes = CreateObject("KMonth");
  Mes.SetMonth(mtek);
  int iGod = Mes.GetYear();
  int iMes = Mes.GetMonth();

  sprintf(arg,"1,%d",mtek); R_DATA_EX(arg,str,20,0);  //Trim(str);
  FreeSpaceString(str,3,"");
  string sMes = static_cast_to_string(str);  

  sprintf(str,"%s %d г.",sMes,iGod); FreeSpaceString(str,3,"");


  char s[256];       //  sprintf(s,""); print(s);   // сжатая печать для матричного принтера
  sprintf(s,"                                         Распределение заработной платы непосредственно занятых работников по категориям и видам оплаты за %s",str); print(s);
  sprintf(s," ┌────┬─────┬──────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐"); print(s);
  sprintf(s," │    │     │      │           │           │           │           │           │           │           │           │           │           │           │           │           │           │           │           │"); print(s);
  sprintf(s," │Под-│Кате-│Чис-  │   Общая   │ 1 группа  │ 2 группа  │ 3 группа  │ 4 группа  │ 5 группа  │ 6 группа  │ 7 группа  │ 8 группа  │ 9 группа  │ 10 группа │ 11 группа │ 12 группа │ 13 группа │ 14 группа │  Средняя  │"); print(s);
  sprintf(s," │раз-│гория│лен-  │   сумма   │кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│кодов видов│ заработная│"); print(s);
  sprintf(s," │дел │     │ность │  зарплаты │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │  оплаты   │   плата   │"); print(s);
  sprintf(s," │    │     │      │           │           │           │           │           │           │           │           │           │           │           │           │           │           │           │           │"); print(s);
  sprintf(s," ├────┼─────┼──────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┼───────────┤"); print(s);

  return 0;
*/
}



PreSum2()  {
 for ( int ii=1; ii<=14; ii++ )  {
   SmSN[ii] = 0;
   SmRN[ii] = 0;
   SmVN[ii] = 0;
  }
 sN = 0;
 rN = 0;
 vN = 0;
}



PreSum() {
 for ( int ii=1; ii<=14; ii++ )  {
   SumS[ii] = 0;
   SumR[ii] = 0;
   SumV[ii] = 0;
  }
}


PrnStrIt() {
    SrSmKP = sItKP / SrKP;
    double SrSmKPsl = sItKPsl / SrKPsl;
    double SrSmKPrb = sItKPrb / SrKPrb;
/*
    sprintf(Buf34," |   КП    |%7.2f|%11.2f|",SrKP,sItKP);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[1]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[2]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[3]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[4]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[5]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[6]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[7]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[8]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumKP[9]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SrSmKP);
    print(Buf34);
*/
    sprintf(ex1," КП ");
    sprintf(ex2,"служ");
    WritStringEx(OemToAnsi(ex1),ex2,SrKPsl,sItKPsl,SumKPsl[1],SumKPsl[2],SumKPsl[3],SumKPsl[4],SumKPsl[5],SumKPsl[6],SumKPsl[7],SumKPsl[8],SumKPsl[9],SrSmKPsl);
    sprintf(ex2,"раб-е");
    WritStringEx(OemToAnsi(ex1),ex2,SrKPrb,sItKPrb,SumKPrb[1],SumKPrb[2],SumKPrb[3],SumKPrb[4],SumKPrb[5],SumKPrb[6],SumKPrb[7],SumKPrb[8],SumKPrb[9],SrSmKPrb);
    sprintf(ex2,"всего");  
    WritStringEx(OemToAnsi(ex1),ex2,SrKP,sItKP,SumKP[1],SumKP[2],SumKP[3],SumKP[4],SumKP[5],SumKP[6],SumKP[7],SumKP[8],SumKP[9],SrSmKP);


    SrSmZV = sItZV / SrZV;
    double SrSmZVsl = sItZVsl / SrZVsl;
    double SrSmZVrb = sItZVrb / SrZVrb;
/*
    sprintf(Buf34," |  Завод  |%7.2f|%11.2f|",SrZV,sItZV);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[1]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[2]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[3]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[4]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[5]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[6]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[7]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[8]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumZV[9]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SrSmZV);
    print(Buf34);
*/
    sprintf(ex1,"Завод");
    sprintf(ex2,"служ");
    WritStringEx(OemToAnsi(ex1),ex2,SrZVsl,sItZVsl,SumZVsl[1],SumZVsl[2],SumZVsl[3],SumZVsl[4],SumZVsl[5],SumZVsl[6],SumZVsl[7],SumZVsl[8],SumZVsl[9],SrSmZVsl);
    sprintf(ex2,"раб-е");
    WritStringEx(OemToAnsi(ex1),ex2,SrZVrb,sItZVrb,SumZVrb[1],SumZVrb[2],SumZVrb[3],SumZVrb[4],SumZVrb[5],SumZVrb[6],SumZVrb[7],SumZVrb[8],SumZVrb[9],SrSmZVrb);
    sprintf(ex2,"всего");  
    WritStringEx(OemToAnsi(ex1),ex2,SrZV,sItZV,SumZV[1],SumZV[2],SumZV[3],SumZV[4],SumZV[5],SumZV[6],SumZV[7],SumZV[8],SumZV[9],SrSmZV);


    double SrSmIT = sIt  / SrIT;
/*
    sprintf(Buf34," |  ИТОГО  |%7.2f|%11.2f|",SrIT,sIt);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[1]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[2]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[3]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[4]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[5]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[6]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[7]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[8]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SumIt[9]);
    sprintf(Buf34,"%s%11.2f|",Buf34,SrSmIT);
    print(Buf34);
*/
    sprintf(ex1,"   ");
    sprintf(ex2,"ИТОГО");
    WritStringEx(ex1,ex2,SrIT,sIt,SumIt[1],SumIt[2],SumIt[3],SumIt[4],SumIt[5],SumIt[6],SumIt[7],SumIt[8],SumIt[9],SrSmIT);

 }
           
PrnStr2(Frst)  
{
  vN = sN + rN;

  if (sN)  {
    SrSmN=sN/SrSN;
/*
    sprintf(Buf5," |%4i|служ.|%6.2f|%11.2f|",Frst,SrSN,sN);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[1]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[2]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[3]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[4]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[5]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[6]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[7]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[8]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmSN[9]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SrSmN);
    print(Buf5);
*/
    sprintf(ex1,"НТН_: %s",static_cast_to_string(Frst));
    sprintf(ex2,"служ.");
    WritStringEx(OemToAnsi(ex1),ex2,SrSN,sN,SmSN[1],SmSN[2],SmSN[3],SmSN[4],SmSN[5],SmSN[6],SmSN[7],SmSN[8],SmSN[9],SrSmN);

    SrSmN=0;
   }

  if (rN)  {
    SrSmN=rN/SrRN;
/*
    sprintf(Buf5," |%4i|раб-е|%6.2f|%11.2f|",Frst,SrRN,rN);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[1]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[2]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[3]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[4]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[5]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[6]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[7]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[8]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmRN[9]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SrSmN);
    print(Buf5);
*/
    sprintf(ex1,"НТН_: %s",static_cast_to_string(Frst));
    sprintf(ex2,"раб-е");
    WritStringEx(OemToAnsi(ex1),ex2,SrRN,rN,SmRN[1],SmRN[2],SmRN[3],SmRN[4],SmRN[5],SmRN[6],SmRN[7],SmRN[8],SmRN[9],SrSmN);

    SrSmN=0;
   }

    SrSmN=vN/SrVN;
/*
    sprintf(Buf5," |%4i|всего|%6.2f|%11.2f|",Frst,SrVN,vN);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[1]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[2]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[3]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[4]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[5]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[6]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[7]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[8]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SmVN[9]);
    sprintf(Buf5,"%s%11.2f|",Buf5,SrSmN);
    print(Buf5);
*/
    sprintf(ex1,"НТН_: %s",static_cast_to_string(Frst));
    sprintf(ex2,"всего");
    WritStringEx(OemToAnsi(ex1),ex2,SrVN,vN,SmVN[1],SmVN[2],SmVN[3],SmVN[4],SmVN[5],SmVN[6],SmVN[7],SmVN[8],SmVN[9],SrSmN);
    n++;

  SrSN=0;
  SrRN=0;

  CntStr++;
  CntStr++;
  CntStr++;

  PreSum2();

 }

PrnStr(Frst,ko,zo)
 {
  for (int i=2; i<=9; i++)       // for (int i=1; i<=14; i++)
   {
    s += SumS[i];              // сумма по служащим по строке
    r += SumR[i];              // сумма по рабочим  по строке

    sN += SumS[i];             // сумма по служащим по НТН
    rN += SumR[i];             // сумма по рабочим  по НТН

    SmSN[i] += SumS[i];          // сумма по служащим по строке для НТН
    SmRN[i] += SumR[i];          // сумма по рабочим  по строке для НТН
    SmVN[i] = SmSN[i] + SmRN[i]; // сумма по столбцу для НТН

    SumV[i]  = SumS[i]  + SumR[i];  // суммы всего по подраздел по столбцам
    SumIt[i] = SumIt[i] + SumV[i];  // суммы итого по предпр по столбцам

    sIt += SumS[i] + SumR[i];    
    SrV = SrS + SrR;    

    if ( ko == 1 )  {
       SumKP[i] = SumKP[i] + SumV[i];
       SumKPsl[i] = SumKPsl[i] + SumS[i];
       SumKPrb[i] = SumKPrb[i] + SumR[i];
       sItKP += SumS[i] + SumR[i];

       sItKPsl += SumS[i];
       sItKPrb += SumR[i];
      }

    if ( zo == 1 )  {
       SumZV[i] = SumZV[i] + SumV[i];
       SumZVsl[i] = SumZVsl[i] + SumS[i];
       SumZVrb[i] = SumZVrb[i] + SumR[i];
       sItZV += SumS[i] + SumR[i];

       sItZVsl += SumS[i];
       sItZVrb += SumR[i];
      }


   }
  v=s+r;               // всего по подраздел
  vN = vN + sN + rN;   // всего по НТН

  SrSN += SrS; 
  SrRN += SrR;
  SrVN = SrSN + SrRN;

  if (s) {
    SrSm=s/SrS;
/*
    sprintf(Buf33," |%4i|служ.|%6.2f|%11.2f|",Frst,SrS,s);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[1]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[2]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[3]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[4]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[5]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[6]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[7]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[8]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SumS[9]);
    sprintf(Buf33,"%s%11.2f|",Buf33,SrSm);
    print(Buf33);
*/
    sprintf(ex2,"служ.");
    WritStringEx(Frst,ex2,SrS,s,SumS[1],SumS[2],SumS[3],SumS[4],SumS[5],SumS[6],SumS[7],SumS[8],SumS[9],SrSm);

    SrSm=0;
   }
  
  if (r) {
    SrSm=r/SrR;
/*
    sprintf(Buf31," |%4i|раб-е|%6.2f|%11.2f|",Frst,SrR,r);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[1]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[2]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[3]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[4]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[5]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[6]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[7]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[8]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SumR[9]);
    sprintf(Buf31,"%s%11.2f|",Buf31,SrSm);
    print(Buf31);
*/
    sprintf(ex2,"раб-е");
    WritStringEx(Frst,ex2,SrR,r,SumR[1],SumR[2],SumR[3],SumR[4],SumR[5],SumR[6],SumR[7],SumR[8],SumR[9],SrSm);


    SrSm=0;
   }
  
    SrSm=v/SrV;
/*
    sprintf(Buf32," |%4i|всего|%6.2f|%11.2f|",Frst,SrV,v);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[1]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[2]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[3]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[4]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[5]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[6]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[7]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[8]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SumV[9]);
    sprintf(Buf32,"%s%11.2f|",Buf32,SrSm);
    print(Buf32);
*/
    sprintf(ex2,"всего");
    WritStringEx(Frst,ex2,SrV,v,SumV[1],SumV[2],SumV[3],SumV[4],SumV[5],SumV[6],SumV[7],SumV[8],SumV[9],SrSm);
   


  CntStr++;
  CntStr++;

  SrSm=0;

  PreSum();    //OldPod=NewPod;

  s=0; r=0; v=0;
  SrS=0; SrR=0;

 }



FillIdxFldTbl(&CTabl)
{
   TblFld[idxP] = CTabl.Find_Name_Fld("FCpodr");
   TblFld[idxK] = CTabl.Find_Name_Fld("FCkat");
   TblFld[idxT] = CTabl.Find_Name_Fld("C_FIO");
   //TblFld[idxS] = CTabl.Find_Name_Fld("SrSpis");
   TblFld[idxS] = CTabl.Find_Name_Fld("Spis");

   TblFld[idxS01] = CTabl.Find_Name_Fld("S_Col_58");
   TblFld[idxS02] = CTabl.Find_Name_Fld("Sum_26");
   TblFld[idxS03] = CTabl.Find_Name_Fld("Sum_27");
   TblFld[idxS04] = CTabl.Find_Name_Fld("Sum_28");
   TblFld[idxS05] = CTabl.Find_Name_Fld("Sum_35");
   TblFld[idxS06] = CTabl.Find_Name_Fld("Sum_36");
   TblFld[idxS07] = CTabl.Find_Name_Fld("Sum_44");
   TblFld[idxS08] = CTabl.Find_Name_Fld("Sum_50");
   TblFld[idxS09] = CTabl.Find_Name_Fld("Sum_60");

   return 1;
}



SetupExcel()
{
  xls = CreateObject("Excel.Application");
  GetCurrentDirectory(len,Dir);
  nm = "t_razved\\kb062.xls";
  WorkDir = Dir + "\\";
  xls.Caption = OemToAnsi("Приказ 1");
  xls.Workbooks.Add(WorkDir+nm);

  wb = xls.Workbooks(1);
  wsh = wb.Worksheets.Item(1);

  name=xls.Workbooks.Item(1).Name;                  // читаем имя workbook'а, чтобы обращатья потом к нему по имени
  WSheet1=xls.Workbooks.Item(name).Worksheets.Item(1); // создаем ссылку на на наш worksheet чтобы избежать впоследствии длинных записей

  return 0;
}

//  int len = 512;
//  var xls=CreateObject("Excel.Application");  // создаем объект Excel.Application, т.е. запускаем Excel, если он установлен конечно
//  char Dir[1024];                             // строка для текущей директории
//  GetCurrentDirectory(len,Dir);               // получаем текущую директорию (это корень каталога ZPL из которого запустили АМБу)
//  string nm = "t_razved\\kb006.xls";          // имя Excel'евского файла, он должен находиться в каталоге ZPL\TAB_LS
//  var WorkDir = Dir + "\\";                   // получаем рабочий каталог, т.е. из ZPL переходим в TAB_LS
//  xls.Caption = OemToAnsi("Лист 1");          // заголовок
//  xls.Workbooks.Add(WorkDir+nm);              // открываем в Excel'е наш файл prim02.xls

//  string name=xls.Workbooks.Item(1).Name;                  // читаем имя workbook'а, чтобы обращатья потом к нему по имени
//  var WSheet1=xls.Workbooks.Item(name).Worksheets.Item(1); // создаем ссылку на на наш worksheet чтобы избежать впоследствии длинных записей

//  string cell; // в эту строку будем записывать имена ячеек worksheet'а


WriteToCell(cel,s)
{
  wsh.Range(static_cast_to_string(cel)).Value = static_cast_to_string(s);
  return 0;
}

WriteToCell1(WSheet,Cell,str)
// WSheet - ссылка на worksheet
// Cell - имя ячейки
// str - значение, которое требуется записать в ячейку Cell рабочего листа WSheet
{
  WSheet.Range(Cell).Value=static_cast_to_string(str);
  return 0;
}

WritStringEx(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x19)
{
  char c1[5], c2[6], c3[9], c4[9];
  char c5[15], c6[15], c7[15], c8[15], c9[15], c10[15], c11[15], c12[15];
  char c13[15], c14[15], c15[15], c16[15], c17[15], c18[15], c19[15];
  sprintf(c1,"B%d",NmLnEx);
  sprintf(c2,"C%d",NmLnEx);
  sprintf(c3,"D%d",NmLnEx);
  sprintf(c4,"E%d",NmLnEx);
  sprintf(c5,"F%d",NmLnEx);
  sprintf(c6,"G%d",NmLnEx);
  sprintf(c7,"H%d",NmLnEx);
  sprintf(c8,"I%d",NmLnEx);
  sprintf(c9,"J%d",NmLnEx);
  sprintf(c10,"K%d",NmLnEx);
  sprintf(c11,"L%d",NmLnEx);
  sprintf(c12,"M%d",NmLnEx);
  sprintf(c13,"N%d",NmLnEx);
  sprintf(c14,"O%d",NmLnEx);
  sprintf(c15,"P%d",NmLnEx);
  sprintf(c16,"Q%d",NmLnEx);
  sprintf(c17,"R%d",NmLnEx);
  sprintf(c18,"S%d",NmLnEx);
  sprintf(c19,"T%d",NmLnEx);

  WriteToCell(c1,x1);
  WriteToCell(c2,OemToAnsi(x2));
  WriteToCell(c3,x3);
  WriteToCell(c4,x4);

  WriteToCell(c5,x5);
  WriteToCell(c6,x6);
  WriteToCell(c7,x7);
  WriteToCell(c8,x8);
  WriteToCell(c9,x9);
  WriteToCell(c10,x10);
  WriteToCell(c11,x11);
  WriteToCell(c12,x12);

  WriteToCell(c13,x13);
  WriteToCell(c19,x19);

  n++;
  NmLnEx++;
}