Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Здравствуйте. Подскажите пожалуйста, на что надо ориентироваться для определения факта нахождения сотрудника в отпуске по уходу за ребенком до 3 лет на заданную дату?
В своем отчете для нахождения фактической штатной численности надо убрать находящихся в отпуске по уходу. Может быть 2 варианта состояния ставки при нахождении сотрудника в отпуске по уходу:
1. Ставка занимается на период отпуска по уходу полностью либо частично другим сотрудником (принятым на период Д/О или переведенным на этот период)
2. Ставка остается полностью вакантной.
Тогда для 1 варианта фактическая численность будет равная количеству ставок, которые заняты на период отпуска, а во 2 варианте будет равна 0.
С какой таблицей правильно работать при определении факта нахождения в Д/О или возможно есть готовый метод для использования?
В своем отчете для нахождения фактической штатной численности надо убрать находящихся в отпуске по уходу. Может быть 2 варианта состояния ставки при нахождении сотрудника в отпуске по уходу:
1. Ставка занимается на период отпуска по уходу полностью либо частично другим сотрудником (принятым на период Д/О или переведенным на этот период)
2. Ставка остается полностью вакантной.
Тогда для 1 варианта фактическая численность будет равная количеству ставок, которые заняты на период отпуска, а во 2 варианте будет равна 0.
С какой таблицей правильно работать при определении факта нахождения в Д/О или возможно есть готовый метод для использования?
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Можно попробовать функции табеля использовать (wt*):
Потом смотреть, что сидит в oboz.
Код: Выделить всё
if LoadWorkingTable(ls, mm, yy) = 0 then
{
if WT_LoadMonthlyAbsences = 0 then
{
for(i:=0; i<WT_GetMonthlyAbsenceCount; i:=i+1)
{
if (WT_AbsenceMappedOn(atMonthly, i, Date(dd, mm, yy)))
{
WT_GetMonthlyAbsenceAttribute(i, aaCode, oboz);
...
Последний раз редактировалось RAJAH 24 ноя 2017, 16:42, всего редактировалось 1 раз.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Ну если так, то можно и вообще по Lstab идти.
Вообще быстрее будет по otpusk пройти - при отзыве он вроде как подрезается в отличии от Vacations.
Можно и табельными функциями - но это будет дольше. Лучше наверное по другому набору - там где отклонения - смотрите wt.chm.
Вообще быстрее будет по otpusk пройти - при отзыве он вроде как подрезается в отличии от Vacations.
Можно и табельными функциями - но это будет дольше. Лучше наверное по другому набору - там где отклонения - смотрите wt.chm.
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
C_ExtFun.chm.edward_K писал(а):смотрите wt.chm
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
wt2.chm - он поинтересней будет. Должен быть в стандартной документации галактики на московском фтп. Не могу сейчас точно путь посмотреть.
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Здравствуйте. Большое спасибо за рекомендации. Вчера тоже раздумывала или связываться с табельными ф-циями (смотреть неявки) или просматривать отпуска. Решила пройти по Vacations, правда не оказалось нужного индекса (((, но нашла всех декретников, том более, что мне они нужны были на дату, а не в периоде. А сегодня после Ваших рекомендаций засомневалась: ту ли таблицу использовала и будет ли все правильно при наличии отзыва. На тестовой базе ввела РПД=14 «Досрочное завершение отпуска по уходу за ребенком» (не РПД=40 «Отзыв из отпуска»). После утверждения приказа дата окончания отпуска изменилась в Vacations, Factotpusk, Otpusk. И все-таки решила переделать на работу с Otpusk, тем более, что оказался нужный индекс))). Вроде все получилось нормально.
P.S. Ранее уже сталкивалась с декретниками в своих отчетах. Но на момент написания отчетов уход в такой отпуск в Галактике отражался по-другому: при утверждении приказа с освобождением ставки в 6 разделе картотеки заполнялась дата ухода с должности, т. е. получалось, что в 1 разделе дата увольнения пустая, а в 6 разделе нет назначения с пустой датой ухода. Но в какой-то момент (где-то после 2015 г.) разработчики изменили функционал, и дата ухода в 6 разделе перестала заполняться. И в моих отчетах уже неправильно стал определяться факт нахождения в Д/О.
И еще. Когда не так давно появилось РПД=14«Досрочное завершение отпуска по уходу за ребенком» и позже РПД=92 «Отражение работы во время отпуска по уходу за ребенком», у меня отложилось, что появилась возможность находиться в Д/О и работать. Фактически такие случаи бывали, но мы всегда делали отзыв, чтобы была возможность показать в табеле, что сотрудник работает. Не знаю нюансов использования РПД=92, возможно не многие им пользуются, но подозреваю, что если использовать его и не будет отзыва из отпуска по уходу, то возможно будет правильно работать именно с табельными ф-циями. Но решила не заморачиваться и надеюсь, что у нас и далее будут работать с РПД=14, а не с РПД=92.
P.S. Ранее уже сталкивалась с декретниками в своих отчетах. Но на момент написания отчетов уход в такой отпуск в Галактике отражался по-другому: при утверждении приказа с освобождением ставки в 6 разделе картотеки заполнялась дата ухода с должности, т. е. получалось, что в 1 разделе дата увольнения пустая, а в 6 разделе нет назначения с пустой датой ухода. Но в какой-то момент (где-то после 2015 г.) разработчики изменили функционал, и дата ухода в 6 разделе перестала заполняться. И в моих отчетах уже неправильно стал определяться факт нахождения в Д/О.
И еще. Когда не так давно появилось РПД=14«Досрочное завершение отпуска по уходу за ребенком» и позже РПД=92 «Отражение работы во время отпуска по уходу за ребенком», у меня отложилось, что появилась возможность находиться в Д/О и работать. Фактически такие случаи бывали, но мы всегда делали отзыв, чтобы была возможность показать в табеле, что сотрудник работает. Не знаю нюансов использования РПД=92, возможно не многие им пользуются, но подозреваю, что если использовать его и не будет отзыва из отпуска по уходу, то возможно будет правильно работать именно с табельными ф-циями. Но решила не заморачиваться и надеюсь, что у нас и далее будут работать с РПД=14, а не с РПД=92.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Мне еще тут подсказали, что в объекте StaffStuct есть функция GetLongVacationByDate - если человек в долгосрочном отпуске то наверное эта функция вернет вам то, что нужно.
Еще там есть возможность сразу получить количество занятых ставок, вызывав GetRateOnDate.
ищите Z_StaffSHR->StaffStruct.vih в Frm
Еще там есть возможность сразу получить количество занятых ставок, вызывав GetRateOnDate.
ищите Z_StaffSHR->StaffStruct.vih в Frm
-
- Местный житель
- Сообщения: 555
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Я вчера смотрела StaffStruct.vih. Но решила, что мне не подходит.
#doc
Количество занятых ставок на дату
#end
function GetRateOnDate(NrecStaff: comp; d: date): double;
Эта ф-ция не подходит, т. к. мне надо занятых ставок по л/сч (или по назначению), а не по рабочему месту в ШР.
#doc
Функция возвращает ссылку на первый найденный долгосрочный отпуск (<code>Vacations.NRec</code>) отпуск для
назначения <code>_cApp</code> (ссылка на <code>Appointments.NRec</code>) на дату <code>_dCheck</code>.
#end
public function GetLongVacationByDate(_cApp: comp; _dCheck: date): comp;
end;
По этой ф-ции не совсем уверена. Кстати из-за описания к ней вчера начала работать с Vacations, а не с Otpusk. В ее описании смутила фраза, что «ссылка на первый найденный долгосрочный отпуск». Т.е. он может быть не один? Непонятно как отработает в случае, когда сотрудник уходит из декрета в декрет или есть отзыв, а потом опять отпуск по уходу. Хотя возможно то, что ф-ция вернет > comp(0) и скажет, что сотрудник находится в отпуске по уходу.
Еще раз спасибо за помощь.
#doc
Количество занятых ставок на дату
#end
function GetRateOnDate(NrecStaff: comp; d: date): double;
Эта ф-ция не подходит, т. к. мне надо занятых ставок по л/сч (или по назначению), а не по рабочему месту в ШР.
#doc
Функция возвращает ссылку на первый найденный долгосрочный отпуск (<code>Vacations.NRec</code>) отпуск для
назначения <code>_cApp</code> (ссылка на <code>Appointments.NRec</code>) на дату <code>_dCheck</code>.
#end
public function GetLongVacationByDate(_cApp: comp; _dCheck: date): comp;
end;
По этой ф-ции не совсем уверена. Кстати из-за описания к ней вчера начала работать с Vacations, а не с Otpusk. В ее описании смутила фраза, что «ссылка на первый найденный долгосрочный отпуск». Т.е. он может быть не один? Непонятно как отработает в случае, когда сотрудник уходит из декрета в декрет или есть отзыв, а потом опять отпуск по уходу. Хотя возможно то, что ф-ция вернет > comp(0) и скажет, что сотрудник находится в отпуске по уходу.
Еще раз спасибо за помощь.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Факт нахождения в отпуске по уходу за ребенком до 3 лет.
Код: Выделить всё
private function fnGetLongVac4CurrApp(_dCheck: date): comp;
{
result := 0;
_loop LongVacations where ((AppointCheck.Person == LongVacations.Person
and 2 == LongVacations.Status
and _dCheck >>= LongVacations.FactYearBeg
and _dCheck <<= LongVacations.FactYearEnd(noindex) ))
{
if AppointCheck.NRec = LongVacations.Appoint
result := fnCheckOtz4CurLongVac(_dCheck);
else
{ //иначе нужно анализировать, что назначение и что за отпуск
if getfirst LongVacAppoint where ((LongVacations.Appoint == LongVacAppoint.NRec)) = tsOk
{
if (AppointCheck.cAddNRec2 <> 0) and ((AppointCheck.lPrizn = 3) or (AppointCheck.lPrizn = 31))
{ //совмеСТИТЕЛЬСВО (с ЛС)
if LongVacAppoint.cAddNrec2 = AppointCheck.cAddNRec2
{ //отпуск по тому же ЛС
result := fnCheckOtz4CurLongVac(_dCheck);
}
}
else
{
if (LongVacAppoint.lPrizn = 0) or (LongVacAppoint.lPrizn = 100)
{ //отпуск по основному назначению
result := fnCheckOtz4CurLongVac(_dCheck);
}
}
}
}
if result <> 0
break; //есть отпуск без отзыва
}
}