Динамический массив из путей (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);
т.е. по этому макросу можно только в одной кассе загружать платежи и в одной смене.
Кто нибудь может подсказать как сделать так, чтобы можно было выгружать все кассы, все смены?
вопрос закрыт ( Andrew01 25.06.2013 17:50 )
5(1)Not specified