Как определить % северной надбавки на дату
Модераторы: m0p3e, edward_K, Модераторы
Как определить % северной надбавки на дату
Добрый день!
Может, кто подскажет, есть ли готовая функция, которая возвращает % северной надбавки для конкретного сотрудника на определенную дату (не текущую).
Может, кто подскажет, есть ли готовая функция, которая возвращает % северной надбавки для конкретного сотрудника на определенную дату (не текущую).
Кто сказал, что бесполезно биться головой об стену?!
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Как определить % северной надбавки на дату
Здравствуйте. См. RunStaj.vih. Возможно, подойдет
// возвращает % для северного стажа
function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;
// возвращает % для северного стажа на указанную дату и ссылку на запись North
function GetPercServOnDate(PsnNRec : comp; RunDate : date; var NorthNrec : comp) : double;
// возвращает % для северного стажа
function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;
// возвращает % для северного стажа на указанную дату и ссылку на запись North
function GetPercServOnDate(PsnNRec : comp; RunDate : date; var NorthNrec : comp) : double;
Re: Как определить % северной надбавки на дату
PA_NorthernCategory (PA_NorthernCategoryOnDay) из C_ExtFun.chm. Зная категорию, можно выудить процент.
Re: Как определить % северной надбавки на дату
Спасибо, буду пробовать!
Кто сказал, что бесполезно биться головой об стену?!
Re: Как определить % северной надбавки на дату
В первой функции (GetPercServN) не совсем понятно что за LSchetKateg типа comp?function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;
// возвращает % для северного стажа на указанную дату и ссылку на запись North
function GetPercServOnDate(PsnNRec : comp; RunDate : date; var NorthNrec : comp) : double;
В таблице Lschet есть поле KategS, но его тип - word...
а вторая функция (GetPercServOnDate) есть в описании, но я не нашла ни одного vih-файла, где она определена.
Поэтому не знаю, как ей правильно воспользоваться, компилятор ее не знает.
Кто сказал, что бесполезно биться головой об стену?!
Re: Как определить % северной надбавки на дату
По идее word параметр должен быть.
Код: Выделить всё
LSchetKateg == North.kateg
Код: Выделить всё
public function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;
{ // Возвращает процент для северного стажа
var ServLenYears : integer;
var ServLenMonths : integer;
var ServLenDays : integer;
GetPercServN := 0.0;
if (GetFirst Persons where ((PsnNRec == Persons.NRec)) = tsOk)
if (GetFirst Catalogs where ((64 == Catalogs.SysCode)) = tsOk)
if (GetFirst ServLen where (( PsnNRec == ServLen.Person and // сведения о стаже
slStaffServLenCur == ServLen.CurRec and
Catalogs.Nrec == ServLen.Position )) = tsOk)
{
if (ServLen.ToDate <> Date(0,0,0))
{
ServLenYears := ServLen.YearsE;
ServLenMonths := ServLen.MonthsE;
ServLenDays := ServLen.DaysB;
if (ServLenDays > 0)
ServLenMonths := ServLenMonths + 1;
}
else
{
ServLenYears := StajYears(ServLen.FromDate, RunDate, ServLen.Rate,
ServLen.DaysB, ServLen.MonthsB, ServLen.YearsB);
ServLenMonths := StajMonths(ServLen.FromDate, RunDate, ServLen.Rate,
ServLen.DaysB, ServLen.MonthsB, ServLen.YearsB);
ServLenDays := StajDays (ServLen.FromDate, RunDate, ServLen.Rate,
ServLen.DaysB, ServLen.MonthsB, ServLen.YearsB);
if (ServLenDays > 0)
ServLenMonths := ServLenMonths + 1;
}
if (GetFirst North
where ((LSchetKateg == North.kateg and
((ServLenYears = North.EndInt and
ServLenMonths <= North.MonthInt) or
ServLenYears < North.EndInt)
)) = tsOk)
GetPercServN := North.Proc;
}
}
Re: Как определить % северной надбавки на дату
С северными получилось, спасибо!
А вот теперь нужно достать районный коэффициент на дату (т.е., просто из лицевого счета не подойдет, нужно с учетом возможных перемещений).
А вот теперь нужно достать районный коэффициент на дату (т.е., просто из лицевого счета не подойдет, нужно с учетом возможных перемещений).
Кто сказал, что бесполезно биться головой об стену?!
Re: Как определить % северной надбавки на дату
Простите, я опять за своё: C_ExtFun.chm, функции PA_RegionalFactorOnDay и PA_RegionalFactor.s2176 писал(а):А вот теперь нужно достать районный коэффициент на дату (т.е., просто из лицевого счета не подойдет, нужно с учетом возможных перемещений).
Re: Как определить % северной надбавки на дату
нашла не в C_ExtFun.chm (у меня такого нет), а в ExtFun.chm.
НО!
например,
Function PA_RegionalFactor (
OnDate : Date
) : Double;
external 'WT.DLL'
никакого описания, кроме этого, а как функция определит, для кого конкретно мне нужен этот процент?
У разных сотрудников могут быть разные проценты.
Не понятно, как этим пользоваться.
НО!
например,
Function PA_RegionalFactor (
OnDate : Date
) : Double;
external 'WT.DLL'
никакого описания, кроме этого, а как функция определит, для кого конкретно мне нужен этот процент?
У разных сотрудников могут быть разные проценты.
Не понятно, как этим пользоваться.
Кто сказал, что бесполезно биться головой об стену?!
Re: Как определить % северной надбавки на дату
Так у вас до сих пор 8.1?! У меня ещё далее в C_ExtFun.chm есть
Если не ошибаюсь, ранее использовались функции табеля LoadWorkingTable и, соответственно, WT_GetRegionalFactor.
К тому же ещё присутствует раздел "Инициализация функций получения параметров ЛС на дату при помощи прикладных контекстов"Описание
Возвращает величину районного коэффициента на дату OnDate . Текущий лицевой счет задается предварительным вызовом функции PA_Assign
Код: Выделить всё
// 1. Подключить заголовочный файл:
#include Contexts.vih // прикладные контексты
interface Example;
// 2. Добавить глобальную переменную в интерфейс:
var
CS: IContextSession;
...
handleEvent // интерфейса
cmInit:
{
// 3. Добавить следующие строки в обработчик инициализации интерфейса:
var CL: ContextList;
// захват прикладных контекстов
if (not CL.Add(CS, 'PADetailsUtils'))
{
abort;
exit;
}
...
}
...
end;
end.
Re: Как определить % северной надбавки на дату
Да, увы, у нас 8.1, и иного пока не предвидится.
Вставила:
PA_Assign(nrec_lschet);
_summavp:=PA_RegionalFactor(_date);
В переменной _summavp на выходе всегда 0
Вставила:
PA_Assign(nrec_lschet);
_summavp:=PA_RegionalFactor(_date);
В переменной _summavp на выходе всегда 0
Кто сказал, что бесполезно биться головой об стену?!
Re: Как определить % северной надбавки на дату
А CL.Add(CS, 'PADetailsUtils')? Правда, не знаю, функционирует ли это в 8.1...
WT_*, по-любому, должны работать!
WT_*, по-любому, должны работать!
Re: Как определить % северной надбавки на дату
Проще из таблиц достать...
так, видимо, и придется сделать
так, видимо, и придется сделать
Кто сказал, что бесполезно биться головой об стену?!