0
Отвечен
Настройка коэф.отпуска по категориям
Ефимова Ирина 5 лет назад
в Расчеты начислений и удержаний / Отпускные
•
обновлен Гашков Николай (Эксперт) 5 лет назад •
6
Добрый день.
Хотим настроить применение коэф. для отпуска по категориям.
Но предложенный пример не подходит, как настроить, если коэф. увеличения почти у каждой категории свой.
7,8,9 категория по 1 строке таблицы
10 по 2 строке
11 по 3 строке и т.д
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день!
Если у вас заведена сетка индексации отпуска и в этой сетке для каждой категории заведена своя строка, то в настройке отпуска в строке "Код строки из сетки для коэфф. увелич" пишем ф-цию: return usrGetRowForOtp(); что означает код строки из сетки индексации возвращает функция usrGetRowForOtp.
Скрипт функции (нужно вставить в 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 и НЕ равен 5 индексация по 1-ой строке сетки
if ( kod_kat!=4 && kod_kat!=5) return row=1;
//иначе индексация по 3-ей строке сетки
else row=3;
}
Функция реагирует на значение из кадровой части - код категории. В примере, приведенном выше: если код категории 4 или 5, тогда индексация идет по 3-ей строке сетки, иначе по строке 1 из сетки. Вам нужно подставить сюда свои категории 7,8,9 по 1 строке, 10 по 2 строке, 11 по 3 строке.
Добрый день.
Вот что получилось.
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); //значение кода категории
// если код категории НЕ равен 10,11,12,13,14,15,16 (категоия 7,8,9) индексация по 1-ой строке сетки
if ( kod_kat!=10 && kod_kat!=11 && kod_kat!=12 && kod_kat!=13 && kod_kat!=14 && kod_kat!=15 && kod_kat!=16) return row=1;
// если код категории НЕ равен 7,8,9,11,12,13,14,15,16 (категория=10) индексация по 2-ой строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=11 && kod_kat!=12 && kod_kat!=13 && kod_kat!=14 && kod_kat!=15 && kod_kat!=16) return row=2;
// если код категории НЕ равен 7,8,9,10,12,13,14,15,16 (категория=11) индексация по 3-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=12 && kod_kat!=13 && kod_kat!=14 && kod_kat!=15 && kod_kat!=16) return row=3;
// если код категории НЕ равен 7,8,9,10,11,13,14,15,16 (категория=12)индексация по 4-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=11 && kod_kat!=13 && kod_kat!=14 && kod_kat!=15 && kod_kat!=16) return row=4;
// если код категории НЕ равен 7,8,9,10,11,12,14,15,16 (категория=13)индексация по 5-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=11 && kod_kat!=12 && kod_kat!=14 && kod_kat!=15 && kod_kat!=16) return row=5;
// если код категории НЕ равен 7,8,9,10,11,12,13,15,16 (категория=14)индексация по 6-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=11 && kod_kat!=12 && kod_kat!=13 && kod_kat!=15 && kod_kat!=16) return row=6;
// если код категории НЕ равен 7,8,9,10,11,12,13,14,16 (категория=15)индексация по 7-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=11 && kod_kat!=12 && kod_kat!=13 && kod_kat!=14 && kod_kat!=16) return row=7;
// если код категории НЕ равен 7,8,9,10,11,12,13,14,16 (категория=16)индексация по 8-й строке сетки
if ( kod_kat!=7 && kod_kat!=8 && kod_kat!=9 && kod_kat!=10 && kod_kat!=11 && kod_kat!=12 && kod_kat!=13 && kod_kat!=14 && kod_kat!=15) return row=8;
//иначе индексация по 3-ей строке сетки
//else row=3;
}
Что нужно дописать, чтобы при неуказанной категории в КЧ коэффициент увеличения для расчета отпуска был 0.
Добрый день!
Я бы написал так (согласно вашему письму) :
if (kod_kat==7 || kod_kat==8 || kod_kat==9) return row=1; // Если категория равна 7 или 8 или 9, то берётся строка 1
if (kod_kat==10) return row=2; // Если категория равна 10, то берётся строка 2
if (kod_kat==11) return row=3; // Если категория равна 11, то берётся строка 3
и т.д. См. написание ф-ции ниже.
//коэффициент пересчета для ОТП по категориям 28.05.19 ВТР
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 и НЕ равен 5 индексация по 1-ой строке сетки
//if ( kod_kat!=4 && kod_kat!=5) return row=1;
//иначе индексация по 3-ей строке сетки
//else row=3;
if (kod_kat==1 || kod_kat==2) return row=1; // Если категория равна 1 или 2, то берётся строка 1
if (kod_kat==3) return row=2; // Если категория равна 3, то берётся строка 2
if (kod_kat==11) return row=3; // Если категория равна 11, то берётся строка 3
else row=0;
}
В вашей сетке завёл строку 0 (ноль) с голыми нулями (чтобы при неуказанной категории в КЧ коэффициент увеличения для расчета отпуска не изменялся ):
Спасибо.