Количество рабочих часов в смесяц
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Количество рабочих часов в смесяц
Будьте добры, подскажите, кто знает быстрое решение. Надо в випе получить значение "число рабочих часов в месяц". Ну есть , например, январь. По закону определили выходные и праздники. Надо все рабочие часы (с учетом сокращения на 1 час перед праздниками, без праздников и выходных) получить. Как быстрее всего?
Еще раз : получить число рабочих часов в любом месяце (с учетом праздничных и выходных) в випе.
Еще раз : получить число рабочих часов в любом месяце (с учетом праздничных и выходных) в випе.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
1.В клас.видов оплат на алгоритме - F3 - F4 - F3
там есть функция wt_ghbd и расписаны ее параметры
2.чтобы ее использовать нужно перед вызовом сделать
InitWorkingTable ;
.....
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
после
DoneWorkingTable ;
вообще функций хватает - но вот документация есть только на упомянутую - в силу объявления ее для общего использования.
там есть функция wt_ghbd и расписаны ее параметры
2.чтобы ее использовать нужно перед вызовом сделать
InitWorkingTable ;
.....
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
после
DoneWorkingTable ;
вообще функций хватает - но вот документация есть только на упомянутую - в силу объявления ее для общего использования.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
а вобще , если нужны плановые часы, берете таблу klndr и считаете в ней часики. С табелем могет быть чуть сложнее - но тоже решаемо.
Но если хотите тождествености с печатью табеля, то лучше использовать упомянутое. К слову при печати самого табеля сие использовать незя - поскоку результат будет не предсказуем. Как вариант можно в форме накопить данные по людям во времянку и потом в отдельном цикле подтянуть недостающие данные.
Но если хотите тождествености с печатью табеля, то лучше использовать упомянутое. К слову при печати самого табеля сие использовать незя - поскоку результат будет не предсказуем. Как вариант можно в форме накопить данные по людям во времянку и потом в отдельном цикле подтянуть недостающие данные.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
можно на тех же условиях.
1. форма никак не связана с табелем
2. InitWorkingTable ;
.....
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
присутствует
3. параметры вы правильно написали.
вообще зайдите в редактирование табеля и попробуйте ее вычислить по ctrl+F4 - там условие 2 уже выполнено.
WT_GetDaysBwDays(2,1,1,31) - факт отработанно
WT_GetDaysBwDays(2,0,1,31) - план
также и
WT_GetDaysBwDates(2,0,date(1,3,2006),date(31,5,2006))
1. форма никак не связана с табелем
2. InitWorkingTable ;
.....
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
присутствует
3. параметры вы правильно написали.
вообще зайдите в редактирование табеля и попробуйте ее вычислить по ctrl+F4 - там условие 2 уже выполнено.
WT_GetDaysBwDays(2,1,1,31) - факт отработанно
WT_GetDaysBwDays(2,0,1,31) - план
также и
WT_GetDaysBwDates(2,0,date(1,3,2006),date(31,5,2006))
-
- Местный житель
- Сообщения: 589
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Воронеж ОАО Верофарм. Воронеж
Насчет klndr - не получится, там рабочие и выходные согласно графика!!! т.е. у нас работают не совсем (совсем не) по календарю, в выходные могут работать и наоборот. А мне надо именно по законному календарю, т.е. пятидневка , суб и вс - выходные + Гос. праздники с учетом сокращения на час перед праздником.
А упомянутые ф-ии работают в випе? НЕ в присоединенной, не в Арде, а именно в випе.
А упомянутые ф-ии работают в випе? НЕ в присоединенной, не в Арде, а именно в випе.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
везде они работают, сию конкретную не пробовал правда
- extfun.res тока не забудьте подцепить.
по поводу табеля, если есть данные о отработанном времени, длительности отпусков или неявок, то наиболее вероятно что сии функции там задействованы. Для начала попробуйте на простой АРД по челу вытащить данные. Не поможет - откройте фейс лицевые счета и снова попробуйте. Если да, то добавте еще IntInit, а на выходе exitproc.
- extfun.res тока не забудьте подцепить.
по поводу табеля, если есть данные о отработанном времени, длительности отпусков или неявок, то наиболее вероятно что сии функции там задействованы. Для начала попробуйте на простой АРД по челу вытащить данные. Не поможет - откройте фейс лицевые счета и снова попробуйте. Если да, то добавте еще IntInit, а на выходе exitproc.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
есть еще
function CalcDaysBetweenDates (aDateFrom,
aDateTo : date;
aMinusNonWorkDays : Boolean
) : integer;
Параметры
aDateFrom : date - нижняя граница диапазона дат.
aDateTo : date - верхняя граница диапазона дат.
aMinusNonWorkDays : boolean - признак, исключающий из диапазона дат нерабочие дни (true - исключать, false - не исключать).
- насчет праздников тока не уверен, выкинет или нет.
function CalcDaysBetweenDates (aDateFrom,
aDateTo : date;
aMinusNonWorkDays : Boolean
) : integer;
Параметры
aDateFrom : date - нижняя граница диапазона дат.
aDateTo : date - верхняя граница диапазона дат.
aMinusNonWorkDays : boolean - признак, исключающий из диапазона дат нерабочие дни (true - исключать, false - не исключать).
- насчет праздников тока не уверен, выкинет или нет.
Пробовал так:
Выдает нули.... что делать? ОЧЕНЬ нужны эти дни!
ПОМОГИТЕ!
Код: Выделить всё
.begin
KolWorkDaysPlan := 0;
KolWorkDaysFact := 0;
dkWorking := word(2);
//количество дней, которые сотрудник должен отработать(план)
IntInit;
InitWorkingTable;
KolWorkDaysPlan:= WT_GetDaysBwDates(2, 0, Date(1,1,2006), Date(1,6,2006));
//количество дней, которые сотрудник отработал фактически
KolWorkDaysFact:= WT_GetDaysBwDates(2, 1, Date(1,1,2006), Date(1,6,2006));
DoneWorkingTable;
exitproc;
message('Plan='+String(KolWorkDaysPlan)+'; Fact='+String(KolWorkDaysFact));
end.
ПОМОГИТЕ!