Задача 101.54155

Задача :101.54155

2015-05-25 15:49:26
Краткое описание :
Контроль режима работы на этапе создания приказа.
Описание :
Все РПД по персоналу
Что измененно :

Требуется возможность контроля режима работы на этапе создания приказов), такая чтобы система сравнивала выбранный режим с тем, который указан в модуле "Заработная плата" и выдавала предупреждение в случае расхождения.
Как измененно :

В приказы по персоналу с распорядительными действиями, изменяющими режим работы, добавлена проверка на соответствие указанного в них режима работы таковому в модуле "Заработная плата": РПД-3, РПД-4 (вариант оформления на тот же ЛС), РПД-5, РПД-50, РПД-62, РПД-65, РПД-70.

Если режимы работы на дату начала изменения (дата начала перевода, дата начала изменения оклада и т.п. в зависимости от РПД) отличается от режима, указанного в табеле, в протоколе, выводимом после утверждения приказа, появится сообщение следующего вида:

[!] Режим работы "6-ти дневная рабочая неделя" сотрудника Иванов А.С. (таб. н.
123) отличается от заданного на 01/01/2015 в модуле "Заработная плата"!

По умолчанию эта проверка отключена. Для ее включения необходимо подключить обработчик точки расширения epDontCheckDiffWT, возвращающий значение false. Пример обработчика точки расширения:

Const
#include CommonC.inc
end;

#include dictypes.def
#include Func_AppHist.vih

Handler with replace DontCheckDiffWTAfterConfirm on ExtensionPoint epDontCheckDiffWT
Action
{
result := false;
}


--------------------------------------

Во все РПД при проверке возможности утверждения приказа добавлен вызов точек расширения epRPD_CheckBefore(cContDoc: comp) и epRPD_CheckAfter(cContDoc: comp). Первая вызывается перед стандартной, реализованной в Галактике, проверкой возможности утверждения приказа, а вторая - после этой стандартной проверки. В качестве параметра в точку расширения передается значение ContDoc.NRec утверждаемой части приказа. Если обработчик точки расширения вернет false приказ не будет утвержден. Реализация обработчика может быть произвольной, не только проверка режима работы. Пример обработчика, сравнивающего режим работы в приказе и в лицевом счете:

#include RPD.vih

ObjInterface iRPD5_Check;
function doCheck(cContDoc: comp): boolean;
end;

VipInterface RPD5_Check
implements iRPD5_Check
licensed(free);

Interface RPD5_Check;
Create view as select *
from
ContDoc,
Appointments,
ContDoc ContDoc2,
AppHist NewAppHist,
KlRejim KlRejimLS,
KlRejim NewKlRejim;

function doCheck(cContDoc: comp): boolean;
{
result := true;

if (GetFirst ContDoc where (( cContDoc == ContDoc.NRec )) = tsOk)
if (ContDoc.TypeOper = 5) // Рассматриваем только РПД-5
if (GetFirst Persons where (( ContDoc.Person == Persons.Nrec )) = tsOk)
if (GetFirst ContDoc2 where (( ContDoc.cPart == ContDoc2.cPart and
ContDoc.TypeOper == ContDoc2.TypeOper and
ContDoc.Person == ContDoc2.Person and
Integer(1) << ContDoc2.SeqNmb and
ContDoc.wRec == ContDoc2.wRec(noIndex) )) = tsOk)
if (GetFirst NewAppHist where (( ContDoc2.Nrec == NewAppHist.cContDoc )) = tsOk)
if (GetFirst Appointments where (( ContDoc.cStr == Appointments.Nrec )) = tsOk)
if (GetFirst LSchet where (( Appointments.cAddNrec2 == LSchet.NRec )) = tsOk)
if (NewAppHist.WorkRegime <> LSchet.Rejim)
result := (message('Для сотрудника ' + Persons.FIO + ''#13 +
'не совпадают режимы работы'#13 +
'в лицевом счете: ' + if(GetFirst KlRejimLS where (( LSchet.Rejim == KlRejimLS.Rejim )) = tsOk, KlRejimLS.NRejim, 'не определен') + ''#13 +
'в приказе: ' + if(GetFirst NewKlRejim where (( NewAppHist.WorkRegime == NewKlRejim.NRec )) = tsOk, NewKlRejim.NRejim, 'не определен') + ''#13#13 +
'Утвердить приказ?', Confirmation + YesNo) = cmYes);
}

End.

Handler with replace RPD5_CheckOnConfirm on ExtensionPoint epRPD_CheckBefore(cContDoc: comp)
Action
{
var oRPD: RPD5_Check;
result := oRPD.doCheck(cContDoc);
}

Название продукта Название компонента Тип Последняя версия Дата выхода
Z_STAFFZ_STAFFRES9.1.73.02015-05-25 15:49:26
Z_STAFFZ_STAFFRES9.1.073.0
Z_STAFFORDERSZ_STAFFORDERSRES9.1.48.02015-05-25 15:49:27
Z_STAFFORDERSZ_STAFFORDERSRES9.1.048.0