Задача 101.63492

Задача :101.63492

2018-02-06 12:27:15
Краткое описание :
Рабочая корзина - при обработке сигнала на увольнение дать возможность указать плановую дату выплаты
Описание :
Рабочая корзина (обработка сигнала)
Что измененно :

При обработке сигнала РК на увольнение дать возможность указать плановую дату выплаты и передать её в ЛС.
Возможные варианты:
- добавить в интерфейс сигнала на увольнение поле для ручного заполнения, либо выдавать запрос при обработке РК
- добавить точку расширения, позволяющую подключать свой код в момент обработки сигналов РК (с передачей в неё необходимых ссылок)
Как измененно :

После обработки в рабочей корзине сигнала об изменении/отмене изменения лицевого счета теперь вызывается обработчик события epBasket_AfterChangeLS.

В качестве параметров в него передается экземпляр объекта, реализующего объектный интерфейс IBasketExtensionChangeLS, содержащий ссылку на лицевой счет, признак изменения даты увольнения и дату увольнения их сигнала.

Идентификатор сигнала в рабочей корзине (ZarSignal.NRec) в обработчик намеренно не передается, т.к. структура сигнала со временем (к примеру, при изменении словаря и перемещении флагов сигнала и прочих полей в предназначенные специально для них поля) может меняться. Расширение передаваемых в обработчик параметров сигнала будет проводиться по запросу.

Ниже приведен пример обработчика, решающего задачу клиента: при обработке сигнала об установки в ЛС даты увольнения выводится запрос с возможностью установки плановой даты выплаты.

//---------------------------------------
// пример обработчика
//---------------------------------------

objinterface IChangePlanPayDate;
procedure ShowWindow(_cLS: comp; _datUv: date);
end;

vipinterface ChangePlanPayDate implements IChangePlanPayDate licensed(free);

#include LSFUNCS.VIH

interface ChangePlanPayDate;

var DatUv, PlanDate: date;
var LSFun: LschetFuncs;

create view
as
select *
from LSchet;

window winParams doAccept, escClose;
show at (,, 55, 6);
screen scrParams;
fields
DatUv: skip;
PlanDate: noprotect;
buttons
cmOk, default,, 'Установить плановую дату выплаты';
cmCancel,,, 'Отмена';
<<

Дата увольнения .@@@@@@@@@@@
Плановая дата выплаты заработной платы .@@@@@@@@@@@

<.Установить.> <. Отмена .>
>>
end;

handleevent

cmOk: CloseWindowEx(winParams, cmDefault);

end;

end;

procedure ShowWindow(_cLS: comp; _datUv: date);
{
if getfirst LSchet where ((_cLS == LSchet.NRec)) <> tsOk
exit;

if Message('Сотруднику ' + LSchet.tPerson->FIO + ' установлена дата увольнения ' + string(_datUv) + '.'#10#13
+ 'Установить плановую дату выплаты заработной платы?', Confirmation + yesNo) <> cmYes
exit;

PlanDate := DatUv := _datUv;

SetWindowTitle(winParams, LSchet.tPerson->FIO);

if RunWindowModal(winParams) <> cmDefault
exit;

LSFun.SetPlanPayDate(LSchet.NRec, PlanDate);
}

end.

#include BasketExtension.vih

Handler with replace ChangeLSProcessor on ExtensionPoint epBasket_AfterChangeLS(_params: IBasketExtensionChangeLS)
Action
{
result := true;

if not _params.ChangeDatUV
exit; // дату увольнения сигнал не менял

if _params.DatUv = ZeroDate
exit; // дата увольнения удалена (сигнал об откате приказа на увольнение?)

var ChangeDate: ChangePlanPayDate;
ChangeDate.ShowWindow(_params.cLS, _params.DatUv);
}

Название продукта Название компонента Тип Последняя версия Дата выхода
Z_LSCHETZ_LSCHETRES9.1.136.02018-02-06 12:27:15