0
Отвечен

Индексация отпуска по разным категориям

Алексей П 2 недели назад в Расчеты начислений и удержаний / Отпускные обновлен Гашков Николай (Эксперт) 2 недели назад 4

Добрый день!

По зн настроили сетку увеличения отпускных 

Сетка 6 

В ней 2 строки. Первая строка для всех категорий, кроме 4. И вторая строка для 4 категории


указали В строке "Код строки в сетке": return usrGetRowForOtp();

Image 9073

Скрипт функции (нужно вставить в usfuncrw.s):


usrGetRowForOtp()

{

int row=0;

//определяем категорию сотрудника

var D = CreateObject("KDate");D.SetDateII(1,mrasch); //значение категории берем на начало расчетного месяца

char StrKat[81];

GetKchValue("kat",StrKat,2,D);

int kod_kat=atoi(StrKat); //значение кода категории

// если код категории НЕ равен 4  индексация по 1-ой строке сетки

if ( kod_kat!=4 ) return row=1;

//иначе индексация по 2-ой строке сетки

else row=2;

}

У нас такой как указан выше. Для категории 4 индексация берется из 2 строки сетки. Остальные категории берут из 1 строки сетки


Image 9074

Но при расчете отпуска падает ошибка 

Image 9075

Подскажите, что мы упустили USFUNCRW.S

Добрый день.

Сообщение говорит о том, что функция не найдена среди загруженных модулей.

Либо модуль не загружен, либо опечатались в написании функции, либо вообще не в тот скрипт( в другой raschet) вставили функцию 

Да и функция сама "кривая"

Поправьте вот так

usrGetRowForOtp()
{
  int row=0;
  //определяем категорию сотрудника
  var D = CreateObject("KDate");D.SetDateII(1,mrasch); //значение категории берем на начало расчетного месяца
  char StrKat[81];
  GetKchValue("kat",StrKat,2,D);
  int kod_kat=atoi(StrKat); //значение кода категории

  // если код категории НЕ равен 4 индексация по 1-ой строке сетки
  if ( kod_kat!=4 ) 
      row=1;
  //иначе индексация по 2-ей строке сетки
  else 
     row=2;
  
  return row;
}

или вот так (более компактно)

usrGetRowForOtp()
{
  //определяем категорию сотрудника
  var kdate = KDateFromInt_WithDay(1,mrasch);//значение категории берем на начало расчетного месяца
  char StrKat[81];
  GetKchValue("kat",StrKat,2,kdate);
  
  return atoi(StrKat)!=4
     ? 1  // если код категории НЕ равен 4 индексация по 1-ой строке сетки
     : 2; // иначе индексация по 2-ей строке сетки  
}

Сервис поддержки клиентов работает на платформе UserEcho