int consolidation = 0; int maxCol = 17; // количество столбцов Раздела 1 int begRow = 6; var block[maxCol]; var fuf; var CFile, CTabl, CMsg; int len = 512, W = 250, // не менее символов A = 250, // не более символов bTime = false; int cntRows = 0; char str[len], arg[len], ts[len]; var XMLDoc; char Year[9]; char KodOP[5]; char DatTek[15]; char file[len]; double eps = 0.001; double tmp = 0; // Параметры int Format = 0; int FPRINT = 1; int PrnMode = 0; // по умолчанию печать обычная int siozpXltx = 0; int FufMode = 0; int AcPosition = 0; char fullXlsName[len]; ReadParam(¶m,np) // чтение параметров { if ( np > 0 ) Format = atoi(param[0]); if ( np > 1 ) FPRINT = atoi(param[1]); if ( IsCommonCnfExist("PrnOptim","siozp") ) { GetCommonCnf("PrnOptim","siozp",str,len); PrnMode = atoi(str); // 1 - оптимизированная печать; 0 - обычная if (PrnMode&8) { siozpXltx=1; PrnMode&=~8; } } if ( IsCommonCnfExist("acPosition","siozp") ) { GetCommonCnf("acPosition","siozp",str,len); AcPosition = atoi(str); // 1 - учитывать только "Основное"; 0 - учитывать все } return 0; } siovmr(¶m,np) { ReadParam(param,np); CFile = CreateObject("CurPrnFile"); CFile.SetFlagBrowse(0); CFile.SetFlag_Print(0); // не печатать table(); } table() { CTabl = CreateObject("CurPrnTbl"); if ( fTrans ) { // Передача в файл по Alt+F9 CTabl.Initial(TabAdr); } int cr = CTabl.Count_Rcr(); int CR_INS = CTabl.GetCountInsertRcr(), REC_INS = 0; FillFld(); FillOrgRec(); if ( IsCommonCnfExist("FufOptim","siozp") ) { GetCommonCnf("FufOptim","siozp",str,len); FufMode = atoi(str); // 1 - передача в файл через массив; 0 - обычная } Year = TextOrEmpty(CTabl,fld[idxYear],0); KodOP = Trim(TextOrEmpty(CTabl,fld[idxKodOP],0)); if ( strlen(KodOP) == 1 ) KodOP = "0" + KodOP; string name = TextOrEmpty(CTabl,fld[idxNameOptions],0); string KTO = name == "siozp" ? to_string("6.0") : TrimN(to_string(p3get(name,"tiporg"))); int abeg = atoi(TextOrEmpty(CTabl,fld[idxABEG],0)); int aend = atoi(TextOrEmpty(CTabl,fld[idxAEND],0)); int IdOrg = GetCurEnterprise(); var ArrOrg; if ( CTabl.GetFilterByOrg(ArrOrg) ) IdOrg=atoi(ArrOrg[0]); var d = KDateFromInt_LastDay(aend); string typeForm = ""; string s; int rc = Value_For_Table_CodS(656,IdOrg,4,d.GetDouble(),s); if ( rc!=0 || !Str_Cmp(s," "," ") ) typeForm = ""; else typeForm = TrimN(s); if ( strlen(typeForm) > 1 ) KTO = typeForm; int dper = aend - abeg + 1; var km = CreateObject("KMonth"); km.SetMonth(abeg); int kalendBeg = km.GetMonth(); km.SetMonth(aend); int kalendEnd = km.GetMonth(); int shift = kalendBeg - 1; CMsg = CreateObject("ProgressBar"); CMsg.Initial(0,100,1); CMsg.SetShowTime(static_cast_to_int(bTime)); int whoInclude = GetCommonCnfInt("WhoInclude","siozp"); int dontCheckAnyWhenPrint = (whoInclude & 0x04)!=0; string part1 = TrimN(TextOrEmpty(CTabl,fld[idxFNAME1],0)); string part2 = TrimN(TextOrEmpty(CTabl,fld[idxFNAME2],0)); bool isOldVersionXlsFileSaving = IsOldVersionXlsFileSaving(part1,part2); fullXlsName = GetFormXlsName(part1,part2); int acc = access(to_string(fullXlsName),0); if ( acc ) FPRINT = 1; if ( fTrans ) { // Передача в файл по Alt+F9 if ( acc ) { AmbaMessageBox("Перед передачей в файл необходимо сформировать отчет по F5","Внимание!",0,0); return 0; } } if ( Format == 0 ) { try { string fullFileName = GetPathXLT(NameCommonDir(),siozpXltx?"siovmr.xltx":"siovmr.xlt"); tPrepereOfficeForWork(); // определяем работать на Excel или на Calc (определяем какой из офисов (MS Office или OpenOffice) установлен и какой предпочтительнее) if ( FPRINT == 0 ) { fullFileName = to_string(fullXlsName); tOpenXlsObjects(fullFileName,"Сбор информации о заработной плате работников государственных и муниципальных учреждений"); // создание основных объектов tEndXlsWork(1); // делаем форму видимой return 0; } else { // удаляем ранее созданный xls файл if ( !access(to_string(fullXlsName),0) ) { DeleteFile(to_string(fullXlsName)); } tCreateXlsObjects(fullFileName,"Сбор информации о заработной плате работников государственных и муниципальных учреждений"); // создание основных объектов } bool AddStagByMonth = (GetCommonCnfInt("TypeAdd","siozp") & 0x02)!=0; bool CommonStagByMonth = (GetCommonCnfInt("TypeCommon","siozp") & 0x02)!=0; if ( Str_Cmp(CTabl.Name_Fld(fld[idxStagCommon]+1),"StagCom01"," ") ) AddStagByMonth = CommonStagByMonth = false; int maxRow = cr * dper; // максимально возможное количество строк var exBlock[maxCol+1][maxRow+1]; // количество записей, умножить на количество месяцев // Сколько нужно блоков строк в Excel? (1 блок == 100 строк) int cntRowsGruppe = 100; int cntGruppen = atoi(to_double(maxRow)/to_double(cntRowsGruppe)) + 1; if ( cntGruppen > 650 && !siozpXltx ) cntGruppen = 650; int begCol = 1; int endRow = 105; int endCol = 18; int realCntGruppen = AddGruppen(begRow, begCol, endRow, endCol, cntGruppen, cntRowsGruppe); tGetWshByIndex(1); // получаем ссылку на лист (worksheet) tWshSelect(); char cel[len]; int n = 6; // строка с которой начинаем печать // цикл по записям таблицы for ( int zap = 0; zap < cr; zap++ ) { if ( CMsg.Msg_Proc(" Подождите немного. Идет подготовка к печати. ",100.*zap/cr)==ESC ) { tEndXlsWork(0); return 0; } REC_INS = CTabl.Flag_Action_1(zap); // если какие-то записи выделены, печатаем только их if (CR_INS) if (!REC_INS) continue; int tn = atoi(CTabl.Text(fld[idxC_FIO],zap)); for ( int i = 0; i < cm; i++ ) { KodStroki[i] = 0; WorkType[i] = 0; WorkCode[i] = 0; RequiredRecord[i] = 0; } int ids = idxKDS01; int idk = idxKR01; int idr = idxTR01; int idq = idxREQ01; for ( int i = 1; i < cm; i++ ) { KodStroki[i] = atoi(CTabl.Text(fld[ids],zap)); WorkType[i] = atoi(CTabl.Text(fld[idr],zap)); WorkCode[i] = atoi(CTabl.Text(fld[idk],zap)); RequiredRecord[i] = atoi(CTabl.Text(fld[idq],zap)); ids++; idk++; idr++; idq++; } int ks = 0; // код строки int idFedBud = idxBUD01 + shift; int idBudSub = idxSRF01 + shift; var Stavk = CreateObject("ParamFuncRW"); Stavk.IInitial1(TrimN(CTabl.Text(fld[idxKoefEmploy],zap)),";",12); var Norma = CreateObject("ParamFuncRW"); Norma.IInitial1(TrimN(CTabl.Text(fld[idxNrv],zap)),";",12); for ( int i = kalendBeg; i <= kalendEnd; i++, idFedBud++, idBudSub++) { int kr = WorkCode[i]; if ( !dontCheckAnyWhenPrint && kr == 0 ) continue; ks = KodStroki[i]; int tr = WorkType[i]; int required = RequiredRecord[i]; string emplCondOsn = OemToAnsi("Основное"); string emplCond = kr == 2 ? OemToAnsi("Внешнее совместительство") : (tr == 1 ? OemToAnsi("Внутреннее совместительство") : emplCondOsn); bool isValidDoljn = AcPosition == 0 ? true : (emplCond == emplCondOsn ? true : false); double sumTotal = 0.0; double control = 0.0; double CovidFedSum = atof(CTabl.Text(fld[idFedBud],zap)); control += CovidFedSum; double CovidRegSum = atof(CTabl.Text(fld[idBudSub],zap)); control += CovidRegSum; // Если нет сумм, то и не печатаем if ( nabs(control) < 0.001 ) required = 0; if ( dontCheckAnyWhenPrint || control > eps || required ) { for ( int ik = 0; ik < maxCol; ik++ ) block[ik] = to_string(""); SiozpStringToCell("A",n,Year); SiozpStringToCell("B",n,GetMonthName(i)); SiozpStringToCell("C",n,GOR(xInn)); SiozpStringToCell("D",n,GOR(xKpp)); SiozpStringToCell("E",n,GOR(xOkf)); SiozpStringToCell("F",n,KTO); SiozpStringToCell("K",n,to_string(ks)); SiozpStringToCell("L",n,emplCond); string KoefEmploy = atof(Stavk.Get(i-1)) < eps ? to_string("1") : TrimN(OemToAnsi(Stavk.Get(i-1))); SiozpNumToCell("M",n,atof(KoefEmploy)); string fio = TrimN(OemToAnsi(CTabl.Text(fld[idxFIO],zap))); string dolgnost = TrimN(OemToAnsi(CTabl.Text(fld[idxDOL01+i-1],zap))); if ( strlen(fio) > strlen(dolgnost) ) { SiozpStringAndIfNeedIncreaseRow("G",n,fio,45,15); SiozpStringToCell("J",n,dolgnost); } else { SiozpStringAndIfNeedIncreaseRow("J",n,dolgnost,30,15); SiozpStringToCell("G",n,fio); } SiozpStringToCell("I",n,TrimN(OemToAnsi(CTabl.Text(fld[idxStagCommon]+(CommonStagByMonth?i:0),zap)))); SiozpStringToCell("H",n,TrimN(CTabl.Text(fld[idxStrahNum],zap))); SiozpNumToCell("N",n,atof(Norma.Get(i-1))); SiozpNumToCell("O",n,atof(CTabl.Text(fld[idxFRV01+i-1],zap))); if ( nabs(CovidFedSum) ) SiozpNumToCell("P",n,CovidFedSum); if ( nabs(CovidRegSum) ) SiozpNumToCell("Q",n,CovidRegSum); for ( int ik = 0; ik < maxCol; ik++ ) exBlock[ik][cntRows] = block[ik]; if ( fld[idxInPart1] != -1 ) CTabl.SText(fld[idxInPart1],zap,"1"); cntRows++; n++; } } } // конец цикла по записям таблицы if ( PrnMode ) { int firstRow = 6; tSetRangeValue(firstRow,1, cntRows + firstRow - 1, maxCol, exBlock); } int cntRowsToDelete = realCntGruppen * cntRowsGruppe - cntRows; //if ( cntRowsToDelete > 0 && PrnMode < 2 ) tDeleteRows(n, cntRowsToDelete); tWshCellSelect(1,1); char Org[len], Adr[len], Ruk[len], Tel[len], Okv[len], Oka[len], Okf[len], Oko[len], Eml[len], Otv[len], DOtv[len], Okp[len]; GetEnterpriseVar("ИМЯП", Org, len-1); Trim(Org); GetEnterpriseVar("АДРП", Adr, len-1); Trim(Adr); GetEnterpriseVar("РУКП", Ruk, len-1); Trim(Ruk); GetEnterpriseVar("ТЕЛП", Tel, len-1); Trim(Tel); GetEnterpriseVar("ОКПО", Okp, len-1); Trim(Okp); GetEnterpriseVar("ОКВЭД", Okv, len-1); Trim(Okv); GetEnterpriseVar("ОКАТО", Oka, len-1); Trim(Oka); GetEnterpriseVar("ОКФС", Okf, len-1); Trim(Okf); GetEnterpriseVar("ОКОГУ", Oko, len-1); Trim(Oko); GetEnterpriseVar("ОТВНАЛ",Otv, len-1); Trim(Otv); GetEnterpriseVar("ДОЛЖОТВНАЛ",DOtv, len-1); Trim(DOtv); GetEnterpriseVar("ЭЛПЧТ", Eml, len-1); Trim(Eml); tGetWshByIndex(1); // получаем ссылку на лист (worksheet) tWshSelect(); tWriteNumToCell("A2",cntRows); tWshCellSelect(1,1); char IDTime[20]; struct SYSTEMTIME st; GetLocalTime(st); R_SYS_DATA("6",DatTek,10,0); var Par = CreateObject("ParamFuncRW"); Par.IInitial(to_string(DatTek),".",3); int g = atoi(Par.Get(2)); sprintf(IDTime,"%04d%02d%02d%02d%02d%02d", g, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); string commonPart = GetAmbaResourceWorkDir(); string formPart = "\\STAT\\" + Year + "_" + KodOP + "\\"; str = commonPart + formPart; fullpath(str,str,511); mkdirAll(str); string filePart = "siovmr_" + IDTime + (siozpXltx?".xlsx":".xls"); str = str + filePart; //tProtect("",true,false); tSaveXlsObjects(to_string(str)); string FName1 = isOldVersionXlsFileSaving ? SubStr(str,0,250) : formPart; string FName2 = isOldVersionXlsFileSaving ? SubStr(str,250,500) : filePart; for ( int zap = 0; zap < cr; zap++ ) { CTabl.SText(fld[idxFNAME1],zap,FName1); CTabl.SText(fld[idxFNAME2],zap,FName2); CTabl.SText(fld[idxFFIRST],zap,"1"); } CTabl.Rewrite(); tGetWshByIndex(1); tWshSelect(); tFreeClipboard(); tEndXlsWork(1); // делаем форму видимой } catch(object err) { SayError(err); tEndXlsWork(1); // делаем форму видимой } catch(...) { SayUndefinedScriptError(); tEndXlsWork(1); // делаем форму видимой } } if ( Format == 1 ) { // передача в файл //AmbaMessageBox("Данный режим недоступен","",0,0); //return 0; try { if ( FileSiozpInit()==ESC ) return 0; FileGmsFinal(XMLDoc); } catch(object err) { SayError(err); tEndXlsWork(1); // делаем форму видимой } catch(...) { SayUndefinedScriptError(); tEndXlsWork(1); // делаем форму видимой } } return 1; } //--------------------------------------------------------------------------------------------- FileSiozpInit() { var fullFileName = to_string(fullXlsName); tPrepereOfficeForWork(); // определяем работать на Excel или на Calc (определяем какой из офисов (MS Office или OpenOffice) установлен и какой предпочтительнее) tOpenXlsObjects(fullFileName,""); // создание основных объектов templateVersion = GetTemplateVersion(); string GUID = GetStrGUID(); string DATE_TIME_ZONE = GetTimeWithTimeZone(); struct SYSTEMTIME st; GetLocalTime(st); char DatTek[15]; R_SYS_DATA("6",DatTek,10,0); var Par = CreateObject("ParamFuncRW"); Par.IInitial(to_string(DatTek),".",3); int g = atoi(Par.Get(2)); sprintf(str,"%04d%02d%02d", g, st.wMonth, st.wDay); char RegNum[20]; RegNum = GOR(xPfn); string TerOrganPfr = SubStr(RegNum,0,3) + SubStr(RegNum,4,3); string RegNomer = SubStr(RegNum,0,3) + SubStr(RegNum,4,3) + SubStr(RegNum,8,6); file = "ПФР_" + TerOrganPfr + "_СИоВМР_" + RegNomer + "_" + str + "_" + GUID; tGetWshByIndex(1); UnloadScriptModule("msxml"); LoadScriptModule("msxml"); XMLDoc = CreateXML(toFile("version=\"1.0\" encoding=\"UTF-8\"")); XMLDoc.documentElement = CreateElemXMLns(XMLDoc,toFile("ЭДПФР"), toFile("http://пф.рф/СИоВМР/2021-04-14")); { SetAttrElemXML(XMLDoc.documentElement,toFile("xmlns:УТ2"),toFile("http://пф.рф/УТ/2017-08-21")); SetAttrElemXML(XMLDoc.documentElement,toFile("xmlns:АФ5"),toFile("http://пф.рф/АФ/2018-12-07")); var SIoZP = CreateChildElemXMLns(XMLDoc,XMLDoc.documentElement,toFile("СИоВМР")); { Organization(XMLDoc,SIoZP); if (ESC==Szp(XMLDoc,SIoZP)) return ESC; } SrvInfo(XMLDoc,XMLDoc.documentElement,GUID,DATE_TIME_ZONE); // Служебная информация } } //--------------------------------------------------------------------------------------------- Szp(XMLDoc,SIoZP) { tGetWshByIndex(1); cntRows = atoi(TrimN(GNC("A" + to_string("2"),14,0))); var XmlSzp = CreateChildElemXMLns(XMLDoc,SIoZP,toFile("СЗП")); { var Map = CreateObject("MapString"); var MapRab = CreateObject("MapString"); var MapDolj = CreateObject("MMapString"); CMsg.Initial(0,100,1); CMsg.SetShowTime(to_int(bTime)); string key = ""; string value = ""; string kRab = ""; string vRab = ""; string kDolj = ""; string vDolj = ""; string DLM = ";"; int begCol = 1; int endRow = begRow + cntRows - 1; int endCol = 17; int checkRight = atoi(TrimN(GetStrCell("A" + to_string(endRow)))); int checkBelow = atoi(TrimN(GetStrCell("A" + to_string(endRow+1)))); int checkAbove = atoi(TrimN(GetStrCell("A" + to_string(endRow-1)))); int realEndRow = 0; int flt = 0; // используется при консолидации if ( checkRight && !checkBelow ) realEndRow = endRow; else if ( checkBelow ) { // есть заполненные строки ниже int row = endRow; do { int check = atoi(TrimN(GNC("A" + to_string(++row),14,0))); if ( !check ) break; } while (true); realEndRow = row - 1; } else if ( !checkRight ) { // целевая строка пустая, возможно есть пустые строки выше int row = endRow; do { int check = atoi(TrimN(GNC("A" + to_string(--row),14,0))); if ( check || row < begRow ) break; } while (true); realEndRow = row; } if ( realEndRow < begRow ) { AmbaMessageBox("Нет заполненных строк в Разделе 1","Внимание!",0,0); return 0; } if ( FufMode && templateVersion ) { fuf = tGetRangeValue(begRow,begCol,realEndRow,endCol); if ( !IsArray(fuf) ) FufMode = 0; if ( consolidation ) FufMode = 0; } for ( int row = 6; row <= realEndRow; row++ ) { if ( atoi(cntRows) > 0 ) { if ( CMsg.Msg_Proc(" Подождите немного. Идет передача в файл. ",100.*row/atoi(cntRows))==ESC ) return 0; } string year = GetStrFuf("A",row); string month = GetMonthNumber(GetStrFuf("B",row)); key = year + DLM + month; value = key; Map.Add(key,value); // Работник -> Год + Месяц + ФИО + СНИЛС var ParFio = CreateObject("ParamFuncRW"); ParFio.IInitial1(GetStrFuf("G",row)," ",3); string fam = TrimN(ParFio.Get(0)); string name = TrimN(ParFio.Get(1)); string otch = TrimN(ParFio.Get(2)); string snils = GetStrFuf("H",row); kRab = year + DLM + month + DLM + fam + DLM + name + DLM + otch + DLM + snils; string stag = GetStrFuf("I",row); vRab = fam + DLM + name + DLM + otch + DLM + snils + DLM + stag; MapRab.Add(kRab,vRab); string strSov = ""; ts = GetStrFuf("L",row); Upst(ts); if ( ts == "╬╤═╬┬═╬┼" ) strSov = "1"; else if ( ts == "┬═┼╪═┼┼ ╤╬┬╠┼╤╥╚╥┼╦▄╤╥┬╬" ) strSov = "2"; else strSov = "3"; string acDeg = ""; ts = GetStrFuf("AB",row); // УченаяСтепень Upst(ts); if ( ts == "╩└═─╚─└╥ ═└╙╩" ) acDeg = "1"; if ( ts == "─╬╩╥╬╨ ═└╙╩" ) acDeg = "2"; string qualCat = ""; ts = GetStrFuf("Z",row); // КвалКатегория Upst(ts); if ( ts == "╧┼╨┬└▀" ) qualCat = "1"; if ( ts == "┬╥╬╨└▀" ) qualCat = "2"; if ( ts == "┬█╤╪└▀" ) qualCat = "3"; // СЗПД (Должность) -> Год + Месяц + ФИО + СНИЛС + Должность string dolj = GetStrFuf("J",row); kDolj = year + DLM + month + DLM + fam + DLM + name + DLM + otch + DLM + snils + DLM + "" + DLM + dolj; vDolj = dolj + DLM; // Должность vDolj += GetStrFuf("K",row) + DLM; // ККП vDolj += strSov + DLM; // УсловиеЗанятости vDolj += GetNumFuf("M",row,14,3) + DLM; // Ставка (максимальное чесло знаков после запятой - 3) vDolj += GetNumFuf("N",row,14,2) + DLM; // РабВремяНорма vDolj += GetNumFuf("O",row,14,2) + DLM; // РабВремяФакт vDolj += GetNumFuf("P",row,14,2) + DLM; // НачисленияКовидФед vDolj += GetNumFuf("Q",row,14,2) + DLM; // НачисленияКовидРег vDolj += stag; // Общий стаж MapDolj.Add(kDolj,vDolj); } PutPeriodsSpeedy(XMLDoc,XmlSzp,MapDolj); } } //--------------------------------------------------------------------------------------------- canPutRab(rab,key) { var ParKey = CreateObject("ParamFuncRW"); ParKey.IInitial1(key,";",2); var ParRab = CreateObject("ParamFuncRW"); ParRab.IInitial1(rab,";",2); if ( TrimN(ParKey.Get(0)) == TrimN(ParRab.Get(0)) && TrimN(ParKey.Get(1)) == TrimN(ParRab.Get(1)) ) return true; return false; } //--------------------------------------------------------------------------------------------- PutFIOTag(XMLDoc,parent,nameelem,value) { int len = strlen(value); if ( len ) { var elem = CreateChildElemXMLns(XMLDoc,parent,toFile(nameelem)); SetValueTextBndXML(elem,toFuf(value),len); } } //--------------------------------------------------------------------------------------------- PutPeriodsSpeedy(XMLDoc,XmlSzp,MapDolj) { int iMap=0; int totalCount = MapDolj.Size(); int curYear = -1, curMonth = -1; string curFio="-"; var Period; var Rab; for ( bool Cur = MapDolj.InitIterator(); Cur; Cur = MapDolj.Next() ) { var ParKey = CreateObject("ParamFuncRW"); var ParValue = CreateObject("ParamFuncRW"); ParKey.IInitial1(MapDolj.GetCurKey(),";",255); ParValue.IInitial1(MapDolj.GetCurValue(),";",255); int year = atoi(ParKey.Get(0)); int month = atoi(ParKey.Get(1)); if ( year!=curYear || month!=curMonth ) { curYear = year; curMonth = month; curFio="-"; // т эютюь яхЁшюфх ╘╚╬ эрфю ёэютр т√тхёЄш Period = CreateChildElemXMLns(XMLDoc,XmlSzp,toFile("Период")); var OtchPer = CreateChildElemXMLns(XMLDoc,Period,toFile("ОтчетныйПериод")); ts = ParKey.Get(0); var Year = CreateChildElemXMLns(XMLDoc,OtchPer,toFile("Год")); SetValueTextBndXML(Year,toFile(ts),strlen(ts)); ts = ParKey.Get(1); var Month = CreateChildElemXMLns(XMLDoc,OtchPer,toFile("Месяц")); SetValueTextBndXML(Month,toFile(ts),strlen(ts)); } string f = TrimN(ParKey.Get(2)); string i = TrimN(ParKey.Get(3)); string o = TrimN(ParKey.Get(4)); string snils = TrimN(ParKey.Get(5)); string fio = f+","+i+","+o+","+snils; if ( curFio != fio ) { curFio = fio; Rab = CreateChildElemXMLns(XMLDoc,Period,toFile("Работник")); // 0 1 2 3 4 5 6 7 8 //kDolj = year + DLM + month + DLM + fam + DLM + name + DLM + otch + DLM + snils + DLM + combine + DLM + dolj + stag; var Fio = CreateChildElemXMLns(XMLDoc,Rab,toFile("УТ2:ФИО")); PutFIOTag(XMLDoc,Fio,"УТ2:Фамилия",f); PutFIOTag(XMLDoc,Fio,"УТ2:Имя",i); PutFIOTag(XMLDoc,Fio,"УТ2:Отчество",o); var Snils = CreateChildElemXMLns(XMLDoc,Rab,toFile("УТ2:СНИЛС")); SetValueTextBndXML(Snils,toFile(snils),strlen(snils)); //ts = TrimN(ParValue.Get(26)); // поменял, что общий стаж тоже в Value 27 элементом ts = TrimN(ParValue.Get(8)); var Stag = CreateChildElemXMLns(XMLDoc,Rab,toFile("ОбщийСтаж")); SetValueTextBndXML(Stag,toFile(ts),strlen(ts)); } PutDoljSpeedy(XMLDoc,Rab,ParKey,ParValue); if ( CMsg.Msg_Proc(" Идёт передача в файл. ",100.*iMap++/totalCount)==ESC ) return ESC; } } //--------------------------------------------------------------------------------------------- PutDoljSpeedy(XMLDoc,Rab,ParKey,ParValue) { var Szpd = CreateChildElemXMLns(XMLDoc,Rab,toFile("СЗПД")); { // 0 - Должность // 1 - ККП // 2 - УсловиеЗанятости // 3 - Ставка (максимальное чесло знаков после запятой - 3) // 4 - РабВремяНорма // 5 - РабВремяФакт // 6 - НачисленияКовидФед // 7 - НачисленияКовидРег // 8 - общий стаж PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(0), "Должность"); PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(1), "ККП"); PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(2), "УсловиеЗанятости"); PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(3), "Ставка"); PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(4), "РабВремяНорма"); PutRecuiredTag(XMLDoc,Szpd,ParValue.Get(5), "РабВремяФакт"); PutOptionalTag(XMLDoc,Szpd,ParValue.Get(6), "НачисленияКовидФед"); PutOptionalTag(XMLDoc,Szpd,ParValue.Get(7), "НачисленияКовидРег"); } } //--------------------------------------------------------------------------------------------- PutRecuiredTag(&XMLDoc,&XmlTag,value,tagName) { ts = TrimN(value); PutCommonTag(XMLDoc,XmlTag,ts,tagName); } //--------------------------------------------------------------------------------------------- PutOptionalTag(&XMLDoc,&XmlTag,value,tagName) { ts = TrimN(value); if ( nabs(atof(ts)) > eps ) { PutCommonTag(XMLDoc,XmlTag,ts,tagName); } } //--------------------------------------------------------------------------------------------- PutCommonTag(&XMLDoc,&XmlTag,tagValue,tagName) { var Tag = CreateChildElemXMLns(XMLDoc,XmlTag,toFile(tagName)); SetValueTextBndXML(Tag,toFuf(tagValue),strlen(tagValue)); } //--------------------------------------------------------------------------------------------- GetMonthName(m) { str = ""; if ( m == 1 ) str = " этрЁ№"; if ( m == 2 ) str = "ЇхтЁры№"; if ( m == 3 ) str = "ьрЁЄ"; if ( m == 4 ) str = "ряЁхы№"; if ( m == 5 ) str = "ьрщ"; if ( m == 6 ) str = "ш■э№"; if ( m == 7 ) str = "ш■ы№"; if ( m == 8 ) str = "ртуєёЄ"; if ( m == 9 ) str = "ёхэЄ сЁ№"; if ( m == 10 ) str = "юъЄ сЁ№"; if ( m == 11 ) str = "эю сЁ№"; if ( m == 12 ) str = "фхърсЁ№"; return to_string(str); } //--------------------------------------------------------------------------------------------- GetMonthNumber(month) { str = ""; ts = TrimN(month); Upst(ts); if ( ts == "▀═┬└╨▄" ) str = "01"; if ( ts == "╘┼┬╨└╦▄" ) str = "02"; if ( ts == "╠└╨╥" ) str = "03"; if ( ts == "└╧╨┼╦▄" ) str = "04"; if ( ts == "╠└╔" ) str = "05"; if ( ts == "╚▐═▄" ) str = "06"; if ( ts == "╚▐╦▄" ) str = "07"; if ( ts == "└┬├╙╤╥" ) str = "08"; if ( ts == "╤┼═╥▀┴╨▄" ) str = "09"; if ( ts == "╬╩╥▀┴╨▄" ) str = "10"; if ( ts == "═╬▀┴╨▄" ) str = "11"; if ( ts == "─┼╩└┴╨▄" ) str = "12"; return to_string(str); } //--------------------------------------------------------------------------------------------- Organization(&XMLDoc,&XmlTag) { var XmlOrg = CreateChildElemXMLns(XMLDoc,XmlTag,toFile("Организация")); { tGetWshByIndex(1); PutStrTag(XMLDoc,XmlOrg,"C",6,"УТ2:ИНН",Required); PutStrTag(XMLDoc,XmlOrg,"D",6,"УТ2:КПП",Required); PutStrTag(XMLDoc,XmlOrg,"E",6,"ОКФС",Required); PutStrTag(XMLDoc,XmlOrg,"F",6,"КТО",Required); } } //--------------------------------------------------------------------------------------------- PutStrTag(&XMLDoc,&XmlTag,sim,row,tagName,cond) { ts = TrimN(GetStrCell(sim + to_string(row))); if ( canPrint(ts,cond) ) { var strTag = CreateChildElemXMLns(XMLDoc,XmlTag,toFile(tagName)); SetValueTextBndXML(strTag,toFile(ts),strlen(ts)); } } //--------------------------------------------------------------------------------------------- canPrint(s,cond) { if ( atoi(cond) == atoi(Required) ) return true; if ( atoi(cond) == atoi(Optional) && strlen(s) > 0 ) return true; return false; } //--------------------------------------------------------------------------------------------- int Required = 1; int Optional = 0; //--------------------------------------------------------------------------------------------- PutNumTag(&XMLDoc,&Period,sim,row,tagName) { ts = GNC(sim + to_string(row),14,2); if ( nabs(atof(ts)) > eps ) { var numTag = CreateChildElemXMLns(XMLDoc,Period,toFile(tagName)); SetValueTextBndXML(numTag,toFile(ts),strlen(ts)); } } //--------------------------------------------------------------------------------------------- SrvInfo(&XMLDoc,&XMLdocumentElement,GUID,DATE_TIME_ZONE) // Служебная информация { char s4[len]; var XMLSInfo = CreateChildElemXMLns(XMLDoc,XMLdocumentElement,toFile("СлужебнаяИнформация")); { var XML_GUID = CreateChildElemXMLns(XMLDoc,XMLSInfo,toFile("АФ5:GUID")); s4 = GUID; //UpperString(s4); SetValueTextBndXML(XML_GUID,toFile(s4),strlen(s4)); var XML_DateTime = CreateChildElemXMLns(XMLDoc,XMLSInfo,toFile("АФ5:ДатаВремя")); s4 = DATE_TIME_ZONE; SetValueTextBndXML(XML_DateTime,toFile(s4),strlen(s4)); } } //--------------------------------------------------------------------------------------------- string s[14][12]; FileGmsFinal(&XMLDoc) { char TmpFile[len]; TmpFile = "siozp.tmp"; DeleteFile(TmpFile); //if ( !SaveFileXMLFine(XMLDoc,TmpFile,"\t") ) if ( !SaveFileXML(XMLDoc,TmpFile) ) { AmbaMessageBox("Невозможно создать файл siozp.tmp.","ошибка",0,0); tEndXlsWork(0); return false; } XMLDoc = 0; char PathFile[512]; Text_Text(PathFile,"..\\sv\\",255); bool bCheck = true; bool bSign = false; bool bSend = false; if ( Panel_Path("Путь для передачи файла:",PathFile,0)==ESC ) { tEndXlsWork(0); return false; } string ext = ".xml"; // Сохраняем результат Trim(PathFile); file = PathFile + file + ext; file = OemToAnsi(file); SaveTmp2File(TmpFile,file,true); tQuit(); tEndXlsWork(0); return 0; } //--------------------------------------------------------------------------------------------- RefEnt(name,&str,n) { GetEnterpriseVar(name,str,n); FreeSpaceString(str,3,""); UpperString(str); OemToChar(str,str); Trim(str); } //--------------------------------------------------------------------------------------------- Trim(&str) { var s = TrimN(str); str = s; return s; } //--------------------------------------------------------------------------------------------- GetStrCell(cel) { char bc[len]; bc = ""; bc = Trim(tReadStringFromCell(to_string(cel))); //Upst(bc); if ( bc == "VOID" ) bc = ""; return to_string(bc); } //--------------------------------------------------------------------------------------------- GNC(cel,w,a) { char bc[len]; bc = ""; double dc = atof(tReadNumFromCell(to_string(cel))); sprintf(bc,"%*.*f",atoi(w),atoi(a),dc); Trim(bc); //if ( bc == "0" ) bc = ""; return to_string(bc); } //--------------------------------------------------------------------------------------------- Upst(&s) { CharToOem(s,s); UpperString(s); OemToChar(s,s); } //--------------------------------------------------------------------------------------------- int cm = 13; int KodStroki[cm]; int WorkType[cm]; int WorkCode[cm]; int RequiredRecord[cm]; int fTrans = 0; int TabAdr = 0; //--------------------------------------------------------------------------------------------- Transfer(AdrCTabl, AdrCListTabl, RcrInList) { TabAdr = AdrCTabl; fTrans = 1; // выполняется передача в файл по Alt+F9 Format = 1; // передача в файл table(); return 0; } //--------------------------------------------------------------------------------------------- toUTF8(st) { string s = ""; CP1251ToUTF8(Trim(st),s); return to_string(s); } //--------------------------------------------------------------------------------------------- ToXML(value, Width) //============================================================================= // в xml: перекодируем из досовской кодировки + не печатаем пустые //============================================================================= { char Str[max(strlen(value),Width)+1]; // FreeSpaceString(value,2,",/\\"); FreeSpaceString(value,3,""); stccpy(Str,value,Width+1); OemToChar(Str,Str); return to_string(Str); } //--------------------------------------------------------------------------------------------- ToXML1(value, Width) { char Str[max(strlen(value),Width)+1]; value = TrimN(to_string(value)); stccpy(Str,value,Width+1); return to_string(Str); } //--------------------------------------------------------------------------------------------- toFile(s) { return ToXML(s,1024); } toFuf(s) { return ToXML1(s,1024); } //--------------------------------------------------------------------------------------------- char Pfn[len]; // Регистрационный номер в ПФ char Inn[len]; // Инн char Kpp[len]; // КПП char Org[len]; // Наименование предприятия char Dol[len]; // Должность руководителя предприятия char Ruk[len]; // ФИО руководителя char Okf[len]; // ОКФС char Oko[len]; // ОКОГУ // индексы для данных из справки о предприятии int xPfn = 0, // Регистрационный номер в ПФ xInn = 1, // Инн xKpp = 2, // КПП xOrg = 3, // Наименование предприятия xDol = 4, // Должность руководителя предприятия xRuk = 5, // ФИО руководителя xOko = 6, // ОКОГУ xOkf = 7; // ОКФС //--------------------------------------------------------------------------------------------- GOR(n) // xPfn - Регистрационный номер в ПФ // xInn - Инн // xKpp - КПП // xOrg - Наименование предприятия // xDol - Должность руководителя предприятия // xRuk - ФИО руководителя // xOkf - ОКФС { // Данные из справки о предприятии char s[len]; switch( n ) { case xPfn: s = Pfn; break; // Регистрационный номер в ПФ case xInn: s = Inn; break; // ИНН case xKpp: s = Kpp; break; // КПП case xOrg: s = Org; break; // Наименование предприятия (краткое) case xDol: s = Dol; break; // Должность руководителя предприятия case xRuk: s = Ruk; break; // ФИО руководителя case xOkf: s = Okf; break; // ОКФС case xOko: s = Oko; break; // ОКФС default: s = ""; } return to_string(s); } //--------------------------------------------------------------------------------------------- FillOrgRec() // читаем данные из Справки о предприятии и пишем их в глобальные переменные // эти глобальные переменные читаем функцией GOR(index) котораю возвращает копию нужного поля // в этом случае мы уверены что имеем значение не откорректированное (например перекодированное) где-то раньше { char pr[1024]; GetEnterpriseVar("ПЕНСНОМ",Pfn,len-1); // Регистрационный номер в ПФ GetEnterpriseVar("ИНН",Inn,len-1); // ИНН GetEnterpriseVar("КОДПОСУЧ",Kpp,len-1); // КПП GetEnterpriseVar("ДОЛЖ",Dol,len-1); // Должность руководителя предприятия GetEnterpriseVar("РУКП",Ruk,len-1); // ФИО руководителя GetEnterpriseVar("ОКФС",Okf,len-1); // GetEnterpriseVar("ОКОГУ",Oko,len-1); // GetEnterpriseVar("ИМЯП2",Org,len-1); // Наименование предприятия (краткое) Org = TrimN(to_string(Org)); // FreeSpaceString(Org,3,""); // если не заполнено краткое наименование, берем полное if ( !strlen(Org) ) GetEnterpriseVar("ИМЯП",Org,len-1); // Наименование предприятия //UpperString(Org); Trim(Pfn); Trim(Inn); Trim(Kpp); Trim(Org); Trim(Dol); Trim(Ruk); Trim(Okf); Trim(Oko); if ( !strlen(Oko) ) { //Если кода ОКОГУ нет в Справке о предприятии, пытаемся взять его из настройки GetCommonCnf("Okgu","siozp",str,1000); Oko = TrimN(to_string(str)); } return 0; } //--------------------------------------------------------------------------------------------- CollectBudjetSum(&CTabl,index,&sum,&sumUk,ks,zap) { double tmpSum = atof(CTabl.Text(fld[index],zap)); sum += tmpSum; if ( ks != 600 ) sumUk += tmpSum; } //--------------------------------------------------------------------------------------------- isTnSuitable(tn,&arr,&sum,sumTotal,Map,Date) { int calMonth = Date.GetMonth(); var tns = arr[calMonth-1]; if ( !IsArray(tns) ) return false; int cnt = GetUBound(tns)+1; for ( int j = 0; j < cnt; j++ ) { if ( tn == tns[j] ) { sum[calMonth] += sumTotal; string key = to_string(calMonth) + ";" + to_string(tn); Map.Add(key,key); return true; } } return false; } //--------------------------------------------------------------------------------------------- SIOZPMakeCodSoutByKch(kchvalue) { return PriorityCall("UserSIOZPMakeCodSoutByKch","SysSIOZPMakeCodSoutByKch", kchvalue); } //--------------------------------------------------------------------------------------------- SysSIOZPMakeCodSoutByKch(kchvalue) { string Out = ""; if ( GetCommonCnfInt("TypeSout","siozp")==1 ) Out = RTrimS(kchvalue); else { int cod = atoi(kchvalue); if ( cod<100 ) return Out; // спецоценка не проводилась int klass = cod%100; if ( klass==10 ) Out = "1"; else if ( klass==20 ) Out = "2"; else if ( klass==31 ) Out = "3.1"; else if ( klass==32 ) Out = "3.2"; else if ( klass==33 ) Out = "3.3"; else if ( klass==34 ) Out = "3.4"; else if ( klass==40 ) Out = "4"; } return Out; } //--------------------------------------------------------------------------------------------- CollectCntSredn(beg,end,&Map,&Cnt) { var par = CreateObject("ParamFuncRW"); for ( int i = beg; i <= end; i++ ) { for ( bool Cur = Map.InitIterator(); Cur; Cur = Map.Next() ) { string key = Map.GetCurKey(); par.IInitial1(key,";",2); if ( par.Count() ) { if ( i == atoi(par.Get(0)) ) { Cnt[i]++; } } } } } //--------------------------------------------------------------------------------------------- SiozpStringToCell(simAdr, numRow, strValue) { if ( PrnMode ) { int row = GetSiozpRowFromSimbol(simAdr); if (row > 0 && row <= maxCol ) { block[row-1] = to_string(strValue); } } else { tWriteStringToCell(simAdr + to_string(numRow), strValue); } } //--------------------------------------------------------------------------------------------- SiozpNumToCell(simAdr, numRow, numValue) { if ( PrnMode ) { int row = GetSiozpRowFromSimbol(simAdr); if (row > 0 && row <= maxCol ) { block[row-1] = numValue; } } else { tWriteNumToCell(simAdr + to_string(numRow), numValue); } } //--------------------------------------------------------------------------------------------- int fufCol = 18; // количество столбцов Раздела 1 GetStrFuf(simAdr, numRow) { if ( FufMode && templateVersion ) { if ( IsArray(fuf) ) { int col = GetSiozpRowFromSimbol(simAdr); if ( col > 0 && col <= fufCol ) { char bc[len]; bc = ""; bc = TrimN(to_string(fuf[col - 1][numRow - begRow])); if ( bc == "VOID" ) bc = ""; return to_string(bc); } } else return to_string(""); } else { return TrimN(GetStrCell(to_string(simAdr) + to_string(numRow))); } return to_string(""); } //--------------------------------------------------------------------------------------------- GetNumFuf(simAdr, numRow, w, a) { if ( FufMode && templateVersion ) { if ( IsArray(fuf) ) { int col = GetSiozpRowFromSimbol(simAdr); if ( col > 0 && col <= fufCol ) { char bc[len]; bc = ""; double dc = atof(fuf[col - 1][numRow - begRow]); sprintf(bc,"%*.*f",atoi(w),atoi(a),dc); return TrimN(to_string(bc)); } } else return to_string(""); } else { return TrimN(GNC(to_string(simAdr) + to_string(numRow), w, a)); } return to_string(""); } //--------------------------------------------------------------------------------------------- SiozpStringAndIfNeedIncreaseRow(sim,num,str,maxLength,rowHeight) // sim - символьная часть адреса ячейки (буква столбца) // num - числовая часть адреса ячейки (номер строки) // str - строковое значение которую нужно напечатать // maxLength - количество символов которое должно помещаться в одной строке // rowHeight - высота для одной строки { if ( PrnMode ) { int row = GetSiozpRowFromSimbol(sim); if (row > 0 && row <= maxCol ) { block[row-1] = str; int strLength = strlen(str); int cntRow = atoi(strLength/maxLength) + 1; if ( cntRow > 1 && PrnMode < 2 ) { tRowHeight2(num,rowHeight * cntRow); } } } else { tWriteStringAndIfNeedIncreaseRow(sim,num,str,maxLength,rowHeight); } } //--------------------------------------------------------------------------------------------- GetSiozpRowFromSimbol(simbol) { int row = 0; switch(simbol) { case "A" : row = 1; break; case "B" : row = 2; break; case "C" : row = 3; break; case "D" : row = 4; break; case "E" : row = 5; break; case "F" : row = 6; break; case "G" : row = 7; break; case "H" : row = 8; break; case "I" : row = 9; break; case "J" : row = 10; break; case "K" : row = 11; break; case "L" : row = 12; break; case "M" : row = 13; break; case "N" : row = 14; break; case "O" : row = 15; break; case "P" : row = 16; break; case "Q" : row = 17; break; case "R" : row = 18; break; case "S" : row = 19; break; case "T" : row = 20; break; case "U" : row = 21; break; case "V" : row = 22; break; case "W" : row = 23; break; case "X" : row = 24; break; case "Y" : row = 25; break; case "Z" : row = 26; break; case "AA" : row = 27; break; case "AB" : row = 28; break; case "AC" : row = 29; break; case "AD" : row = 30; break; case "AE" : row = 31; break; case "AF" : row = 32; break; case "AG" : row = 33; break; case "AH" : row = 34; break; case "AI" : row = 35; break; case "AJ" : row = 36; break; } return row; } //--------------------------------------------------------------------------------------------- AddGruppen(begRow, begCol, endRow, endCol, cntGruppen, cntRowsGruppe) { var Msg; Msg = CreateObject("ProgressBar"); Msg.Initial(0,100,1); Msg.SetShowTime(static_cast_to_int(bTime)); tGetWshByIndex(1); tWshSelect(); int realGruppen = 1; int colPosition = 1; for ( int gr = 1; gr < cntGruppen; gr++ ) { if ( Msg.Msg_Proc(" Выполняется подготовка к печати. ",100.*gr/cntGruppen)==ESC ) { tEndXlsWork(1); return 0; } int rowPosition = begRow + realGruppen * cntRowsGruppe; tCopyRange(begRow, begCol, endRow, endCol, rowPosition, colPosition); realGruppen++; } tWshCellSelect(1,1); return realGruppen; } //--------------------------------------------------------------------------------------------- int templateVersion = 0; GetTemplateVersion() { tGetWshByIndex(1); // получаем ссылку на лист (worksheet) tWshSelect(); int templOld = atoi(GetStrCell("AI5")); int templNew = atoi(GetStrCell("AJ5")); return templOld == 35 && !templNew ? 0 : 1; } //--------------------------------------------------------------------------------------------- FillFld() //============================================================================= // Находим поля в таблице //============================================================================= { fld[idxC_FIO] = CTabl.Find_Name_Fld("C_FIO"); fld[idxFIO] = CTabl.Find_Name_Fld("FIO"); fld[idxKODSTR] = CTabl.Find_Name_Fld("KODSTR"); fld[idxABEG] = CTabl.Find_Name_Fld("ABEG"); fld[idxAEND] = CTabl.Find_Name_Fld("AEND"); fld[idxFFIRST] = CTabl.Find_Name_Fld("FFIRST"); fld[idxFNAME1] = CTabl.Find_Name_Fld("FNAME1"); fld[idxFNAME2] = CTabl.Find_Name_Fld("FNAME2"); fld[idxYear] = CTabl.Find_Name_Fld("Year"); fld[idxKodOP] = CTabl.Find_Name_Fld("KodOP"); fld[idxSUM01] = CTabl.Find_Name_Fld("SUM01"); fld[idxSUM02] = CTabl.Find_Name_Fld("SUM02"); fld[idxSUM03] = CTabl.Find_Name_Fld("SUM03"); fld[idxSUMSV] = CTabl.Find_Name_Fld("SUMSV"); fld[idxSTVS] = CTabl.Find_Name_Fld("STVS"); fld[idxSUMSV1] = CTabl.Find_Name_Fld("SUMSV1"); fld[idxREQ01] = CTabl.Find_Name_Fld("REQ01"); fld[idxREQ02] = CTabl.Find_Name_Fld("REQ02"); fld[idxREQ03] = CTabl.Find_Name_Fld("REQ03"); fld[idxREQ04] = CTabl.Find_Name_Fld("REQ04"); fld[idxREQ05] = CTabl.Find_Name_Fld("REQ05"); fld[idxREQ06] = CTabl.Find_Name_Fld("REQ06"); fld[idxREQ07] = CTabl.Find_Name_Fld("REQ07"); fld[idxREQ08] = CTabl.Find_Name_Fld("REQ08"); fld[idxREQ09] = CTabl.Find_Name_Fld("REQ09"); fld[idxREQ10] = CTabl.Find_Name_Fld("REQ10"); fld[idxREQ11] = CTabl.Find_Name_Fld("REQ11"); fld[idxREQ12] = CTabl.Find_Name_Fld("REQ12"); fld[idxFRV01] = CTabl.Find_Name_Fld("FRV01"); fld[idxFRV02] = CTabl.Find_Name_Fld("FRV02"); fld[idxFRV03] = CTabl.Find_Name_Fld("FRV03"); fld[idxFRV04] = CTabl.Find_Name_Fld("FRV04"); fld[idxFRV05] = CTabl.Find_Name_Fld("FRV05"); fld[idxFRV06] = CTabl.Find_Name_Fld("FRV06"); fld[idxFRV07] = CTabl.Find_Name_Fld("FRV07"); fld[idxFRV08] = CTabl.Find_Name_Fld("FRV08"); fld[idxFRV09] = CTabl.Find_Name_Fld("FRV09"); fld[idxFRV10] = CTabl.Find_Name_Fld("FRV10"); fld[idxFRV11] = CTabl.Find_Name_Fld("FRV11"); fld[idxFRV12] = CTabl.Find_Name_Fld("FRV12"); fld[idxFBCom] = CTabl.Find_Name_Fld("FBCom"); fld[idxSUM01M] = CTabl.Find_Name_Fld("SUM01M"); fld[idxSUM02M] = CTabl.Find_Name_Fld("SUM02M"); fld[idxSUM03M] = CTabl.Find_Name_Fld("SUM03M"); fld[idxKODS01] = CTabl.Find_Name_Fld("KODS01"); fld[idxKODS02] = CTabl.Find_Name_Fld("KODS02"); fld[idxKODS03] = CTabl.Find_Name_Fld("KODS03"); fld[idxKODS04] = CTabl.Find_Name_Fld("KODS04"); fld[idxKODS05] = CTabl.Find_Name_Fld("KODS05"); fld[idxKODS06] = CTabl.Find_Name_Fld("KODS06"); fld[idxKODS07] = CTabl.Find_Name_Fld("KODS07"); fld[idxKODS08] = CTabl.Find_Name_Fld("KODS08"); fld[idxKODS09] = CTabl.Find_Name_Fld("KODS09"); fld[idxKODS10] = CTabl.Find_Name_Fld("KODS10"); fld[idxKODS11] = CTabl.Find_Name_Fld("KODS11"); fld[idxKODS12] = CTabl.Find_Name_Fld("KODS12"); fld[idxKR01] = CTabl.Find_Name_Fld("KR01"); fld[idxKR02] = CTabl.Find_Name_Fld("KR02"); fld[idxKR03] = CTabl.Find_Name_Fld("KR03"); fld[idxKR04] = CTabl.Find_Name_Fld("KR04"); fld[idxKR05] = CTabl.Find_Name_Fld("KR05"); fld[idxKR06] = CTabl.Find_Name_Fld("KR06"); fld[idxKR07] = CTabl.Find_Name_Fld("KR07"); fld[idxKR08] = CTabl.Find_Name_Fld("KR08"); fld[idxKR09] = CTabl.Find_Name_Fld("KR09"); fld[idxKR10] = CTabl.Find_Name_Fld("KR10"); fld[idxKR11] = CTabl.Find_Name_Fld("KR11"); fld[idxKR12] = CTabl.Find_Name_Fld("KR12"); fld[idxBUD01] = CTabl.Find_Name_Fld("BUD01"); fld[idxBUD02] = CTabl.Find_Name_Fld("BUD02"); fld[idxBUD03] = CTabl.Find_Name_Fld("BUD03"); fld[idxBUD04] = CTabl.Find_Name_Fld("BUD04"); fld[idxBUD05] = CTabl.Find_Name_Fld("BUD05"); fld[idxBUD06] = CTabl.Find_Name_Fld("BUD06"); fld[idxBUD07] = CTabl.Find_Name_Fld("BUD07"); fld[idxBUD08] = CTabl.Find_Name_Fld("BUD08"); fld[idxBUD09] = CTabl.Find_Name_Fld("BUD09"); fld[idxBUD10] = CTabl.Find_Name_Fld("BUD10"); fld[idxBUD11] = CTabl.Find_Name_Fld("BUD11"); fld[idxBUD12] = CTabl.Find_Name_Fld("BUD12"); fld[idxKDS01] = CTabl.Find_Name_Fld("KDS01"); fld[idxKDS02] = CTabl.Find_Name_Fld("KDS02"); fld[idxKDS03] = CTabl.Find_Name_Fld("KDS03"); fld[idxKDS04] = CTabl.Find_Name_Fld("KDS04"); fld[idxKDS05] = CTabl.Find_Name_Fld("KDS05"); fld[idxKDS06] = CTabl.Find_Name_Fld("KDS06"); fld[idxKDS07] = CTabl.Find_Name_Fld("KDS07"); fld[idxKDS08] = CTabl.Find_Name_Fld("KDS08"); fld[idxKDS09] = CTabl.Find_Name_Fld("KDS09"); fld[idxKDS10] = CTabl.Find_Name_Fld("KDS10"); fld[idxKDS11] = CTabl.Find_Name_Fld("KDS11"); fld[idxKDS12] = CTabl.Find_Name_Fld("KDS12"); fld[idxTR01] = CTabl.Find_Name_Fld("TR01"); fld[idxTR02] = CTabl.Find_Name_Fld("TR02"); fld[idxTR03] = CTabl.Find_Name_Fld("TR03"); fld[idxTR04] = CTabl.Find_Name_Fld("TR04"); fld[idxTR05] = CTabl.Find_Name_Fld("TR05"); fld[idxTR06] = CTabl.Find_Name_Fld("TR06"); fld[idxTR07] = CTabl.Find_Name_Fld("TR07"); fld[idxTR08] = CTabl.Find_Name_Fld("TR08"); fld[idxTR09] = CTabl.Find_Name_Fld("TR09"); fld[idxTR10] = CTabl.Find_Name_Fld("TR10"); fld[idxTR11] = CTabl.Find_Name_Fld("TR11"); fld[idxTR12] = CTabl.Find_Name_Fld("TR12"); fld[idxDOL01] = CTabl.Find_Name_Fld("DOL01"); fld[idxDOL02] = CTabl.Find_Name_Fld("DOL02"); fld[idxDOL03] = CTabl.Find_Name_Fld("DOL03"); fld[idxDOL04] = CTabl.Find_Name_Fld("DOL04"); fld[idxDOL05] = CTabl.Find_Name_Fld("DOL05"); fld[idxDOL06] = CTabl.Find_Name_Fld("DOL06"); fld[idxDOL07] = CTabl.Find_Name_Fld("DOL07"); fld[idxDOL08] = CTabl.Find_Name_Fld("DOL08"); fld[idxDOL09] = CTabl.Find_Name_Fld("DOL09"); fld[idxDOL10] = CTabl.Find_Name_Fld("DOL10"); fld[idxDOL11] = CTabl.Find_Name_Fld("DOL11"); fld[idxDOL12] = CTabl.Find_Name_Fld("DOL12"); fld[idxSRF01] = CTabl.Find_Name_Fld("SRF01"); fld[idxSRF02] = CTabl.Find_Name_Fld("SRF02"); fld[idxSRF03] = CTabl.Find_Name_Fld("SRF03"); fld[idxSRF04] = CTabl.Find_Name_Fld("SRF04"); fld[idxSRF05] = CTabl.Find_Name_Fld("SRF05"); fld[idxSRF06] = CTabl.Find_Name_Fld("SRF06"); fld[idxSRF07] = CTabl.Find_Name_Fld("SRF07"); fld[idxSRF08] = CTabl.Find_Name_Fld("SRF08"); fld[idxSRF09] = CTabl.Find_Name_Fld("SRF09"); fld[idxSRF10] = CTabl.Find_Name_Fld("SRF10"); fld[idxSRF11] = CTabl.Find_Name_Fld("SRF11"); fld[idxSRF12] = CTabl.Find_Name_Fld("SRF12"); fld[idxCombine] = CTabl.Find_Name_Fld("Combine"); fld[idxStagCommon] = CTabl.Find_Name_Fld("StagCommon"); fld[idxStagDop] = CTabl.Find_Name_Fld("StagDop"); fld[idxNameOptions] = CTabl.Find_Name_Fld("name"); fld[idxDolgnost] = CTabl.Find_Name_Fld("Dolgnost"); fld[idxStrahNum] = CTabl.Find_Name_Fld("StrahNum"); fld[idxKoefEmploy] = CTabl.Find_Name_Fld("KoefEmploy"); fld[idxNrv] = CTabl.Find_Name_Fld("Nrv"); fld[idxOut] = CTabl.Find_Name_Fld("OUT"); fld[idxEmloyDate] = CTabl.Find_Name_Fld("D_rb_f"); fld[idxDismisDate] = CTabl.Find_Name_Fld("D_uv_f"); fld[idxInPart1] = CTabl.Find_Name_Fld("InPart1"); } int idxC_FIO = 0, idxFIO = 1, idxKODSTR = 2, idxAEND = 3, idxFFIRST = 4, idxFNAME1 = 5, idxFNAME2 = 6, idxYear = 7, idxKodOP = 8, idxSUM01 = 9, idxSUM02 = 10, idxSUM03 = 11, idxSUMSV = 12, idxSTVS = 13, idxSUMSV1 = 14, idxREQ01 = 15, idxREQ02 = 16, idxREQ03 = 17, idxREQ04 = 18, idxREQ05 = 19, idxREQ06 = 20, idxREQ07 = 21, idxREQ08 = 22, idxREQ09 = 23, idxREQ10 = 24, idxREQ11 = 25, idxREQ12 = 26, idxFRV01 = 27, idxFRV02 = 28, idxFRV03 = 29, idxFRV04 = 30, idxFRV05 = 31, idxFRV06 = 32, idxFRV07 = 33, idxFRV08 = 34, idxFRV09 = 35, idxFRV10 = 36, idxFRV11 = 37, idxFRV12 = 38, idxFBCom = 39, idxSUM01M = 40, idxSUM02M = 41, idxSUM03M = 42, idxKODS01 = 43, idxKODS02 = 44, idxKODS03 = 45, idxKODS04 = 46, idxKODS05 = 47, idxKODS06 = 48, idxKODS07 = 49, idxKODS08 = 50, idxKODS09 = 51, idxKODS10 = 52, idxKODS11 = 53, idxKODS12 = 54, idxKR01 = 55, idxKR02 = 56, idxKR03 = 57, idxKR04 = 58, idxKR05 = 59, idxKR06 = 60, idxKR07 = 61, idxKR08 = 62, idxKR09 = 63, idxKR10 = 64, idxKR11 = 65, idxKR12 = 66, idxBUD01 = 67, idxBUD02 = 68, idxBUD03 = 69, idxBUD04 = 70, idxBUD05 = 71, idxBUD06 = 72, idxBUD07 = 73, idxBUD08 = 74, idxBUD09 = 75, idxBUD10 = 76, idxBUD11 = 77, idxBUD12 = 78, idxKDS01 = 103, idxKDS02 = 104, idxKDS03 = 105, idxKDS04 = 106, idxKDS05 = 107, idxKDS06 = 108, idxKDS07 = 109, idxKDS08 = 110, idxKDS09 = 111, idxKDS10 = 112, idxKDS11 = 113, idxKDS12 = 114, idxABEG = 115, idxTR01 = 116, idxTR02 = 117, idxTR03 = 118, idxTR04 = 119, idxTR05 = 120, idxTR06 = 121, idxTR07 = 122, idxTR08 = 123, idxTR09 = 124, idxTR10 = 125, idxTR11 = 126, idxTR12 = 127, idxDOL01 = 128, idxDOL02 = 129, idxDOL03 = 130, idxDOL04 = 131, idxDOL05 = 132, idxDOL06 = 133, idxDOL07 = 134, idxDOL08 = 135, idxDOL09 = 136, idxDOL10 = 137, idxDOL11 = 138, idxDOL12 = 139, idxSRF01 = 140, idxSRF02 = 141, idxSRF03 = 142, idxSRF04 = 143, idxSRF05 = 144, idxSRF06 = 145, idxSRF07 = 146, idxSRF08 = 147, idxSRF09 = 148, idxSRF10 = 149, idxSRF11 = 150, idxSRF12 = 151, idxCombine = 179, idxStagCommon = 180, idxStagDop = 181, idxNameOptions = 182, idxDolgnost = 183, idxStrahNum = 184, idxKoefEmploy = 185, idxNrv = 188, idxOut = 189, idxEmloyDate = 190, idxDismisDate = 191, idxInPart1 = 192, CntIdx = 194; int fld[CntIdx];