Страница 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 возвращает индекс элемента карты неявок, а не самой неявки.