UserGetZpGosFixPeriods(Prop,DBeg,DEnd) { // РазмерФЧ - Размер фиксированной части в соответствии с трудовым договором // Множественный // todo Сделать множестивенный вариант фиксированной части (для сдельной системы оплаты) // if ( Uzizp.Qualification.PaymentSystem == 1 ) // todo Можно в этом случае, например, смотреть сетку 664 - "ЕФС-1 ЗПГос. Система оплаты труда", брать оттуда из строки с id Системы оплаты, равной 1, набор видов Н-У // todo и, для каждой строки действующей в периоде BegWorkDat - EndWorkDat, получать РазмерФЧ // int paymentSystem = Uzizp.Qualification.PaymentSystem; // todo Это будет нужно когда/если будем делать множественный вариант для сдельной системы оплаты var trfPeriods = CreateObject("KDatePeriods"); string pskch = TrimN(GetCommonCnfStr("kch_fix",psZpgosCnfTable)); if ( kch_num_sys(pskch) != -1 ) { var periods; KchToPeriods(pskch,DBeg.GetStr(),DEnd.GetStr(),0,periods); // Идем по всем периодам относящимся к подразделению for ( periods.SetBegin(); !periods.End(); periods.Next() ) { var db = periods.GetCurBeg(); var de = periods.GetCurEnd(); string value = TrimN(periods.GetCurCod()); trfPeriods.AddFreePeriod(db.GetStr(), de.GetStr(), value); } } if ( !trfPeriods.Count() ) // если в КЧ ничего не было, то заполняем по видам { var fixPeriods = CreateObject("KDatePeriods"); fixPeriods.AddFreePeriod(DBeg.GetStr(),DEnd.GetStr(),"0"); var LS = CreateObject("LS"); LS.GetGlobalLS(); var MatrLS = LS.MatrLS(); int numCol = GetCnfCol(GetCommonCnfStr("ColTVXStvk",psZpgosCnfTable),ST_STAVKA); string nuList=TrimN(GetCommonCnfStr("LST_NU_TRF",psZpgosCnfTable)); var Arr; int countNU = StringIntToArray(nuList," ,",1,'-',Arr); if ( countNU == 0 ) countNU = ColTvhToArray(numCol,"#nonzero#",0,Arr); int rowkod[ROWMAX]; int countLevel = 1; for ( int ii=0; ii=0;j--) { int row=rowkod[j]; var d1 = KDateFromD(GetBegDate(row)); var d2 = KDateFromD(GetEndDate(row)); if ( d2.LT(DBeg) || d1.GT(DEnd) ) contine; if ( d1.LT(DBeg) ) d1 = DBeg; if ( d2.GT(DEnd) ) d2 = DEnd; if ( d2.LT(d1) ) continue; double codeNU = GetCode(row); double bz = GetBase(row); double rz = bz; bz_kod(codeNU,d1.GetDouble(),bz,rz); //nick if(atoi(codeNU)==118) { char str[256]; StartRkv(codeNU); ReadRkv("нагрузка",str); double nagruzka=atof(str); FinishRkv(); double normTarif=0.; Value_For_Table_Cod(82,atoi(codeNU),data,normTarif); rz=bz*nagruzka/normTarif; } //nick roundd(rz,2,rz); fixPeriods.UpdateLevelCod(countLevel++,d1.GetStr(),d2.GetStr(),to_string(rz)); } } for ( fixPeriods.SetBegin(); !fixPeriods.End(); fixPeriods.Next() ) { var db = fixPeriods.GetCurBeg(); var de = fixPeriods.GetCurEnd(); string totalfix = ""; int cnt=0; for ( int level = 1; level0.00001 ) { if ( cnt++ ) totalfix += ","; totalfix += to_string(trf); } } trfPeriods.AddFreePeriod(db.GetStr(), de.GetStr(), totalfix); } } if ( !trfPeriods.Count() ) trfPeriods.AddFreePeriod(DBeg.GetStr(), DEnd.GetStr(), "0"); return trfPeriods; } 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 ) { MessageBox(0,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; }