Страница 1 из 1
Количество неявок за месяц.
Добавлено: 09 мар 2010, 16:47
niteo
Всем привет. Необходимо найти все неявки за месяц. Что бы на конкретный день было известно, что за неявка.
Пробывал делать так:
Код: Выделить всё
if WT_LoadMonthlyAbsences = 0
{
for(j := 0; j < WT_GetAbsenceCount(atMonthly); Inc(j))
{
WT_GetAbsenceAttribute(atMonthly, j, aaNotation, Notation);
}
}
То есть все неявки за месяц.
Но почему то она как то странно работает, выдавая мне только 4 неявки, хотя человек отсутствовал почти весь месяц.
Есть подозрение что она выдает только количество отличных друг от друга неявок, ассортимент.
Добавлено: 09 мар 2010, 16:52
edward_K
ага - то что в табеле на закладке "неявки" нарисовано. Дальше вам нужно еще 2-3 функции чтобы определить период(а потом дни часы по графику например) или сразу дни и часы(что может не совпасть с графиком). В опыте Screw ложил доку по этим функциям.
Добавлено: 09 мар 2010, 17:09
niteo
Но мне надо пройтись по каждому дню и выявить его признак, то есть стоит там 8 или же аббревиатура из классификатора типовых условных обозначений отклонений. И что за отклонение на конкретный день то же необходимо знать.
В опыте Screw ложил доку по этим функциям.
Там я только нашел подсчет часов.
Добавлено: 09 мар 2010, 17:18
Screw
Есть т.н. карта распределения неявок (не путать с картой распределения неявки) - она Вам и понадобится. По дням ходить не нужно - ходите по карте. См. методы вида WT_AbsencesMapXXXX.
Добавлено: 09 мар 2010, 18:06
niteo
Делаю так:
Код: Выделить всё
WT_GetAbsenceAttribute(atMonthly, WT_AbsencesMapAbsenceAt(atMonthly, WT_AbsencesMapLastOn(atMonthly, ds)), aaNotation, Notation)
ds - дата на которую смотрю отклонения.
На выходе вместо ОТ получаю В. И такое ощущение что она на
план завязана. А мне желательно что бы она не опиралась ни на что, то есть стоит если в табеле В или ОТ то она и выдавала В или ОТ, независимо от плана.
Добавлено: 09 мар 2010, 18:08
edward_K
заведите массив, залейте его по табелю (lstab.days) и все.
для надежности - если табель вдруг не переформировали - можете сверху пройтись по неявкам и по их периоду исправить этот массив.
Добавлено: 10 мар 2010, 14:32
Screw
edward_K писал(а):заведите массив, залейте его по табелю (lstab.days) и все.
для надежности - если табель вдруг не переформировали - можете сверху пройтись по неявкам и по их периоду исправить этот массив.
Не лучший способ, т.к. в lstab.days отражаются только неявки, целиком занявшие остаток рабочего времени. То есть, выяснить, какие еще неявки (нецелодневные) пришлись на этот день, не получится.
niteo писал(а):Делаю так:
Код: Выделить всё
WT_GetAbsenceAttribute(atMonthly, WT_AbsencesMapAbsenceAt(atMonthly, WT_AbsencesMapLastOn(atMonthly, ds)), aaNotation, Notation)
ds - дата на которую смотрю отклонения.
На выходе вместо ОТ получаю В. И такое ощущение что она на план завязана. А мне желательно что бы она не опиралась ни на что, то есть стоит если в табеле В или ОТ то она и выдавала В или ОТ, независимо от плана.
Не советую делать вложенные вызовы функций, т.к. те из них, которые возвращают индекс элемента в некотором списке, могут вернуть -1 для индикации неуспешного результата. Для порядка стоит добавить проверки.
Списки неявок всегда отражают фактическое состояние табеля (с учетом наложенных фильтров, разумеется).
Кстати, в доке неточность: WT_AbsencesMapLastOn возвращает индекс элемента карты неявок, а не самой неявки.