Количество неявок за месяц.

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

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

Ответить
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Количество неявок за месяц.

Сообщение niteo »

Всем привет. Необходимо найти все неявки за месяц. Что бы на конкретный день было известно, что за неявка.
Пробывал делать так:

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

if WT_LoadMonthlyAbsences = 0
{
    for(j := 0; j < WT_GetAbsenceCount(atMonthly); Inc(j))
    {
        WT_GetAbsenceAttribute(atMonthly, j, aaNotation, Notation);
    }
}
То есть все неявки за месяц.
Но почему то она как то странно работает, выдавая мне только 4 неявки, хотя человек отсутствовал почти весь месяц.
Есть подозрение что она выдает только количество отличных друг от друга неявок, ассортимент.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

ага - то что в табеле на закладке "неявки" нарисовано. Дальше вам нужно еще 2-3 функции чтобы определить период(а потом дни часы по графику например) или сразу дни и часы(что может не совпасть с графиком). В опыте Screw ложил доку по этим функциям.
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Но мне надо пройтись по каждому дню и выявить его признак, то есть стоит там 8 или же аббревиатура из классификатора типовых условных обозначений отклонений. И что за отклонение на конкретный день то же необходимо знать.
В опыте Screw ложил доку по этим функциям.
Там я только нашел подсчет часов.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Есть т.н. карта распределения неявок (не путать с картой распределения неявки) - она Вам и понадобится. По дням ходить не нужно - ходите по карте. См. методы вида WT_AbsencesMapXXXX.
Виталий
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Сообщение niteo »

Делаю так:

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

WT_GetAbsenceAttribute(atMonthly, WT_AbsencesMapAbsenceAt(atMonthly, WT_AbsencesMapLastOn(atMonthly, ds)), aaNotation, Notation)
ds - дата на которую смотрю отклонения.
На выходе вместо ОТ получаю В. И такое ощущение что она на план завязана. А мне желательно что бы она не опиралась ни на что, то есть стоит если в табеле В или ОТ то она и выдавала В или ОТ, независимо от плана.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

заведите массив, залейте его по табелю (lstab.days) и все.
для надежности - если табель вдруг не переформировали - можете сверху пройтись по неявкам и по их периоду исправить этот массив.
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

edward_K писал(а):заведите массив, залейте его по табелю (lstab.days) и все.
для надежности - если табель вдруг не переформировали - можете сверху пройтись по неявкам и по их периоду исправить этот массив.
Не лучший способ, т.к. в lstab.days отражаются только неявки, целиком занявшие остаток рабочего времени. То есть, выяснить, какие еще неявки (нецелодневные) пришлись на этот день, не получится.
niteo писал(а):Делаю так:

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

WT_GetAbsenceAttribute(atMonthly, WT_AbsencesMapAbsenceAt(atMonthly, WT_AbsencesMapLastOn(atMonthly, ds)), aaNotation, Notation)
ds - дата на которую смотрю отклонения.
На выходе вместо ОТ получаю В. И такое ощущение что она на план завязана. А мне желательно что бы она не опиралась ни на что, то есть стоит если в табеле В или ОТ то она и выдавала В или ОТ, независимо от плана.
Не советую делать вложенные вызовы функций, т.к. те из них, которые возвращают индекс элемента в некотором списке, могут вернуть -1 для индикации неуспешного результата. Для порядка стоит добавить проверки.

Списки неявок всегда отражают фактическое состояние табеля (с учетом наложенных фильтров, разумеется).

Кстати, в доке неточность: WT_AbsencesMapLastOn возвращает индекс элемента карты неявок, а не самой неявки.
Виталий
Ответить