Расчет отпуска из таблицы
Добрый день!
Написал ф-цию, которая позволяет производить расчет отпуска из таблицы по, ранее полученной информации
о датах начала и конца отпуска.
Ф-ция создана на основе двух систмных: SysIntegrProcessOneOtpusk и SrOtp.
Расчет полностью повторяет тот расчет, который запускается по Alt_F2.
Но есть одна особенность - в расчете из таблицы появляется сообщение:
В периоде отпуска
обнаружен период: ”прочие
исключаемые периоды”
с 15.05.2020 по
31.05.2020 — Основной отпуск
с 15.05.2020 по 31.05.2020 — прочие исключаемые периоды
Продолжить расчет отпуска?
Возможно это тот случай, который предсказал Damir 1 неделю назад
”И возможно будут подводные камни, которые понадобится дорабатывать разработчикам.”
Но если, несмотря на сообщение, продолжить то, расчет полностью совпадает с расчетом по Alt_F2,
включая заполнение табеля.
Ф-ция работает из USFUNCRW:
SrOtpTab(tab,Src,Beg,End)
{
int tn = atoi(tab);
char ls1[90]; lsname(Find_Full_TN(tn),ls1); FreeSpaceString(ls1,3,"");
lsread(ls1,0); // инициализация ТН
bool calcBySrc=false;
if (Str_Cmp(Src," "," ")!=0) calcBySrc=true; //указали источник
var BegKD=KDateFromStr(Beg);
var EndKD=KDateFromStr(End);
int tmpMrasch=mrasch;
for ( int m=BegKD.GetAbs(); m<=EndKD.GetAbs(); m++ )
{
if (mmtek+B2MES) continue;
s50(m);
int z1,z2;
s6400(BegKD.GetDouble(),EndKD.GetDouble(),z1,z2,data);
zamena_simv_v_tab("nrsw","О",calm,z1,z2,EOF,0);
s145(colc2,1); //сохранение табеля за месяц
}
s50(tmpMrasch);
//return 0;
int TypeOtp; TypeOtp = OTPUSK_OSN;
var BegD=KDateFromStr(Beg);
var EndD=KDateFromStr(End);
int monthSr=0; // месяц для расчета среднего
var Sredn = CreateObject("KCalcSredn"); //класс для расчета среднего
//Sredn.InitOtp(DateBeg,0); // Инициализация способа расчета "по-среднему"
Sredn.InitOtp2(BegD,EndD,TypeOtp,monthSr,0);
var Nastr = Sredn.GetNastr();
string OTPUSK_CNF_TABLE = "отпуск";
int flag_rvmes=GetCommonCnfInt("FLAG_RVMES",OTPUSK_CNF_TABLE);
int tip_koef =GetCommonCnfInt("TIP_KOEF",OTPUSK_CNF_TABLE);
Nastr.SetNastr(FLAG_RVMES,flag_rvmes);
Nastr.SetNastr(TIP_KOEF,tip_koef);
Nastr.SetNastr(FLAG_SILENT,1);
Sredn.Calculate(1,2);
if (!calcBySrc)
return Sredn.SumSredn();
else
{
var Prop = CreateObject("APropBE"); Prop.InitSrc(ExtSrcToInt(Src[0]));
return Sredn.SumSrednAProp(Prop);
}
}
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день.
Отключить сообщение можно через настройку
Настройка -> 4. Настройки параметров расчета -> 3. Настройка расчета отпуска -> Проверка периода отпуска
Спасибо.