GetFirstValidCode(intcode) { int rowkod[ROWMAX];//массив с номерами строк var prop = CreateObject("APropBE"); int cntrow=poiskosnkodProp(intCode,rowkod,0,prop);//получаем список всех строк для вида внутренним кодом intCode //откидываем недействующие в month строки FiltrRowkod(rowkod,cntrow, absMonth, 1); //точный внутренний код вида, действующего в absMonth, либо -1 double code= cntrow>0 ? GetCode(rowkod[0]) : -1; } 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; } /* // Функция которая для преднастроенного режима "по-среднему" и индексу фонда возвращает индекс "целевого фонда" (на который надо записать сумму с этого фонда) // idSredn - id режима расчета по-среднему // fond - индекс фонда, для которого ищем целевой // objSredn - класс расчета среднего, из него можно достать например настройки objSredn.GetNastr(...) // Возвращаемый результат: индекс "целевого" фонда UserGetTargetFondPoSredn(idSredn,fond,objSredn) { var d = objSredn.GetNastr().GetDateSr(); // для преднастроенного режима с id = 2 все кроме второго фонда объединяем на первом фонде if ( idSredn==2 ) return fond!=1?0:1; return 0; // на первый фонд } */ /* // Функция которая для преднастроенного режима "по-среднему" и индексу фонда возвращает код вида Н-У для суммы среднего // idSredn - id режима расчета по-среднему // codNU - внутрениий кода Н-У в соответствии с настройками этого режима "по-среднему" // fond - индекс фонда, для которого ищем целевой // objSredn - класс расчета среднего, из него можно достать например настройки objSredn.GetNastr(...) // Возвращаемый результат: внутренний код вида на который надо записать сумму "по-среднему" для этого фонда UserGetCodNUPoSredn(idSredn,codNU,fond,objSredn) { var d = objSredn.GetNastr().GetDateSr(); // для преднастроенного режима с id = 2 код вида для второго фонда - следующий после того, который взят в настройках (введен в панели) // для всех остальных - то что взято из настроек/введено в панели if ( idSredn==2 ) return fond!=1?codNU:(codNU+1); return codNU; // вид в соответствии с настройками или то, что введен в панели перед расчетом } */ /* // Пример функции, которая окончательно причесывает "строчку" стажа попадающую в отчет // iDatBegStag - дата начала строки стажа в виде ГГГГММДД // iDatBegPer, iDatEndPer - даты начала и конца отчетного периода в виде ГГГГММДД UserPatchRowStag(iDatBegStag,iDatBegPer,iDatEndPer) { var dbeg = KDateFromIntDate(iDatBegStag); var trStag = CreateObject("TStag"); trStag.InitD(dbeg.ToString()); if ( trStag.GetStagS("’…ђ“‘‹")=="ЋЉ“" ) { trStag.SetStagS("’…ђ“‘‹",""); trStag.SetStagS("’…ђђЉ",""); trStag.SaveKch(dbeg.ToString()); } return 0; } */ /* // Пример функции, которая определяет для ЛС дату начала отпуска по БиР (по уходу) для отчета "ЕФС-1 СТАЖ. Назначение выплат по ОСС" // absM - абсолютный месяц, по который собираем отчет (с начала года) // pDate - объект KDate который надо заполнить датой начала отпуска // в результате вернуть строку в Win кодировке с типом отпуска - ДЕКРЕТ, ДЕТИ или ДЕТИПРЛ // если pDate не заполнен или в результате пустая строка - программа будет искать дату встроенным механизмом Efs1GetOssVacationDateAndTypeForCurrentLS(absM, pDate) { var ps = "usrKchFld"; //поле где хранится дата начала отпуса по БиР var kchDate = KDateFromInt_LastDay(absM); char buf[256]; GetKchValue(ps, buf, 255, kchDate); pDate.SetDate(buf); if (pDate.IsValid()) return "ДЕКРЕТ"; return ""; } */