Как определить % северной надбавки на дату
Модераторы: m0p3e, edward_K, Модераторы
Как определить % северной надбавки на дату
Добрый день!
Может, кто подскажет, есть ли готовая функция, которая возвращает % северной надбавки для конкретного сотрудника на определенную дату (не текущую).
			
			
									
						
							Может, кто подскажет, есть ли готовая функция, которая возвращает % северной надбавки для конкретного сотрудника на определенную дату (не текущую).
Кто сказал, что бесполезно биться головой об стену?!
			
						- 
				Irina_
- Местный житель
- Сообщения: 557
- Зарегистрирован: 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: Как определить % северной надбавки на дату
Проще из таблиц достать...
так, видимо, и придется сделать
			
			
									
						
							так, видимо, и придется сделать
Кто сказал, что бесполезно биться головой об стену?!