int maxCol = 34; // количество столбцов Раздела 1 var block[maxCol]; var CFile, CTabl, CMsg; int len = 512, W = 250, // не менее символов A = 250, // не более символов bTime = false; int cntRows = 0; int tmi = 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 AcPosition = 0; int CHVS = 1; int CHSP = 0; int TipChisl = 1; char fullXlsName[len]; int deltaPosSch = 0; int deltaPosVch = 0; int fMonthForm = 0; // 0 - квартальная, 1 - за январь, 2 - остальные "месячные" ReadParam(¶m,np) // чтение параметров { if ( np > 0 ) Format = atoi(param[0]); if ( np > 1 ) FPRINT = atoi(param[1]); if ( np > 2 ) CHVS = atoi(param[2]); if ( IsCommonCnfExist("PrnOptim","siozp") ) { GetCommonCnf("PrnOptim","siozp",str,len); PrnMode = atoi(str); // 1 - оптимизированная печать; 0 - обычная } if ( IsCommonCnfExist("acPosition","siozp") ) { GetCommonCnf("acPosition","siozp",str,len); AcPosition = atoi(str); // 1 - учитывать только "Основное"; 0 - учитывать все } // корректировка парметров (если необходимо) // CHVS = atoi(p3get("p3soc","chisvs")); if ( CHVS ) CHVS = 1; CHSP = atoi(p3get("p3soc","chisspis")); if ( CHSP ) CHSP = 1; TipChisl = atoi(p3get("p3soc","TipChisl")); if ( TipChisl ) TipChisl = 1; // if ( -1 == fld[idxTSCH01] ) TipChisl = 1; return 0; } siozp(¶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(); 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]); 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; tmi = atoi(TextOrEmpty(CTabl,fld[idxKodOP],0)); if ( atoi(Year) >= 2020 ) fMonthForm = 0; else if ( tmi == 3 || tmi == 6 || tmi == 9 || tmi == 12 ) fMonthForm = 0; else fMonthForm = tmi==1?1:2; CMsg = CreateObject("ProgressBar"); CMsg.Initial(0,100,1); CMsg.SetShowTime(static_cast_to_int(bTime)); double sch = 0.0; double sch_s = 0.0; double sum00 = 0.0; int ns = 14; double TSC[ns]; double TVC[ns]; double T01[ns]; double T02[ns]; double T03[ns]; double T04[ns]; double T05[ns]; double T06[ns]; double T07[ns]; double T08[ns]; double T09[ns]; double T10[ns]; double T11[ns]; for ( int i = 0; i < ns; i++ ) { T01[i] = 0.0; T02[i] = 0.0; T03[i] = 0.0; T04[i] = 0.0; T05[i] = 0.0; T06[i] = 0.0; T07[i] = 0.0; T08[i] = 0.0; T09[i] = 0.0; T10[i] = 0.0; T11[i] = 0.0; TSC[i] = 0.0; TVC[i] = 0.0; } int vsovm = 0; // признак внешнего совместителя fullXlsName = Trim(TextOrEmpty(CTabl,fld[idxFNAME1],0)) + Trim(TextOrEmpty(CTabl,fld[idxFNAME2],0)); int acc = access(to_string(fullXlsName),0); if ( acc ) FPRINT = 1; if ( fTrans ) { // Передача в файл по Alt+F9 if ( acc ) { AmbaMessageBox("Перед передачей в файл необходимо сформировать отчет по F5","Внимание!",0,0); return 0; } CHVS = atoi(p3get("p3soc","chisvs")); if ( CHVS ) CHVS = 1; CHSP = atoi(p3get("p3soc","chisspis")); if ( CHSP ) CHSP = 1; // return 0; } if ( Format == 0 ) { SIOZPFillTns(abeg,aend,IdOrg); try { string fullFileName = GetPathXLT(NameCommonDir(),"siozp.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,"Сбор информации о заработной плате работников государственных и муниципальных учреждений"); // создание основных объектов } // СИоЗП - суммы для раздела 2 double sumFedBud = 0.0; double sumFedBudUk = 0.0; double sumBudSub = 0.0; double sumBudSubUk = 0.0; double sumBudMun = 0.0; double sumBudMunUk = 0.0; double sumOms = 0.0; double sumOmsUk = 0.0; double sumHoz = 0.0; double sumHozUk = 0.0; double sredSumRuk = 0.0; double sredSumZam = 0.0; double sredSumGlb = 0.0; double sredSumRest = 0.0; var MapRuk = CreateObject("MapString"); var MapZam = CreateObject("MapString"); var MapGlb = CreateObject("MapString"); var MapRst = CreateObject("MMapString"); // мультимеп, т.к. разные ИД хочется видеть раздельно 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; for ( int i = kalendBeg; i <= kalendEnd; i++ ) { sumRuk[i] = 0.0; sumZam[i] = 0.0; sumGlb[i] = 0.0; sumRst[i] = 0.0; } 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; int begRow = 6; int begCol = 1; int endRow = 105; int endCol = 36; 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 ) 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++ ) { KODS[i] = 0; TIPR[i] = 0; KR[i] = 0; REQ[i] = 0; BUD[i] = 0.0; OMC[i] = 0.0; HOZ[i] = 0.0; DOG[i] = 0.0; } int ids = idxKDS01; int idk = idxKR01; int idr = idxTR01; int idq = idxREQ01; for ( int i = 1; i < cm; i++ ) { KODS[i] = atoi(CTabl.Text(fld[ids],zap)); TIPR[i] = atoi(CTabl.Text(fld[idr],zap)); KR[i] = atoi(CTabl.Text(fld[idk],zap)); REQ[i] = atoi(CTabl.Text(fld[idq],zap)); ids++; idk++; idr++; idq++; } int ks = 0; // код строки // СИоЗП int idFedBud = idxBUD01 + shift; int idBudSub = idxSRF01 + shift; int idBudMun = idxMUN01 + shift; int idOms = idxOMC01 + shift; int idHoz = idxHOZ01 + shift; var Par16 = CreateObject("ParamFuncRW"); Par16.IInitial1(TrimN(CTabl.Text(fld[idxNach16],zap)),";",12); var Par18 = CreateObject("ParamFuncRW"); Par18.IInitial1(TrimN(CTabl.Text(fld[idxNach18],zap)),";",12); var Par19 = CreateObject("ParamFuncRW"); Par19.IInitial1(TrimN(CTabl.Text(fld[idxNach19],zap)),";",12); var Par20 = CreateObject("ParamFuncRW"); Par20.IInitial1(TrimN(CTabl.Text(fld[idxNach20],zap)),";",12); var Par21 = CreateObject("ParamFuncRW"); Par21.IInitial1(TrimN(CTabl.Text(fld[idxNach21],zap)),";",12); var Par22 = CreateObject("ParamFuncRW"); Par22.IInitial1(TrimN(CTabl.Text(fld[idxNach22],zap)),";",12); var Par24 = CreateObject("ParamFuncRW"); Par24.IInitial1(TrimN(CTabl.Text(fld[idxNach24],zap)),";",12); var Par25 = CreateObject("ParamFuncRW"); Par25.IInitial1(TrimN(CTabl.Text(fld[idxNach25],zap)),";",12); var Par27 = CreateObject("ParamFuncRW"); Par27.IInitial1(TrimN(CTabl.Text(fld[idxNach27],zap)),";",12); var Par29 = CreateObject("ParamFuncRW"); Par29.IInitial1(TrimN(CTabl.Text(fld[idxNach29],zap)),";",12); var Par30 = CreateObject("ParamFuncRW"); Par30.IInitial1(TrimN(CTabl.Text(fld[idxNach30],zap)),";",12); var Par31 = CreateObject("ParamFuncRW"); Par31.IInitial1(TrimN(CTabl.Text(fld[idxNach31],zap)),";",12); var Par32 = CreateObject("ParamFuncRW"); Par32.IInitial1(TrimN(CTabl.Text(fld[idxNach32],zap)),";",12); var Par33 = CreateObject("ParamFuncRW"); Par33.IInitial1(TrimN(CTabl.Text(fld[idxNach33],zap)),";",12); var Par34 = CreateObject("ParamFuncRW"); Par34.IInitial1(TrimN(CTabl.Text(fld[idxNach34],zap)),";",12); var Stavk = CreateObject("ParamFuncRW"); Stavk.IInitial1(TrimN(CTabl.Text(fld[idxKoefEmploy],zap)),";",12); var AcDeg = CreateObject("ParamFuncRW"); AcDeg.IInitial1(TrimN(CTabl.Text(fld[idxAcadDegree],zap)),";",12); var QuCat = CreateObject("ParamFuncRW"); QuCat.IInitial1(TrimN(CTabl.Text(fld[idxQualCat],zap)),";",12); var Norma = CreateObject("ParamFuncRW"); Norma.IInitial1(TrimN(CTabl.Text(fld[idxNrv],zap)),";",12); var OsUsl = CreateObject("ParamFuncRW"); OsUsl.IInitial1(TrimN(CTabl.Text(fld[idxOut],zap)),";",12); var ExSum = CreateObject("ParamFuncRW"); if ( fld[idxExcludedSu] != -1 ) ExSum.IInitial1(TrimN(CTabl.Text(fld[idxExcludedSu],zap)),";",12); else ExSum.IInitial1(to_string(""),";",12); for ( int i = kalendBeg; i <= kalendEnd; i++, idFedBud++, idBudSub++, idBudMun++, idOms++, idHoz++) { int kr = KR[i]; if ( kr == 0 ) continue; if ( kr == 2 ) vsovm = 1; else vsovm = 0; ks = KODS[i]; int tr = TIPR[i]; int required = REQ[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 sn16 = atof(Par16.Get(i-1)); sumTotal += sn16; control += nabs(sn16); double sn18 = atof(Par18.Get(i-1)); sumTotal += sn18; control += nabs(sn18); double sn19 = atof(Par19.Get(i-1)); sumTotal += sn19; control += nabs(sn19); double sn20 = atof(Par20.Get(i-1)); sumTotal += sn20; control += nabs(sn20); double sn21 = atof(Par21.Get(i-1)); sumTotal += sn21; control += nabs(sn21); double sn22 = atof(Par22.Get(i-1)); sumTotal += sn22; control += nabs(sn22); double sn24 = atof(Par24.Get(i-1)); sumTotal += sn24; control += nabs(sn24); double sn25 = atof(Par25.Get(i-1)); sumTotal += sn25; control += nabs(sn25); double sn27 = atof(Par27.Get(i-1)); sumTotal += sn27; control += nabs(sn27); double sn29 = atof(Par29.Get(i-1)); sumTotal += sn29; control += nabs(sn29); double sn30 = atof(Par30.Get(i-1)); sumTotal += sn30; control += nabs(sn30); double sn31 = atof(Par31.Get(i-1)); sumTotal += sn31; control += nabs(sn31); double sn32 = atof(Par32.Get(i-1)); sumTotal += sn32; control += nabs(sn32); double sn33 = atof(Par33.Get(i-1)); sumTotal += sn33; control += nabs(sn33); double sn34 = atof(Par34.Get(i-1)); sumTotal += sn34; control += nabs(sn34); if ( control > eps || required ) { for ( int ik = 0; ik < maxCol; ik++ ) block[ik] = to_string(""); CollectBudjetSum(CTabl,idFedBud,sumFedBud,sumFedBudUk,ks,zap); CollectBudjetSum(CTabl,idBudSub,sumBudSub,sumBudSubUk,ks,zap); CollectBudjetSum(CTabl,idBudMun,sumBudMun,sumBudMunUk,ks,zap); CollectBudjetSum(CTabl,idOms,sumOms,sumOmsUk,ks,zap); CollectBudjetSum(CTabl,idHoz,sumHoz,sumHozUk,ks,zap); tWriteStringToCell("AJ" + to_string(n), TrimN(OemToAnsi(CTabl.Text(fld[idxCombine],zap)))); SiozpStringToCell("A" + to_string(n), Year); SiozpStringToCell("B" + to_string(n), GetMonthName(i)); SiozpStringToCell("C" + to_string(n), GOR(xInn)); SiozpStringToCell("D" + to_string(n), GOR(xKpp)); SiozpStringToCell("E" + to_string(n), GOR(xOkf)); SiozpStringToCell("F" + to_string(n), KTO); SiozpStringToCell("K" + to_string(n), to_string(ks)); SiozpStringToCell("L" + to_string(n), emplCond); string KoefEmploy = atof(Stavk.Get(i-1)) < eps ? to_string("1") : TrimN(OemToAnsi(Stavk.Get(i-1))); SiozpNumToCell("M" + to_string(n), atof(KoefEmploy)); string AcadDegree = TrimN(AcDeg.Get(i-1)); if ( atoi(AcadDegree) == 2 ) AcadDegree = "кандидат наук"; if ( atoi(AcadDegree) == 1 ) AcadDegree = "доктор наук"; if ( strlen(AcadDegree) ) SiozpStringToCell("AB" + to_string(n), OemToAnsi(AcadDegree)); 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" + to_string(n), dolgnost); } else { SiozpStringAndIfNeedIncreaseRow("J", n, dolgnost, 30, 15); SiozpStringToCell("G" + to_string(n), fio); } ts = TrimN(QuCat.Get(i-1)); LowerString(ts); string qualCat = ""; if ( atoi(ts) == 1 ) qualCat = "первая"; else if ( atoi(ts) == 2 ) qualCat = "вторая"; else if ( atoi(ts) == 3 ) qualCat = "высшая"; else if ( strlen(ts) ) qualCat = to_string(ts); if ( strlen(qualCat) ) SiozpStringToCell("Z" + to_string(n), OemToAnsi(qualCat)); SiozpStringToCell("I" + to_string(n), TrimN(OemToAnsi(CTabl.Text(fld[idxStagCommon]+(CommonStagByMonth?i:0),zap)))); SiozpStringToCell("W" + to_string(n), TrimN(OemToAnsi(CTabl.Text(fld[idxStagDop]+(AddStagByMonth?i:0),zap)))); SiozpStringToCell("H" + to_string(n), TrimN(CTabl.Text(fld[idxStrahNum],zap))); string Out = SIOZPMakeCodSoutByKch(OsUsl.Get(i-1)); if ( Out!="" ) SiozpNumToCell("Q" + to_string(n), Out); SiozpNumToCell("N" + to_string(n), atof(Norma.Get(i-1))); SiozpNumToCell("O" + to_string(n), atof(CTabl.Text(fld[idxFRV01+i-1],zap))); if ( nabs(sn16) ) SiozpNumToCell("P" + to_string(n), sn16); if ( nabs(sn18) ) SiozpNumToCell("R" + to_string(n), sn18); if ( nabs(sn19) ) SiozpNumToCell("S" + to_string(n), sn19); if ( nabs(sn20) ) SiozpNumToCell("T" + to_string(n), sn20); if ( nabs(sn21) ) SiozpNumToCell("U" + to_string(n), sn21); if ( nabs(sn22) ) SiozpNumToCell("V" + to_string(n), sn22); if ( nabs(sn24) ) SiozpNumToCell("X" + to_string(n), sn24); if ( nabs(sn25) ) SiozpNumToCell("Y" + to_string(n), sn25); if ( nabs(sn27) ) SiozpNumToCell("AA" + to_string(n), sn27); if ( nabs(sn29) ) SiozpNumToCell("AC" + to_string(n), sn29); if ( nabs(sn30) ) SiozpNumToCell("AD" + to_string(n), sn30); if ( nabs(sn31) ) SiozpNumToCell("AE" + to_string(n), sn31); if ( nabs(sn32) ) SiozpNumToCell("AF" + to_string(n), sn32); if ( nabs(sn33) ) SiozpNumToCell("AG" + to_string(n), sn33); if ( nabs(sn34) ) SiozpNumToCell("AH" + to_string(n), sn34); var CurMonth = CreateObject("KMonth"); // дата для ТН руководства CurMonth.SetMonthYear(i, atoi(Year)); char DateEndCurMonth[len]; sprintf(DateEndCurMonth,"%02d.%02d.%04d",CurMonth.CountDay(),CurMonth.GetMonth(),CurMonth.GetYear()); double SumPoSredn = sumTotal - atof(ExSum.Get(i-1)); CollectSredSum(tn,DateEndCurMonth, SumPoSredn, MapRuk, MapZam, MapGlb, MapRst, isValidDoljn ); 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 && TYPE_OFFICE == MS_EXCEL ) if ( PrnMode ) { int firstRow = 6; //_WshObj.Range(_WshObj.Cells(firstRow,1), _WshObj.Cells(cntRows + firstRow - 1, maxCol)).Value = exBlock; //tSetRangeValue(row1,col1,row2,col2,value) tSetRangeValue(firstRow,1, cntRows + firstRow - 1, maxCol, exBlock); //AmbaMessageBox(PrnMode,"PrnMode",1,0); } int cntRowsToDelete = realCntGruppen * cntRowsGruppe - cntRows; if ( cntRowsToDelete > 0 ) tDeleteRows(n, cntRowsToDelete); tWshCellSelect(1,1); int MsgRub = 0; if ( atoi(p3get("p3soc","MsgRub")) ) { if ( 1 == AmbaMessageBox("Отображать суммы в рублях и копейках?","",1,1) ) MsgRub = 1; } for ( int i = 0; i < ns; i++ ) { roundd(T01[i],CHSP,T01[i]); roundd(T02[i],CHVS,T02[i]); if ( !TipChisl ) { roundd(TSC[i],CHSP,TSC[i]); roundd(TVC[i],CHVS,TVC[i]); } if ( !MsgRub ) { roundd(T03[i]/1000.0,1,T03[i]); roundd(T04[i]/1000.0,1,T04[i]); roundd(T05[i]/1000.0,1,T05[i]); roundd(T06[i]/1000.0,1,T06[i]); roundd(T07[i]/1000.0,1,T07[i]); roundd(T08[i]/1000.0,1,T08[i]); roundd(T09[i]/1000.0,1,T09[i]); roundd(T10[i]/1000.0,1,T10[i]); roundd(T11[i]/1000.0,1,T11[i]); } } // корректировка if ( !TipChisl ) { KorrectChislZp(deltaPosSch,T01,TSC,ns,CHSP); KorrectChislZp(deltaPosVch,T02,TVC,ns,CHVS); } // 4 += 5 // 8 += 9 T01[4] += T01[5]; T01[8] += T01[9]; T02[4] += T02[5]; T02[8] += T02[9]; T04[4] += T04[5]; T04[8] += T04[9]; T06[4] += T06[5]; T06[8] += T06[9]; T07[4] += T07[5]; T07[8] += T07[9]; T08[4] += T08[5]; T08[8] += T08[9]; T09[4] += T09[5]; T09[8] += T09[9]; T10[4] += T10[5]; T10[8] += T10[9]; T11[4] += T11[5]; T11[8] += T11[9]; 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); var mbeg = CreateObject("KMonth"); mbeg.SetMonth(abeg); sprintf(arg,"1,%d",mbeg.GetRel()); R_DATA_EX(arg,str,W,A); FreeSpaceString(str,3,""); LowerString(str); string smes0 = OemToAnsi(str); var mt = CreateObject("KMonth"); mt.SetMonth(aend); string year = SubStr(to_string(mt.GetYear()),2,2); sprintf(arg,"1,%d",mt.GetRel()); R_DATA_EX(arg,str,W,A); FreeSpaceString(str,3,""); LowerString(str); string smes1 = OemToAnsi(str); sprintf(arg,"11,%d",mt.GetRel()); R_DATA_EX(arg,str,W,A); FreeSpaceString(str,3,""); LowerString(str); string smes2 = OemToAnsi(str); for ( int i = 0, j = 3; j < 10; i++,j++ ) { str[i] = datatek[j]; } str[7] = 0; mt.SetDate(to_string(str)); sprintf(arg,"11,%d",mt.GetRel()); R_DATA_EX(arg,str,W,A); FreeSpaceString(str,3,""); string smes = OemToAnsi(str); sprintf(str,"%c%c",datatek[0],datatek[1]); string sday = to_string(str); sprintf(str,"%c%c",datatek[8],datatek[9]); string syear = to_string(str); tGetWshByIndex(1); // получаем ссылку на лист (worksheet) tWriteNumToCell("A2",cntRows); // СИоЗП печать Раздела 2 tGetWshByIndex(2); // получаем ссылку на лист (worksheet) tWshSelect(); tWriteStringToCell("A5",Year); tWriteStringToCell("B5",GOR(xInn)); tWriteStringToCell("C5",GOR(xKpp)); tWriteStringToCell("D5",GOR(xOko)); if ( nabs(sumFedBud) > eps ) tWriteNumToCell("E5",sumFedBud); if ( nabs(sumFedBudUk) > eps ) tWriteNumToCell("F5",sumFedBudUk); if ( nabs(sumBudSub) > eps ) tWriteNumToCell("G5",sumBudSub); if ( nabs(sumBudSubUk) > eps ) tWriteNumToCell("H5",sumBudSubUk); if ( nabs(sumBudMun) > eps ) tWriteNumToCell("I5",sumBudMun); if ( nabs(sumBudMunUk) > eps ) tWriteNumToCell("J5",sumBudMunUk); if ( nabs(sumOms) > eps ) tWriteNumToCell("K5",sumOms); if ( nabs(sumOmsUk) > eps ) tWriteNumToCell("L5",sumOmsUk); if ( nabs(sumHoz) > eps ) tWriteNumToCell("M5",sumHoz); if ( nabs(sumHozUk) > eps ) tWriteNumToCell("N5",sumHozUk); tWshCellSelect(1,1); tGetWshByIndex(3); // получаем ссылку на лист (worksheet) tWshSelect(); tWriteStringToCell("A4",Year); tWriteStringToCell("B4",GOR(xInn)); tWriteStringToCell("C4",GOR(xKpp)); int cntRuk[cm]; int cntZam[cm]; int cntGlb[cm]; int cntRst[cm]; for ( int i = kalendBeg; i <= kalendEnd; i++ ) { cntRuk[i] = 0; cntZam[i] = 0; cntGlb[i] = 0; cntRst[i] = 0; } CollectCntSredn(kalendBeg,kalendEnd,MapRuk,cntRuk); CollectCntSredn(kalendBeg,kalendEnd,MapZam,cntZam); CollectCntSredn(kalendBeg,kalendEnd,MapGlb,cntGlb); CollectCntSredn(kalendBeg,kalendEnd,MapRst,cntRst); double srSumRuk = 0.0; double srSumZam = 0.0; double srSumGlb = 0.0; double srSumRst = 0.0; int ExclRukMonth = 0; int ExclZamMonth = 0; int ExclGlbMonth = 0; int howCalcSredn = GetCommonCnfInt("TypeSredn","siozp"); bool byCountSum = (howCalcSredn & 0x01)==1; for ( int i = kalendBeg; i <= kalendEnd; i++ ) { if ( !byCountSum ) { if ( cntRuk[i] ) sumRuk[i] /= cntRuk[i]; if ( cntZam[i] ) sumZam[i] /= cntZam[i]; if ( cntGlb[i] ) sumGlb[i] /= cntGlb[i]; if ( cntRst[i] ) sumRst[i] /= cntRst[i]; } srSumRuk += sumRuk[i]; srSumZam += sumZam[i]; srSumGlb += sumGlb[i]; srSumRst += sumRst[i]; if ( !IsArray(SIOZPRukTns[i-1]) || (GetUBound(SIOZPRukTns[i-1])+1)==0 ) ExclRukMonth++; if ( !IsArray(SIOZPZamTns[i-1]) || (GetUBound(SIOZPZamTns[i-1])+1)==0 ) ExclZamMonth++; if ( !IsArray(SIOZPGlbTns[i-1]) || (GetUBound(SIOZPGlbTns[i-1])+1)==0 ) ExclGlbMonth++; } if ( !byCountSum ) { if ( ExclRukMonth >= dper ) ExclRukMonth = 0; if ( ExclZamMonth >= dper ) ExclZamMonth = 0; if ( ExclGlbMonth >= dper ) ExclGlbMonth = 0; srSumRuk = srSumRuk/(dper - ExclRukMonth); srSumZam = srSumZam/(dper - ExclZamMonth); srSumGlb = srSumGlb/(dper - ExclGlbMonth); srSumRst = srSumRst/dper; } else { int cntSumRuk = MapRuk.Size(); int cntSumZam = MapZam.Size(); int cntSumGlb = MapGlb.Size(); int cntSumRst = MapRst.Size(); if ( cntSumRuk ) srSumRuk /= cntSumRuk; if ( cntSumZam ) srSumZam /= cntSumZam; if ( cntSumGlb ) srSumGlb /= cntSumGlb; if ( cntSumRst ) srSumRst /= cntSumRst; } roundd(srSumRuk,2,srSumRuk); roundd(srSumZam,2,srSumZam); roundd(srSumGlb,2,srSumGlb); roundd(srSumRst,2,srSumRst); if ( nabs(srSumRuk) > eps ) tWriteNumToCell("D4",srSumRuk); if ( nabs(srSumZam) > eps ) tWriteNumToCell("E4",srSumZam); if ( nabs(srSumGlb) > eps ) tWriteNumToCell("F4",srSumGlb); if ( nabs(srSumRst) > eps ) tWriteNumToCell("G4",srSumRst); tWshCellSelect(1,1); n = 0; // номер строки в Excel string AC = ""; tGetWshByIndex(1); // получаем ссылку на лист (worksheet) tWshSelect(); tWshCellSelect(1,1); GetCurrentDirectory(511,str); // рабочий каталог амбы if ( !IsLocalZPL() ) { if ( IsCommonResource(NameCommonDir()) == 2 ) { GetCommonZPL(str,511); } } 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); str = str + "\\"+NameCommonDir()+"\\STAT\\" + Year + "_" + KodOP + "\\"; fullpath(str,str,511); mkdirAll(str); str = str + "siozp_" + IDTime + ".xls"; //tProtect("",true,false); tSaveXlsObjects(to_string(str)); string FName1 = SubStr(str,0,250); string FName2 = SubStr(str,250,500); 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(); } } if ( Format == 1 ) { // передача в файл //AmbaMessageBox("Данный режим недоступен","",0,0); //return 0; try { if ( FileSiozpInit()==ESC ) return 0; FileGmsFinal(XMLDoc); } catch(object err) { SayError(err); } catch(...) { SayUndefinedScriptError(); } } return 1; } //--------------------------------------------------------------------------------------------- FileSiozpInit() { var fullFileName = to_string(fullXlsName); tPrepereOfficeForWork(); // определяем работать на Excel или на Calc (определяем какой из офисов (MS Office или OpenOffice) установлен и какой предпочтительнее) tOpenXlsObjects(fullFileName,""); // создание основных объектов 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-03-15")); { 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; FondZp(XMLDoc,SIoZP); SzpRuk(XMLDoc,SIoZP); } 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("MapString"); ts = TrimN(GetStrCell("A6")); bool bExist = atoi(ts) != 0; CMsg.Initial(0,100,1); CMsg.SetShowTime(to_int(bTime)); string key = ""; string value = ""; string kRab = ""; string vRab = ""; string kDolj = ""; string vDolj = ""; string DLM = ";"; if ( bExist ) { int row = 6; // номер первой строки таблицы do { if ( atoi(cntRows) > 0 ) { if ( CMsg.Msg_Proc(" Подождите немного. Идет передача в файл. ",100.*row/atoi(cntRows))==ESC ) return 0; } string year = TrimN(GetStrCell("A" + to_string(row))); string month = GetMonthNumber(TrimN(GetStrCell("B" + to_string(row)))); key = year + DLM + month; value = key; Map.Add(key,value); // Работник -> Год + Месяц + ФИО + СНИЛС var ParFio = CreateObject("ParamFuncRW"); ParFio.IInitial1(TrimN(GetStrCell("G" + to_string(row)))," ",3); string fam = TrimN(ParFio.Get(0)); string name = TrimN(ParFio.Get(1)); string otch = TrimN(ParFio.Get(2)); string snils = TrimN(GetStrCell("H" + to_string(row))); kRab = year + DLM + month + DLM + fam + DLM + name + DLM + otch + DLM + snils; string stag = TrimN(GetStrCell("I" + to_string(row))); vRab = fam + DLM + name + DLM + otch + DLM + snils + DLM + stag; MapRab.Add(kRab,vRab); string strSov = ""; ts = TrimN(GetStrCell("L" + to_string(row))); Upst(ts); if ( ts == "╬╤═╬┬═╬┼" ) strSov = "1"; else if ( ts == "┬═┼╪═┼┼ ╤╬┬╠┼╤╥╚╥┼╦▄╤╥┬╬" ) strSov = "2"; else strSov = "3"; string acDeg = ""; ts = TrimN(GetStrCell("AB" + to_string(row))); // УченаяСтепень Upst(ts); if ( ts == "╩└═─╚─└╥ ═└╙╩" ) acDeg = "1"; if ( ts == "─╬╩╥╬╨ ═└╙╩" ) acDeg = "2"; string qualCat = ""; ts = TrimN(GetStrCell("Z" + to_string(row))); // КвалКатегория Upst(ts); if ( ts == "╧┼╨┬└▀" ) qualCat = "1"; if ( ts == "┬╥╬╨└▀" ) qualCat = "2"; if ( ts == "┬█╤╪└▀" ) qualCat = "3"; // СЗПД (Должность) -> Год + Месяц + ФИО + СНИЛС + Должность string dolj = TrimN(GetStrCell("J" + to_string(row))); string combine = TrimN(GetStrCell("AJ" + to_string(row))); kDolj = year + DLM + month + DLM + fam + DLM + name + DLM + otch + DLM + snils + DLM + combine + DLM + dolj; vDolj = dolj + DLM + // Должность TrimN(GetStrCell("K" + to_string(row))) + DLM + // ККП strSov + DLM + // УсловиеЗанятости TrimN(GNC("M" + to_string(row),14,3)) + DLM + // Ставка (максимальное чесло знаков после запятой - 3) TrimN(GNC("N" + to_string(row),14,2)) + DLM + // РабВремяНорма TrimN(GNC("O" + to_string(row),14,2)) + DLM + // РабВремяФакт TrimN(GNC("P" + to_string(row),14,2)) + DLM + // НачисленияТариф TrimN(GetStrCell( "Q" + to_string(row))) + DLM + // ОУТ TrimN(GNC("R" + to_string(row),14,2)) + DLM + // НачисленияОУТ TrimN(GNC("S" + to_string(row),14,2)) + DLM + // ДоплатаСовмещение TrimN(GNC("T" + to_string(row),14,2)) + DLM + // НачисленияИныеФед TrimN(GNC("U" + to_string(row),14,2)) + DLM + // НачисленияИныеРег TrimN(GNC("V" + to_string(row),14,2)) + DLM + // НачисленияПремии TrimN(GetStrCell( "W" + to_string(row))) + DLM + // НепрерывныйСтаж TrimN(GNC("X" + to_string(row),14,2)) + DLM + // ДоплатаСтаж TrimN(GNC("Y" + to_string(row),14,2)) + DLM + // ДоплатаСМ qualCat + DLM + // КвалКатегория TrimN(GNC("AA" + to_string(row),14,2)) + DLM + // ДоплатаКвалКат acDeg + DLM + // УченаяСтепень TrimN(GNC("AC" + to_string(row),14,2)) + DLM + // ДоплатаУС TrimN(GNC("AD" + to_string(row),14,2)) + DLM + // ДоплатаНаставничество TrimN(GNC("AE" + to_string(row),14,2)) + DLM + // ДоплатаМолодСпец TrimN(GNC("AF" + to_string(row),14,2)) + DLM + // ВыплатыИныеСтимул TrimN(GNC("AG" + to_string(row),14,2)) + DLM + // ВыплатыПрочие TrimN(GNC("AH" + to_string(row),14,2)) + DLM + // ВыплатыКомпенс TrimN(GNC("AI" + to_string(row),14,2)); // НачисленияИтого MapDolj.Add(kDolj,vDolj); ts = TrimN(GetStrCell("A" + to_string(++row))); bExist = atoi(ts) != 0; } while (bExist); } int iMap=0; for ( bool Cur = Map.InitIterator(); Cur; Cur = Map.Next() ) { if (ESC==PutPeriods(XMLDoc,XmlSzp,Map,MapRab,MapDolj,iMap++)) return ESC; } } } //--------------------------------------------------------------------------------------------- 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; } PutPeriods(&XMLDoc,&XmlSzp,&Map,&MapRab,&MapDolj, iMap) { var Period = CreateChildElemXMLns(XMLDoc,XmlSzp,toFile("Период")); { var OtchPer = CreateChildElemXMLns(XMLDoc,Period,toFile("ОтчетныйПериод")); { var ParYearMonth = CreateObject("ParamFuncRW"); ParYearMonth.IInitial1(Map.GetCurValue(),";",2); ts = ParYearMonth.Get(0); var Year = CreateChildElemXMLns(XMLDoc,OtchPer,toFile("Год")); SetValueTextBndXML(Year,toFile(ts),strlen(ts)); ts = ParYearMonth.Get(1); var Month = CreateChildElemXMLns(XMLDoc,OtchPer,toFile("Месяц")); SetValueTextBndXML(Month,toFile(ts),strlen(ts)); int numIter = iMap*MapRab.Size(); int cntDoljMap = MapRab.Size()*Map.Size(); for ( bool Cur = MapRab.InitIterator(); Cur; Cur = MapRab.Next() ) { if ( canPutRab(MapRab.GetCurKey(),Map.GetCurKey()) ) { PutRabs(XMLDoc,Period,MapRab,MapDolj); if ( CMsg.Msg_Proc(" Идёт передача должностей. ",100.*numIter++/cntDoljMap)==ESC ) return ESC; } } } } } //--------------------------------------------------------------------------------------------- canPutDolj(dol,key) { var ParKey = CreateObject("ParamFuncRW"); ParKey.IInitial1(key,";",5); var ParDol = CreateObject("ParamFuncRW"); ParDol.IInitial1(dol,";",5); if ( TrimN(ParKey.Get(0)) == TrimN(ParDol.Get(0)) && TrimN(ParKey.Get(1)) == TrimN(ParDol.Get(1)) && TrimN(ParKey.Get(2)) == TrimN(ParDol.Get(2)) && TrimN(ParKey.Get(3)) == TrimN(ParDol.Get(3)) && TrimN(ParKey.Get(4)) == TrimN(ParDol.Get(4)) ) return true; return false; } PutRabs(&XMLDoc,&Period,&MapRab,&MapDolj) { var Rab = CreateChildElemXMLns(XMLDoc,Period,toFile("Работник")); { var Par = CreateObject("ParamFuncRW"); Par.IInitial1(MapRab.GetCurValue(),";",5); var Fio = CreateChildElemXMLns(XMLDoc,Rab,toFile("УТ2:ФИО")); { ts = TrimN(Par.Get(0)); if ( strlen(ts) ) { var Fam = CreateChildElemXMLns(XMLDoc,Fio,toFile("УТ2:Фамилия")); SetValueTextBndXML(Fam,toFuf(ts),strlen(ts)); } ts = TrimN(Par.Get(1)); if ( strlen(ts) ) { var Name = CreateChildElemXMLns(XMLDoc,Fio,toFile("УТ2:Имя")); SetValueTextBndXML(Name,toFuf(ts),strlen(ts)); } ts = TrimN(Par.Get(2)); if ( strlen(ts) ) { var Otch = CreateChildElemXMLns(XMLDoc,Fio,toFile("УТ2:Отчество")); SetValueTextBndXML(Otch,toFuf(ts),strlen(ts)); } } ts = TrimN(Par.Get(3)); var Snils = CreateChildElemXMLns(XMLDoc,Rab,toFile("УТ2:СНИЛС")); SetValueTextBndXML(Snils,toFile(ts),strlen(ts)); ts = TrimN(Par.Get(4)); var Stag = CreateChildElemXMLns(XMLDoc,Rab,toFile("ОбщийСтаж")); SetValueTextBndXML(Stag,toFile(ts),strlen(ts)); for ( bool Cur = MapDolj.InitIterator(); Cur; Cur = MapDolj.Next() ) { if ( canPutDolj(MapDolj.GetCurKey(),MapRab.GetCurKey()) ) { PutDolj(XMLDoc,Rab,MapDolj); } } } } //--------------------------------------------------------------------------------------------- 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)); } PutDolj(&XMLDoc,&Rab,&MapDolj) { var Szpd = CreateChildElemXMLns(XMLDoc,Rab,toFile("СЗПД")); { var Par = CreateObject("ParamFuncRW"); Par.IInitial1(MapDolj.GetCurValue(),";",26); PutRecuiredTag(XMLDoc,Szpd,Par.Get(0), "Должность"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(1), "ККП"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(2), "УсловиеЗанятости"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(3), "Ставка"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(4), "РабВремяНорма"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(5), "РабВремяФакт"); PutOptionalTag(XMLDoc,Szpd,Par.Get(6), "НачисленияТариф"); PutOptionalTag(XMLDoc,Szpd,Par.Get(7), "ОУТ"); PutOptionalTag(XMLDoc,Szpd,Par.Get(8), "НачисленияОУТ"); PutOptionalTag(XMLDoc,Szpd,Par.Get(9), "ДоплатаСовмещение"); PutOptionalTag(XMLDoc,Szpd,Par.Get(10),"НачисленияИныеФед"); PutOptionalTag(XMLDoc,Szpd,Par.Get(11),"НачисленияИныеРег"); PutOptionalTag(XMLDoc,Szpd,Par.Get(12),"НачисленияПремии"); PutRecuiredTag(XMLDoc,Szpd,Par.Get(13),"НепрерывныйСтаж"); PutOptionalTag(XMLDoc,Szpd,Par.Get(14),"ДоплатаСтаж"); PutOptionalTag(XMLDoc,Szpd,Par.Get(15),"ДоплатаСМ"); PutOptionalTag(XMLDoc,Szpd,Par.Get(16),"КвалКатегория "); PutOptionalTag(XMLDoc,Szpd,Par.Get(17),"ДоплатаКвалКат"); PutOptionalTag(XMLDoc,Szpd,Par.Get(18),"УченаяСтепень"); PutOptionalTag(XMLDoc,Szpd,Par.Get(19),"ДоплатаУС"); PutOptionalTag(XMLDoc,Szpd,Par.Get(20),"ДоплатаНаставничество"); PutOptionalTag(XMLDoc,Szpd,Par.Get(21),"ДоплатаМолодСпец"); PutOptionalTag(XMLDoc,Szpd,Par.Get(22),"ВыплатыИныеСтимул"); PutOptionalTag(XMLDoc,Szpd,Par.Get(23),"ВыплатыПрочие"); PutOptionalTag(XMLDoc,Szpd,Par.Get(24),"ВыплатыКомпенс"); PutOptionalTag(XMLDoc,Szpd,Par.Get(25),"НачисленияИтого"); } } //--------------------------------------------------------------------------------------------- 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); tGetWshByIndex(2); PutStrTag(XMLDoc,XmlOrg,"D",5,"ОКОГУ",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; //--------------------------------------------------------------------------------------------- FondZp(&XMLDoc,&SIoZP) { tGetWshByIndex(2); var XmlFondZp = CreateChildElemXMLns(XMLDoc,SIoZP,toFile("ФондЗП")); { ts = TrimN(GetStrCell("A5")); bool bExist = atoi(ts) != 0; if ( bExist ) { int row = 5; // номер первой строки таблицы do { var Period = CreateChildElemXMLns(XMLDoc,XmlFondZp,toFile("Период")); { ts = TrimN(GetStrCell("A" + to_string(row))); var Year = CreateChildElemXMLns(XMLDoc,Period,toFile("Год")); SetValueTextBndXML(Year,toFile(ts),strlen(ts)); PutNumTag(XMLDoc,Period,"E",row,"РасхОбщФед"); PutNumTag(XMLDoc,Period,"F",row,"РасхКатФед"); PutNumTag(XMLDoc,Period,"G",row,"РасхОбщСуб"); PutNumTag(XMLDoc,Period,"H",row,"РасхКатСуб"); PutNumTag(XMLDoc,Period,"I",row,"РасхОбщМун"); PutNumTag(XMLDoc,Period,"J",row,"РасхКатМун"); PutNumTag(XMLDoc,Period,"K",row,"РасхОбщОМС"); PutNumTag(XMLDoc,Period,"L",row,"РасхКатОМС"); PutNumTag(XMLDoc,Period,"M",row,"РасхОбщИные"); PutNumTag(XMLDoc,Period,"N",row,"РасхКатИные"); } ts = TrimN(GetStrCell("A" + to_string(++row))); bExist = atoi(ts) != 0; } while (bExist); } } } //--------------------------------------------------------------------------------------------- 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)); } } //--------------------------------------------------------------------------------------------- SzpRuk(&XMLDoc,&SIoZP) { tGetWshByIndex(3); var XmlSzpRuk = CreateChildElemXMLns(XMLDoc,SIoZP,toFile("СЗПРук")); { ts = TrimN(GetStrCell("A4")); bool bExist = atoi(ts) != 0; if ( bExist ) { int row = 4; // номер первой строки таблицы do { var Period = CreateChildElemXMLns(XMLDoc,XmlSzpRuk,toFile("Период")); { ts = TrimN(GetStrCell("A" + to_string(row))); var Year = CreateChildElemXMLns(XMLDoc,Period,toFile("Год")); SetValueTextBndXML(Year,toFile(ts),strlen(ts)); PutNumTag(XMLDoc,Period,"D",row,"СредЗПРук"); PutNumTag(XMLDoc,Period,"E",row,"СредЗПЗам"); PutNumTag(XMLDoc,Period,"F",row,"СредЗПГлБух"); PutNumTag(XMLDoc,Period,"G",row,"СредЗПРаб"); } ts = TrimN(GetStrCell("A" + to_string(++row))); bExist = atoi(ts) != 0; } while (bExist); } } } //--------------------------------------------------------------------------------------------- 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); 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 ) 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); } FillFld() //============================================================================= // Находим поля в таблице //============================================================================= { fld[idxSUM00] = CTabl.Find_Name_Fld("SUM00"); fld[idxC_FIO] = CTabl.Find_Name_Fld("C_FIO"); fld[idxFIO] = CTabl.Find_Name_Fld("FIO"); fld[idxKODSTR] = CTabl.Find_Name_Fld("KODSTR"); fld[idxSCH] = CTabl.Find_Name_Fld("SCH"); fld[idxSCH_S] = CTabl.Find_Name_Fld("SCH_S"); 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[idxFCkod_rab] = CTabl.Find_Name_Fld("FCkod_rab"); 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[idxRLISTNU] = CTabl.Find_Name_Fld("RLISTNU"); 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[idxSUMDOG] = CTabl.Find_Name_Fld("SUMDOG"); 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[idxOMC01] = CTabl.Find_Name_Fld("OMC01"); fld[idxOMC02] = CTabl.Find_Name_Fld("OMC02"); fld[idxOMC03] = CTabl.Find_Name_Fld("OMC03"); fld[idxOMC04] = CTabl.Find_Name_Fld("OMC04"); fld[idxOMC05] = CTabl.Find_Name_Fld("OMC05"); fld[idxOMC06] = CTabl.Find_Name_Fld("OMC06"); fld[idxOMC07] = CTabl.Find_Name_Fld("OMC07"); fld[idxOMC08] = CTabl.Find_Name_Fld("OMC08"); fld[idxOMC09] = CTabl.Find_Name_Fld("OMC09"); fld[idxOMC10] = CTabl.Find_Name_Fld("OMC10"); fld[idxOMC11] = CTabl.Find_Name_Fld("OMC11"); fld[idxOMC12] = CTabl.Find_Name_Fld("OMC12"); fld[idxHOZ01] = CTabl.Find_Name_Fld("HOZ01"); fld[idxHOZ02] = CTabl.Find_Name_Fld("HOZ02"); fld[idxHOZ03] = CTabl.Find_Name_Fld("HOZ03"); fld[idxHOZ04] = CTabl.Find_Name_Fld("HOZ04"); fld[idxHOZ05] = CTabl.Find_Name_Fld("HOZ05"); fld[idxHOZ06] = CTabl.Find_Name_Fld("HOZ06"); fld[idxHOZ07] = CTabl.Find_Name_Fld("HOZ07"); fld[idxHOZ08] = CTabl.Find_Name_Fld("HOZ08"); fld[idxHOZ09] = CTabl.Find_Name_Fld("HOZ09"); fld[idxHOZ10] = CTabl.Find_Name_Fld("HOZ10"); fld[idxHOZ11] = CTabl.Find_Name_Fld("HOZ11"); fld[idxHOZ12] = CTabl.Find_Name_Fld("HOZ12"); 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[idxMUN01] = CTabl.Find_Name_Fld("MUN01"); fld[idxMUN02] = CTabl.Find_Name_Fld("MUN02"); fld[idxMUN03] = CTabl.Find_Name_Fld("MUN03"); fld[idxMUN04] = CTabl.Find_Name_Fld("MUN04"); fld[idxMUN05] = CTabl.Find_Name_Fld("MUN05"); fld[idxMUN06] = CTabl.Find_Name_Fld("MUN06"); fld[idxMUN07] = CTabl.Find_Name_Fld("MUN07"); fld[idxMUN08] = CTabl.Find_Name_Fld("MUN08"); fld[idxMUN09] = CTabl.Find_Name_Fld("MUN09"); fld[idxMUN10] = CTabl.Find_Name_Fld("MUN10"); fld[idxMUN11] = CTabl.Find_Name_Fld("MUN11"); fld[idxMUN12] = CTabl.Find_Name_Fld("MUN12"); fld[idxNach16] = CTabl.Find_Name_Fld("Nach16"); fld[idxNach18] = CTabl.Find_Name_Fld("Nach18"); fld[idxNach19] = CTabl.Find_Name_Fld("Nach19"); fld[idxNach20] = CTabl.Find_Name_Fld("Nach20"); fld[idxNach21] = CTabl.Find_Name_Fld("Nach21"); fld[idxNach22] = CTabl.Find_Name_Fld("Nach22"); fld[idxNach24] = CTabl.Find_Name_Fld("Nach24"); fld[idxNach25] = CTabl.Find_Name_Fld("Nach25"); fld[idxNach27] = CTabl.Find_Name_Fld("Nach27"); fld[idxNach29] = CTabl.Find_Name_Fld("Nach29"); fld[idxNach30] = CTabl.Find_Name_Fld("Nach30"); fld[idxNach31] = CTabl.Find_Name_Fld("Nach31"); fld[idxNach32] = CTabl.Find_Name_Fld("Nach32"); fld[idxNach33] = CTabl.Find_Name_Fld("Nach33"); fld[idxNach34] = CTabl.Find_Name_Fld("Nach34"); 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[idxAcadDegree] = CTabl.Find_Name_Fld("AcadDegree"); fld[idxQualCat] = CTabl.Find_Name_Fld("QualCat"); 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"); fld[idxExcludedSu] = CTabl.Find_Name_Fld("ExcludedSu"); } int idxSUM00 = 0, idxC_FIO = 1, idxFIO = 2, idxKODSTR = 3, idxSCH = 4, idxSCH_S = 5, idxAEND = 6, idxFFIRST = 7, idxFNAME1 = 8, idxFNAME2 = 9, idxYear = 10, idxKodOP = 11, idxFCkod_rab = 12, idxSUM01 = 13, idxSUM02 = 14, idxSUM03 = 15, idxSUMSV = 16, idxSTVS = 17, idxSUMSV1 = 18, idxRLISTNU = 19, idxREQ01 = 20, idxREQ02 = 21, idxREQ03 = 22, idxREQ04 = 23, idxREQ05 = 24, idxREQ06 = 25, idxREQ07 = 26, idxREQ08 = 27, idxREQ09 = 28, idxREQ10 = 29, idxREQ11 = 30, idxREQ12 = 31, idxFRV01 = 32, idxFRV02 = 33, idxFRV03 = 34, idxFRV04 = 35, idxFRV05 = 36, idxFRV06 = 37, idxFRV07 = 38, idxFRV08 = 39, idxFRV09 = 40, idxFRV10 = 41, idxFRV11 = 42, idxFRV12 = 43, idxSUMDOG = 44, idxFBCom = 45, idxSUM01M = 46, idxSUM02M = 47, idxSUM03M = 48, idxKODS01 = 49, idxKODS02 = 50, idxKODS03 = 51, idxKODS04 = 52, idxKODS05 = 53, idxKODS06 = 54, idxKODS07 = 55, idxKODS08 = 56, idxKODS09 = 57, idxKODS10 = 58, idxKODS11 = 59, idxKODS12 = 60, idxKR01 = 61, idxKR02 = 62, idxKR03 = 63, idxKR04 = 64, idxKR05 = 65, idxKR06 = 66, idxKR07 = 67, idxKR08 = 68, idxKR09 = 69, idxKR10 = 70, idxKR11 = 71, idxKR12 = 72, idxBUD01 = 73, idxBUD02 = 74, idxBUD03 = 75, idxBUD04 = 76, idxBUD05 = 77, idxBUD06 = 78, idxBUD07 = 79, idxBUD08 = 80, idxBUD09 = 81, idxBUD10 = 82, idxBUD11 = 83, idxBUD12 = 84, idxOMC01 = 85, idxOMC02 = 86, idxOMC03 = 87, idxOMC04 = 88, idxOMC05 = 89, idxOMC06 = 90, idxOMC07 = 91, idxOMC08 = 92, idxOMC09 = 93, idxOMC10 = 94, idxOMC11 = 95, idxOMC12 = 96, idxHOZ01 = 97, idxHOZ02 = 98, idxHOZ03 = 99, idxHOZ04 = 100, idxHOZ05 = 101, idxHOZ06 = 102, idxHOZ07 = 103, idxHOZ08 = 104, idxHOZ09 = 105, idxHOZ10 = 106, idxHOZ11 = 107, idxHOZ12 = 108, idxKDS01 = 109, idxKDS02 = 110, idxKDS03 = 111, idxKDS04 = 112, idxKDS05 = 113, idxKDS06 = 114, idxKDS07 = 115, idxKDS08 = 116, idxKDS09 = 117, idxKDS10 = 118, idxKDS11 = 119, idxKDS12 = 120, idxABEG = 121, idxTR01 = 122, idxTR02 = 123, idxTR03 = 124, idxTR04 = 125, idxTR05 = 126, idxTR06 = 127, idxTR07 = 128, idxTR08 = 129, idxTR09 = 130, idxTR10 = 131, idxTR11 = 132, idxTR12 = 133, idxDOL01 = 134, idxDOL02 = 135, idxDOL03 = 136, idxDOL04 = 137, idxDOL05 = 138, idxDOL06 = 139, idxDOL07 = 140, idxDOL08 = 141, idxDOL09 = 142, idxDOL10 = 143, idxDOL11 = 144, idxDOL12 = 145, idxSRF01 = 146, idxSRF02 = 147, idxSRF03 = 148, idxSRF04 = 149, idxSRF05 = 150, idxSRF06 = 151, idxSRF07 = 152, idxSRF08 = 153, idxSRF09 = 154, idxSRF10 = 155, idxSRF11 = 156, idxSRF12 = 157, idxMUN01 = 158, idxMUN02 = 159, idxMUN03 = 160, idxMUN04 = 161, idxMUN05 = 162, idxMUN06 = 163, idxMUN07 = 164, idxMUN08 = 165, idxMUN09 = 166, idxMUN10 = 167, idxMUN11 = 168, idxMUN12 = 169, idxNach16 = 170, idxNach18 = 171, idxNach19 = 172, idxNach20 = 173, idxNach21 = 174, idxNach22 = 175, idxNach24 = 176, idxNach25 = 177, idxNach27 = 178, idxNach29 = 179, idxNach30 = 180, idxNach31 = 181, idxNach32 = 182, idxNach33 = 183, idxNach34 = 184, idxCombine = 185, idxStagCommon = 186, idxStagDop = 187, idxNameOptions = 188, idxDolgnost = 189, idxStrahNum = 190, idxKoefEmploy = 191, idxAcadDegree = 192, idxQualCat = 193, idxNrv = 194, idxOut = 195, idxEmloyDate = 196, idxDismisDate = 197, idxInPart1 = 198, idxExcludedSu = 199, CntIdx = 200; int fld[CntIdx]; int cm = 13; int KODS[cm]; int TIPR[cm]; int KR[cm]; int REQ[cm]; double BUD[cm]; double OMC[cm]; double HOZ[cm]; double DOG[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; } var SIOZPRukTns[12]; var SIOZPZamTns[12]; var SIOZPGlbTns[12]; SIOZPFillTns(absmBeg,absmEnd,idOrg) { int bySetR = -1, bySetZam=0,bySetGlb=0; // еще не знаем по сетке или нет char Buf[512]; for ( int absm=absmBeg; absm<=absmEnd; ++ absm ) { var d = KDateFromInt_LastDay(absm); if ( bySetR==-1 ) { var s; int rc = Value_For_Table_CodS(656,idOrg,1,d.GetDouble(),s); if ( rc==-2 ) bySetR = 0; else { bySetR = !rc?1:0; rc = Value_For_Table_CodS(656,idOrg,2,d.GetDouble(),s); if ( !rc ) bySetZam = 1; rc = Value_For_Table_CodS(656,idOrg,3,d.GetDouble(),s); if ( !rc ) bySetGlb = 1; } } string s=""; if ( bySetR ) { var v; int rc = Value_For_Table_CodS(656,idOrg,1,d.GetDouble(),v); if ( !rc && Str_Cmp(v," "," ") ) s = RTrimS(v); } if ( s=="" ) s = RTrimS(GetCommonDateCnf("TabNumsRuk","siozp",d.GetStr(),Buf,511)); var arr; ListNUToSafeArray(s,' ',arr); SIOZPRukTns[d.GetMonth()-1] = arr; arr = GetNothing(); s=""; if ( bySetZam ) { var v; int rc = Value_For_Table_CodS(656,idOrg,2,d.GetDouble(),v); if ( !rc && Str_Cmp(v," "," ") ) s = RTrimS(v); } if ( s=="" ) s = RTrimS(GetCommonDateCnf("TabNumsZam","siozp",d.GetStr(),Buf,511)); ListNUToSafeArray(s,' ',arr); SIOZPZamTns[d.GetMonth()-1] = arr; arr = GetNothing(); s=""; if ( bySetGlb ) { var v; int rc = Value_For_Table_CodS(656,idOrg,3,d.GetDouble(),v); if ( !rc && Str_Cmp(v," "," ") ) s = RTrimS(v); } if ( s=="" ) s = RTrimS(GetCommonDateCnf("TabNumsGlb","siozp",d.GetStr(),Buf,511)); ListNUToSafeArray(s,' ',arr); SIOZPGlbTns[d.GetMonth()-1] = arr; } } CollectSredSum(tn,DateEndCurMonth,sumTotal,MapRuk,MapZam,MapGlb,MapRst,isValidDoljn) { char Buf[1024]; string Date = DateEndCurMonth; var d = KDateFromStr(Date); if ( isValidDoljn ) if ( isTnSuitable(tn,SIOZPRukTns,sumRuk,sumTotal,MapRuk,d) ) return; if ( isValidDoljn ) if ( isTnSuitable(tn,SIOZPZamTns,sumZam,sumTotal,MapZam,d) ) return; if ( isValidDoljn ) if ( isTnSuitable(tn,SIOZPGlbTns,sumGlb,sumTotal,MapGlb,d) ) return; sumRst[d.GetMonth()] += sumTotal; string key = to_string(d.GetMonth()) + ";" + to_string(tn); MapRst.Add(key,key); return; } 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]++; } } } } } double sumRuk[cm]; double sumZam[cm]; double sumGlb[cm]; double sumRst[cm]; InsertRow(n) { tInsertRows(n,1); // вставка одной строки tCopyRow(n); // копирование строки n-1 в строку n } SiozpStringToCell(celAdr, strValue) { //if ( PrnMode && TYPE_OFFICE == MS_EXCEL ) if ( PrnMode ) { string simbol = GetSiozpSimbolFromCelAdres(celAdr); int row = GetSiozpRowFromSimbol(simbol); if (row > 0 && row < 35 ) { block[row-1] = to_string(strValue); } } else { tWriteStringToCell(celAdr, strValue); } } SiozpNumToCell(celAdr, numValue) { //if ( PrnMode && TYPE_OFFICE == MS_EXCEL ) if ( PrnMode ) { string simbol = GetSiozpSimbolFromCelAdres(celAdr); int row = GetSiozpRowFromSimbol(simbol); if (row > 0 && row < 35 ) { block[row-1] = numValue; } } else { tWriteNumToCell(celAdr, numValue); } } SiozpStringAndIfNeedIncreaseRow(sim,num,str,maxLength,rowHeight) // sim - символьная часть адреса ячейки (буква столбца) // num - числовая часть адреса ячейки (номер строки) // str - строковое значение которую нужно напечатать // maxLength - количество символов которое должно помещаться в одной строке // rowHeight - высота для одной строки { //if ( PrnMode && TYPE_OFFICE == MS_EXCEL ) if ( PrnMode ) { int row = GetSiozpRowFromSimbol(sim); if (row > 0 && row < 35 ) { block[row-1] = str; int strLength = strlen(str); int cntRow = atoi(strLength/maxLength) + 1; if ( cntRow > 1 ) { tRowHeight2(num,rowHeight * cntRow); } } } else { tWriteStringAndIfNeedIncreaseRow(sim,num,str,maxLength,rowHeight); } } GetSiozpSimbolFromCelAdres(celAdr) { int lenth = strlen(celAdr); string sadr = to_string(celAdr); string rc = ""; string rest = ""; // первый символ, точно буква rc = SubStr(sadr,0,1); // смотрим что осталось rest = SubStr(sadr,1); if ( atoi(rest) ) return rc; // в rest осталось число, значит вибрали символьную часть (из одного символа) else { rc += SubStr(sadr,1,1); return rc; // больше двух символов в адресе в этом отчете нет } } 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; } return row; } AddGruppen(begRow, begCol, endRow, endCol, cntGruppen, cntRowsGruppe) { tGetWshByIndex(1); tWshSelect(); int realGruppen = 1; int colPosition = 1; for ( int gr = 1; gr < cntGruppen; gr++ ) { int rowPosition = begRow + realGruppen * cntRowsGruppe; tCopyRange(begRow, begCol, endRow, endCol, rowPosition, colPosition); realGruppen++; } tWshCellSelect(1,1); return realGruppen; }