Актуальная запись в HISTORYSTR

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

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

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

Актуальная запись в HISTORYSTR

Сообщение niteo »

Всем добрый день, есть запись в таблице staffstruct и к ней несколько записей в таблице historystr.
Вопрос, как найти актуальную запись (последнюю действительную) в табличке historystr
Если просто брать getlast из historystr, то в некоторых случаях (еще не выяснил почему так получается), запись, допустим, о создании должности стоит после какой либо записи о изменении оклада. Получается, если необходимо выбрать актуальные данные, вызов функции getlast даст запись со старыми данными.
Если сортировать historystr по dHist, то опять, не все ясно. Это поле содержит только дату, есть случаи когда несколько приказов по должности проходили в один день. Если в historystr сортировать по atl_lastdate то мне не совсем очевидно, на сколько уверенно можно опираться на эту дату.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Актуальная запись в HISTORYSTR

Сообщение RAJAH »

Может, лучше данные из APPOINTMENTS брать?
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Re: Актуальная запись в HISTORYSTR

Сообщение niteo »

RAJAH писал(а):Может, лучше данные из APPOINTMENTS брать?
Нет, мне необходимо формировать отчет именно по штатному расписанию.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Актуальная запись в HISTORYSTR

Сообщение m0p3e »

Ищется как

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

GetLast HistoryStr 
Where (( StaffStruct.Nrec == HistoryStrDate.StaffStr and
     and HistDate          >>= HistoryStrDate.dHist 
      ))
Но если две записи в один день, то беда. Стараемся таких вещей не допускать.
В начале года вышел под это дело соответствующий патч, но я его не ставил и по какому полю оно работает подсказать не могу.

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

STAFF_P_122 (Z_STAFF_RES_8101550, Z_STAFFCAT_RES_810840, Z_STAFFIERREP_RES_810130, Z_STAFFNASTR_RES_810350, Z_STAFFORDERS_RES_810300, Z_STAFFRECRUITING_RES_810210, Z_STAFFSHR_RES_810170, Z_STATIS_RES_810740):
• В историю ставок "Штатного расписания" добавлено поле "№ пп" с порядковым номером записи. Оно недоступно для изменений, при этом предусмотрена возможность перемещать записи вверх/вниз по порядковым номерам в пределах одной даты с помощью соответствующих пунктов локального меню: "Переместить вверх в пределах даты", "Переместить вниз в пределах даты". Перемещение записи создания ставки вниз и записи о ликвидации ставки вверх невозможны. При смене местами последней и предпоследней записей выдается предупреждение о последующем изменении параметров ставки, при утвердительном ответе — корректируется ставка согласно последней записи истории. При ручном добавлении в историю новой записи (F7) в ней проставляется следующий порядковый номер. При удалении не последней записи (F8) для всех последующих записей истории порядковые номера уменьшаются на единицу. При оформлении приказов по РПД с кодами 20…23 порядковый номер для записи проставляется следующим образом: последний порядковый номер в истории на дату изменений + 1; все последующие записи истории корректируются (порядковые номера увеличиваются на единицу). При утверждении приказа РПД-22 осуществляется проверка на наличие даты изменений в приказе, если она пустая — приказ не утверждается, соответствующее предупреждение выдается в протокол. При удалении утвержденного приказа (с кодами 20…23) производится корректировка порядковых номеров записей, располагающихся за удаляемой. Разработана также конвертация истории ставок ШР, при которой будут проставлены порядковые номера в порядке сортировки по датам.
niteo
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 17 сен 2009, 11:39
Контактная информация:

Re: Актуальная запись в HISTORYSTR

Сообщение niteo »

m0p3e писал(а):В начале года вышел под это дело соответствующий патч, но я его не ставил и по какому полю оно работает подсказать не могу.
Огромное СПАСИБО!!! Поле называется wfld
Ответить