Динамический массив из путей (PATCH)

0 (0)
  • Развернуть Динамический массив из путей (PATCH) ( Andrew01  25.06.2013 08:01 )
    5(1)
    Доброе время суток!
    Подскажите: Есть отдельная DOS программа по коммунальным платежам, на ней работают несколько касс, дневной и вечерней смены.
    Программа выгружает файлы DBF по пути заложенной в программе, т.е. типа KO0128_1.000, где 01 - месяц, 28 - день, 1 - смена(1 - дневная смена, 2 вечерняя) 000 - Это касса, (001,002,003 и т.п.)
    Привожу реальный макрос:
    /* Загрузка коммунальных платежей */
    
    import BankInter, rslx, ro, "or_rep_h.mac";
    
    base_kom = TbFile("k_pay.dbt","W",0,"k_pay.dbt","..\\OBJ\\nkomun.def");
    
    k_server = "\\\\XXX.XXX.XXX.XXX";
    k_base   = "\\BMK\\kb\\DATA"; //путь до файлов коммунальных платежей
    
    name = TArray;
    
    name(0)  = " Касса 1 (Гл.Оф)    ";
    name(1)  = " Шоссейная          ";
    name(2)  = " Касса 2 (Гл.Оф)    ";
    name(3)  = " Кирпичная          ";
    name(4)  = " Кошехабль          ";
    //name(5)  = " Все кассы         ";
    
    smena = TArray;
    
    smena(0) = "Дневная";
    smena(1) = "Вечерняя";
    
    //msgbox(base_kom+"KO0104_1."+kassa);
    
    dat1 = {curdate}-1;
    
    getdate(dat1,"Введите дату");
    
    datesplit(dat1,day,mon,k_god);
    
    
    menu_type = 0;
    
    menu_type = menu(name, " ","Выберите Кассу");
    
    sm = 1;//Смена 1
    
    if (menu_type == 0) 
     kassa = "000";
     sm =menu(smena,"Выберите смену",1);
     if (sm == 0)
      sm_ = 1; 
      sm1 = "дневной";
     elif (sm == 1)
      sm_ = 2;
      sm1 = "вечерней";
     end;
    elif (menu_type == 1)  
     kassa = "001";
     sm_ = 1;
     sm1 = "дневной";
    elif (menu_type == 2)  
     kassa = "002";
     sm = menu(smena,"Выберите смену",1);
     if (sm == 0)
      sm_ = 1; 
      sm1 = "дневной";
     elif (sm == 1)
      sm_ = 2;
      sm1 = "вечерней";
     end;
    elif (menu_type == 3)  
     kassa = "003";
     sm_ = 1;
     sm1 = "дневной";
    elif (menu_type == 4)  
     kassa = "004";
     sm_ = 1;
     sm1 = "дневной";
    //elif (menu_type == 5)
    // kassa = 99;
    end; 
    
    /*Преобразовываем дату в строку и убираем лишнее*/
    if (mon<10) 
     monstr = "0" + string(mon) 
    else 
     monstr = string(mon); 
    end;
    
    if (day<10) 
     daystr = "0" + string(day) 
    else 
     daystr = string(day); 
    end;
    
    k_patch = k_server + k_base + k_god + "\\" + kassa + "\\" + monstr + "\\";
    k_files = "KO" + monstr + daystr + "_" + sm_ + "."+ kassa;
    
    files = TDirList(k_patch + k_files,"f");
    files.sort(0);
    
    file km () dbf;
    
    i = 0;
    n = 0;
    sum = $0;
    kol = 0;
    while (i<files.count)
     copyfile(k_patch + files.name(i),files.name);
     if (open(km,k_patch + files.name(i)))
      rewind(km);
      while (next(km))
       base_kom.rec.Num        = n;
       base_kom.rec.NPOR       = int(km(0));
       base_kom.rec.NSH        = km(1);
       base_kom.rec.kSH        = km(2);
       base_kom.rec.SPL        = money(km(3));//Сумма платежа
       base_kom.rec.DAT        = date(km(4));
       base_kom.rec.TIM        = time(km(5));
       base_kom.rec.NKW        = km(6);
       base_kom.rec.DOCUM      = km(7);
       base_kom.rec.FORMA      = km(8);
       base_kom.rec.NFB        = km(9);
       base_kom.rec.NOP        = km(10);
       base_kom.rec.SMENA      = km(11);
       base_kom.rec.MESTO      = km(12);
       base_kom.rec.NOK        = km(13);
       base_kom.rec.NSS        = km(14);
       base_kom.rec.GOR        = km(15);
       base_kom.rec.KU         = km(16);
       base_kom.rec.PROC       = km(17);
       base_kom.rec.PEN        = km(18);
       base_kom.rec.VAL        = km(19);
       base_kom.rec.NABON      = km(20);
       base_kom.rec.DEB        = km(21);
       base_kom.rec.KRE        = km(22);
       base_kom.rec.KKM        = km(23);
       base_kom.rec.CDOPINFO   = km(24);
       base_kom.rec.NEW_NSH    = km(25);
       base_kom.rec.NEW_KSH    = km(26);
       base_kom.insert;
       sum = sum + money(km(3));
       kol = kol + 1;
       n = n + 1;
      end;
      close(km);
      i = i + 1;
      kol = kol - 1; 
     else 
      msgbox("Файл по указанному пути " + k_patch + k_files + " не открыт");
     end;
    end;
    //msgbox(sm_);
    
    [Всего обработано в ################ ########## смене ### платежей] (name(menu_type),sm1,kol);
    [на сумму ###########р.](sum);
    

    т.е. по этому макросу можно только в одной кассе загружать платежи и в одной смене.
    Кто нибудь может подсказать как сделать так, чтобы можно было выгружать все кассы, все смены?