Страница 1 из 1

Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 13:34
Irina_
Здравствуйте.
Нужна консультация по следующему вопросу. В Управлении персоналом у многих сотрудников (основных и совместителей), применяется сложный корректирующий коэф-т (СКК) при формировании оклада/ тарифа. Причем СКК может состоять из 1 или более видов коэффициентов.
В AppFuncs.vih и Func_AppHist.vih нашла ф-ции GetCorrectKoffAppHist(AppNrec: comp; funcDate:date):double и AH_GetKorKoffOnDate(cCurAppoint: comp; dViewDate:date):double соответственно, которые возвращают СКК на указанную дату. Но не смогла найти как определить значение не всего СКК, а только какой-то одной его составляющей, например коэффициент по контракту, по заданному назначению на указанную дату. Может кто-то уже сталкивался с таким?
По журналу засветилась таблица InfPsn1, в которой сохраняются коэф-ты. Если я правильно поняла, то
Cpers – это Lschet.nrec для первых записей в таблице InfPsn1 по лицевому счету , а для последующих это Appointments.nrec.
Cref – ссылка на вид коэф-та, = Catalogs.nrec
Sum1 - значение позиции составляющего коэф-та
Интересно, ссылка на что сохраняется в InfPsn1.Cref2 ?
Бывают случаи, когда по одному назначению сотрудника в истории назначения лежат записи, для которых состав и значения коэффициентов одни, а для других записей другие. Т.е. мне надо определить значение указанного вида коэф-та по указанному назначению на указанную дату, с учетом того, что по назначению в истории может меняться состав и значения составляющих коэффициентов.

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 14:19
Den
может то что нужно в CorrKoefFunctions

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 14:33
Irina_
CorrKoefFunctions.vih я смотрела вчера, но не нашла там нужного. Возможно описания функций никакие, в том числе описание параметров, поэтому не понятно, можно ли использовать эти функции для моей цели.

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 14:46
Den
я сам не пробовал, но что то вроде :

по челу ищем Appointments
по нему appHist на нужную дату
а по нему коэффициент (cpar -в данном случае apphist.nrec)

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

public function GetCorrKoefDet(cPar: comp; nGr: word; nPos: word; choose: word): double;
{ // Функция возвращает коэффициент с порядковым номером N
  GetCorrKoefDet := 1.0;
  if (GetFirst InfPsn1 where ((
        cPar == InfPsn1.cPers and
        choose == InfPsn1.cRef2 and
        nGr == InfPsn1.FilialNo and
        string(nPos) == InfPsn1.str1(NoIndex)
      )) = tsOk)
  {
    GetCorrKoefDet := InfPsn1.sum1;
  }
}
//------------------------------------------------------------------------------
// Choose для сложного корректирующего коэффициента
//------------------------------------------------------------------------------
// штатное расписание
skkSts = 0;
// история штатного расписания
skkHistSts = 1;
// приказы
skkPrik = 2;
// картотека
skkKart = 3;
// рабочая корзина
skkBasket = 4;
// лицевой счет
skkLchet = 5;
skkLschet = 5;
// переходы в межпериод
skkPerexod = 6;
// назначение
skkApp = 7;
// история назначений
skkAppHist = 8;
// история увольнений
skkDismissHist = 9;
// табель
skkLstab = 10;

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 16:08
Irina_
Den, большое спасибо. Буду пробовать.
Какая-то странная таблица InfPsn1 и работа с нею. Попробовала сделать изменения по истории ставки в ШР и автоматом по сотруднику (по себе), но по журналу прошло много записей по удалению/ вставке / модификации этой таблицы. Не могла понять, почему много. После анализа пришла к выводу, что Cpers в записи реально может быть ссылкой на 3 разных источника – Lschet.Nrec, Appointments.Nrec, AppHist.Nrec. По журналу изменений нашла в InfPsn1записи по себе со ссылками на л/сч, назначение, историю моего назначения, но были еще непонятные записи, которые явно касались другого сотрудника. Я нашла его, давно уволен. Почему зацепился другой сотрудник, который никогда не занимал ставку в ШР, которую занимаю я???
Например, при установке фильтра по Cpers=Appointments.Nrec (моего назначения) вместо 2 записей с нужным мне InfPsn1.Cpers я получила 4 записи, причем 2 оказались со ссылкой на мое назначение, а 2 другие со ссылкой на историю назначения постороннего сотрудника!!!
Как-то сразу у меня и был вопрос по поводу Cref2. Как посмотрела Ваш ответ, дошло, что это признак источника. Никогда бы не додумалась.Но все равно непонятно, почему по журналу у меня затронулся посторонний сотрудник. Может недоработка разработчиков?

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 18:06
Irina_
Сделала
#include Func_AppHist.vih
#include CorrKoef.vih
Var var2 : Func_AppHist;
var3 : CorrKoefFunctions;
NrecHist_: Comp;
Kcont : Double;
...
NrecHist_:= var2.AH_GetAppHistNrecOnDate( AppOnDate, Dat1);
// коэф-т по контракту, для истории назначения
// 3 – номер группы коэф-в, в которую входит коэф-т по контракту, 11 – код коэф-та по контракту
Kcont:= var3.GetCorrKoefDet( NrecHist_, 3, 11, 8 );

При компиляции ошибка: «Ожидалось поле структурного или ссылочного типа» на последней строке. В чем проблема?

Re: Составляющие СКК по назначению на дату

Добавлено: 12 фев 2015, 18:58
Irina_
Нашла причину ошибки: в папке \SRC\ лежал очень старый CorrKoef.vih. Подложила последний.

Re: Составляющие СКК по назначению на дату

Добавлено: 13 фев 2015, 16:52
Irina_
Все получилось. Кроме того вывела дополнительно значение СКК. По отдельным сотрудникам обнаружены проблемы:
1. СКК < коэф.по контракту. Т.е. если смотреть в истории назначения составляющие СКК и их значения, то все нормально, однако сам СКК стоит неправильный.
2. До определенного момента СКК в записях истории назначения правильный, а потом почему-то сбрасывается или принимает значение, которое было в каких-то записях истории выше.
А все это может быть причиной неправильного оклада/ тарифа, что может привести к ошибкам расчета з/п.
Т.о. не все так гладко с корректирующими коэф-ми.

Еще раз спасибо за помощь.