Количество рабочих часов в смесяц

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Количество рабочих часов в смесяц

Сообщение savov »

Будьте добры, подскажите, кто знает быстрое решение. Надо в випе получить значение "число рабочих часов в месяц". Ну есть , например, январь. По закону определили выходные и праздники. Надо все рабочие часы (с учетом сокращения на 1 час перед праздниками, без праздников и выходных) получить. Как быстрее всего?
Еще раз : получить число рабочих часов в любом месяце (с учетом праздничных и выходных) в випе.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1.В клас.видов оплат на алгоритме - F3 - F4 - F3
там есть функция wt_ghbd и расписаны ее параметры
2.чтобы ее использовать нужно перед вызовом сделать
InitWorkingTable ;
.....
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
после
DoneWorkingTable ;
вообще функций хватает - но вот документация есть только на упомянутую - в силу объявления ее для общего использования.
Riman
Сообщения: 7
Зарегистрирован: 20 июл 2005, 12:45
Контактная информация:

Сообщение Riman »

Присоединяюсь, плюс хотелось бы плановые и фактические дни по работникам вытащить. Очень надо!!!!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а вобще , если нужны плановые часы, берете таблу klndr и считаете в ней часики. С табелем могет быть чуть сложнее - но тоже решаемо.
Но если хотите тождествености с печатью табеля, то лучше использовать упомянутое. К слову при печати самого табеля сие использовать незя - поскоку результат будет не предсказуем. Как вариант можно в форме накопить данные по людям во времянку и потом в отдельном цикле подтянуть недостающие данные.
Riman
Сообщения: 7
Зарегистрирован: 20 июл 2005, 12:45
Контактная информация:

Сообщение Riman »

а функцией типа WT_GetDaysBwDates(?, ?, Date(01,01,2006), Date(01,06,2006)) возможно в lnk-форме воспользоваться? у меня не получается... :-(
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

можно на тех же условиях.
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))
Riman
Сообщения: 7
Зарегистрирован: 20 июл 2005, 12:45
Контактная информация:

Сообщение Riman »

WT_GetDaysBwDates в табеле работает.
в отчете (Заработная плата - Отчеты - Дополнительная информация - Справка о начислениях за год) нет. Как узнать, эта форма связана с табелем или нет?
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Сообщение savov »

Насчет klndr - не получится, там рабочие и выходные согласно графика!!! т.е. у нас работают не совсем (совсем не) по календарю, в выходные могут работать и наоборот. А мне надо именно по законному календарю, т.е. пятидневка , суб и вс - выходные + Гос. праздники с учетом сокращения на час перед праздником.
А упомянутые ф-ии работают в випе? НЕ в присоединенной, не в Арде, а именно в випе.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

везде они работают, сию конкретную не пробовал правда
- extfun.res тока не забудьте подцепить.
по поводу табеля, если есть данные о отработанном времени, длительности отпусков или неявок, то наиболее вероятно что сии функции там задействованы. Для начала попробуйте на простой АРД по челу вытащить данные. Не поможет - откройте фейс лицевые счета и снова попробуйте. Если да, то добавте еще IntInit, а на выходе exitproc.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а кто мешает вам посчитать дни и часы по 11 режиму в klndr, который должен точно соответсвовать законому?
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Сообщение savov »

Скорее всего придется считать именно по 11 режиму, т.к. ничего другое не подходит, ибо только 11 соответствует законному !
Я просто думал, что может есть что-то более изящное...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

есть еще
function CalcDaysBetweenDates (aDateFrom,
aDateTo : date;
aMinusNonWorkDays : Boolean
) : integer;
Параметры

aDateFrom : date - нижняя граница диапазона дат.

aDateTo : date - верхняя граница диапазона дат.

aMinusNonWorkDays : boolean - признак, исключающий из диапазона дат нерабочие дни (true - исключать, false - не исключать).

- насчет праздников тока не уверен, выкинет или нет.
Riman
Сообщения: 7
Зарегистрирован: 20 июл 2005, 12:45
Контактная информация:

Сообщение Riman »

Пробовал так:

Код: Выделить всё

.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.
Выдает нули.... что делать? ОЧЕНЬ нужны эти дни!
ПОМОГИТЕ!
Riman
Сообщения: 7
Зарегистрирован: 20 июл 2005, 12:45
Контактная информация:

Сообщение Riman »

Понял... Пропустил LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN);
где
vvv.LSTAB.CLSCHET = LSCHET.nrec,
а что означают vvv.LSTAB.MESN и vvv.LSTAB.YEARN ??
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

а кто будет делать
LoadWorkingTable(vvv.LSTAB.CLSCHET, vvv.LSTAB.MESN, vvv.LSTAB.YEARN); ?
Ответить