В чем может быть проблема?
Часть сотрудников, уволенных приказами попадают в отчеты по кадрам.
Например, Штатная расстановка с выводом на текущую дату выходит правильно, с выводом на вчерашний день на 50 человек больше.
Связи не прослеживается, часть уволенных не попадает, часть попадает.
Что проверять?
СП18
В ходе следственных экспериментов вышел на проблему с приказом увольнения.
Человек уволен в июне 2008 года в групповом приказе.
Если я отзову приказ из зарплаты, уберу этого человека в новый приказ (груп или инд.) то этот человек больше не появляется в кадровых отчетах на дату.
Если возвращаю обратно, то вновь этот человек появляется в отчетах.
Но, "соседи" по приказу в отчете не появляются.
Что за барабашки? Где смотреть?
Тоже склоняюсь к такому решению, пока сравнил cardspri и ordmove при разных условиях - одинаковые.
База большая, отдельные каталоги и файлы могут помочь?
Попадают помимо уволенных еще и переведенные из подразделения в подразделение.
То есть один человек в двух подразделениях.
Добрый день!
По поводу переводов SP19 было исправление. В записи на начало работы и в записи на увольнение была одна и та же дата, а должна быть на день меньше, т.е. например, перевести с 20 означает приступить к работе в новом подразделении с 20, а прекратить работу в старом подразделении с 19. А проявляется это именно так, как написано.
Да, по переводам исправили. Теперь по проблеме с уволенными. База нормально развернулась. Нужна подробная пошаговая инструкция, по ситуации, в которой обнаружилась ошибка.
Добрый день!
Отчет с флажком "На текущую дату" формируется иначе, чем на заданную дату. В одном случае это просто отчет по картотеке, в другом, - анализ приказов по движению. В БД (таблица ORDMOVE) обнаружены записи по уволенным сотрудникам, для которых не заполнено поле ENDF, а именно по этому полю считаются уволенные. Отсюда и возникли расхождения. Причина, по которой появились эти записи пока назвать трудно, на демо-базах не проявляется.
Да. Например, в пользовательской базе есть сотрудник Гнатюк - таб.номер 083960), у которого есть приказ на прием и есть приказ на увольнение, но в приказе на прием (ORDMOVE.DBF) не заполнено поле DATEENDF, которое должно заполняться при увольнениии сотрудника
PS
В предыдущем сообщении имелось ввиду поле DATEENDF.
Раскрыл сегодня вчерашний архив, все нормально.
Сверил до обеда на рабочей, все совпадает.
Сейчас открываю, уже пошел разнобой.
Сравниваю базы, сегодня создавали приказы, исполняли. Но те сотрудники, что числятся в них - сохранились нормально. Выходит, что обнулились даты у тех, кто до этого был сохранен нормально, и руками не правился?
Может скинуть каталоги по кадрам до и после?
P.S.
Есть закономерность. У всех записей, у которых обнулилась дата обновилось значение ordno в последней записи.
Проблема исчезла после приведения реестра приказов в порядок, а именно приведении статусов всех приказов в "исполнен" либо "передан в зарплату". Как оказалось, был приказ на перевод со статусом "проект", в последующих периодах эти же люди попадали в другие приказы но исполненные, отсюда и путаница в работе алгоритма, я так думаю.
Подозрительные табельные искал кодом:
Код
usr_datacheck()
Function usr_datacheck()
Local uncount,uncurent:=0,untempcount,untempcount2
NetUse("u_ordmove",B6_DBF_PATH+"kadry\ordmove.dbf") //открыли строки приказов
ordsetfocus("TAG_STAFF")// ставим индекс по коду
NetUse("u_cardspri",B6_DBF_PATH+"kadry\cardspri.dbf")//открываем картотеку
ordsetfocus("TAG_TNUM")// ставим индекс по табельным
Count To uncount
Go top
Set Relation To id_card into u_ordmove
PROGRESSINIT(uncount,"Идет перебор картотеки..")
Do While (u_cardspri->(!EoF()))
uncurent:=uncurent+1
PROGRESSUPDATE(uncurent)
Select u_ordmove
Count To untempcount For u_ordmove->id_staff=u_cardspri->id_card
Count To untempcount2 For (u_ordmove->id_staff=u_cardspri->id_card .And. u_ordmove->dateendf=CtoD(''))
If untempcount2>1 // то либо сбой, либо сотрудник в приказе со статусом проект
If MESSAGEBOX(u_cardspri->tnum+" - "+Str(untempcount)+" , "+Str(untempcount2)+Chr(13)+Chr(10)+"Продолжить далее?","Сообщение...",48+4)=7
Exit
EndIf
EndIf
Select u_cardspri
u_cardspri->(DbSkip())
EndDo
PROGRESSHIDE()
u_cardspri->(DbCloseArea())
u_ordmove->(DbCloseArea())
Return
Сбойные записи редактировал с помощью DidView, установив связь как и в коде.
Отчеты теперь выходят одинаковые, на текущую дату.