UserSIOZPFrvChas(comb,stolb,motn,acc) { int applyKoef = GetCommonCnfInt("koefNRV","siozp"); string ps_kch = GetCommonCnfStr("k_employ","siozp"); if ( strlen(RTrimS(ps_kch))==0 ) ps_kch = "k_employ"; double rv = 0.; char rez[512]; int m=atoi(motn); if ( m > BMES || m<-P2MES ) return rv; int newmrasch = mtek+m; int oldmrasch = mrasch; bool bChangeMrasch = newmrasch!=oldmrasch; var CL=CreateObject("CombineList"); var it = CL.CreateIterator(); int istolb = atoi(to_string(stolb)); var DCur =CreateObject("KDate"); DCur.SetDateII(0,newmrasch+1); char Buf[256]; // отсечем исп.должности с периодом работы не пересекающимся с расчетным месяцем. GetKchValue("data_rb",Buf,255,DCur); var DBegR = KDateFromStr(Buf); if ( DBegR.GetAbs()>newmrasch ) return rv; GetKchValue("data_uv",Buf,255,DCur); var DEndR = KDateFromStr(Buf); if ( DEndR.IsValid() && DEndR.GetAbs() 0 ) { char dopstbuf[MAXKOD]; memcpy(dopstbuf,dopst,MAXKOD); Fill_Dopst(dopst,istolb-1); var Prop = GetCommonProp(CMN_SRC_REFS); var ts = CreateObject("TempCommonSrc"); ts.TempCommonSrcInitial(CMN_SRC_COUNT_LS); SetCommonProp(CMN_SRC_COUNT_LS,Prop); var LS = CreateObject("LS"); LS.GetGlobalLS(); var MatrLS = LS.MatrLS(); var SumElem = MatrLS.CollectSumm('d',newmrasch,0,CL_COL|CL_M|CL_SOURCE,Prop); rv = SumElem.RV; memcpy(dopst,dopstbuf,MAXKOD); } else { int z1 = 1; int z2 = countday; if ( DBegR.GetAbs()==newmrasch ) z1 = DBegR.GetDay(); if ( DEndR.GetAbs()==newmrasch ) z2 = DEndR.GetDay(); skoljko(rv,data,z1,z2,rsimv,calm,cht); } if ( applyKoef ) { var d = KDateFromInt_LastDay(newmrasch); GetKchValue(ps_kch,Buf,255,d); double k = atof(Buf); if ( k<0.0000001 ) k = 1.; rv *= k; } if ( bChangeMrasch ) s50all(oldmrasch); roundd(rv,acc,rv); return rv; } GetProfName(Prof) { char s[256]; GetValueClassif("T_GUIDE\\prof.tab",Prof,s,255,"Value","Kod"); return s; } Message ( &Arg, &pcT, W, A) ////////////////////////////////////////////////////////////////// // Сообщение(парам1,парам2) // парам1 - текст сообщения // парам2 - заголовок окна ////////////////////////////////////////////////////////////////// { var FuncParam = CreateObject("ParamFuncRW"); FuncParam.IInitial(static_cast_to_string(Arg),",",10); int CountParam=FuncParam.Count(); if ( CountParam ) { AmbaMessageBox(FuncParam.Get(0),FuncParam.Get(1),1); } return pcT; } ToLeft( &Arg, &pcT, W, A) ////////////////////////////////////////////////////////////////// // Выравнивание числа по левому краю ////////////////////////////////////////////////////////////////// { double Sum = atof(GetVarValue(Arg)); char StrTmp[W+256]; sprintf(StrTmp,"%-*.*f",W,A,Sum); Text_Text(pcT,StrTmp,W); return pcT; } UserCombineRefF2(&buffer,bufsize,handle,&C_Params) { // функция для вызова справочника совместительств из таблицы // у поля Совместительство в таблице настройки написать в функции предварительной обработки: // CLASSIF(S:UserCombineRefF2) // ЧИТАЕТ ЛИЦЕВОЙ СЧЕТ с табельным номером взятым из поля C_FIO char ss[bufsize+1]; CharToOem(buffer,ss); var CTabl=CreateObject("CurPrnTbl"); CTabl.Initial(C_Params.pTabl); int Tn=atoi(CTabl.TextS("C_FIO",CTabl.Get_N_Rcr())); int er=LSRead(Tn,2); if (er==1) { int rc=ShowCombineRef(ss,ss, 2, 5, 70, 15); if (rc!=ESC) { OemToChar(ss, buffer); return 1; } } return 0; }