0
На рассмотрении

Ккак сделать чтобы РВ бралось из 296 вида, а не из табеля?

ddi_karp 3 года назад в Расчеты начислений и удержаний / Алгоритмы обновлен Гашков Николай (Эксперт) 3 года назад 13

Здравствуйте

Пример есть 105 вид алгоритм 192

Расчет: Норма РВ умножается на сумму выбранного справочника.

Вопрос: как сделать чтобы РВ бралось из 296 вида, а не из табеля?

На рассмотрении

Добрый день.

Можно использовать такой алгоритм

UserAlg192(&info,&r)
{
//РВ берется из вида 296
double totalRv=0; rvvid("*",196,0,totalRv);
r[2]=totalRv;
char t[20];
if((info.c=korrv(r,t,0,info.h,flagrow,jf)) != 1)
return code_ReturnCode;
info.n1=(info.kod_alg == 192) ? r[2]*info.bz : r[2]*info.bz/100.;
if(FL_V_ALG && uprc != NO_SCREEN)
{
infolist.add_record("Рабочее время",r[2]);
infolist.add_record("Тариф",info.bz);
infolist.add_record("Результат",info.n1);
}
return code_Break;
}

Файл надо заменить ( предварительно сохраните ваш вариант файла) в каталоге ..\Script\user\  USALG.zip

На примере расчета 133.4 РВ из оклада умножаем на 143р (из сетки) сейчас считает правильно, но еще нужно, чтобы делилось на РВ из 296 оклада? USALG.S

опишите, пожалуйста, ваш расчет подробнее

в алгоритме , который выложен, считает так:

СУММА="РВ из вида 296" * "БЗ рассчитываемого вида"

Сумма= БЗ 105 вида сетки (сумма баллов) делится на РВ из 296 вида (не норму, а сколько стоит в в РВ 296 вида, может больше нормы) умножить на РВ 677 вида.

UserAlg192(&info,&r)
{
  //РВ берется из вида 296
  double rv296=0; rvvid("*",196,0,rv296);
  double rv677=0; rvvid("*",577,0,rv677);

   info.n1= rv677*(info.bz/rv296);
   if(FL_V_ALG && uprc != NO_SCREEN)
   {
      infolist.add_record("Рабочее время 296",rv296);
      infolist.add_record("Рабочее время 677",rv677);
      infolist.add_record("Тариф",info.bz);
      infolist.add_record("Результат",info.n1);
   }
   return code_Break;
}

Сумма= БЗ 105 вида сетки (сумма баллов) делится на РВ из 296 вида (не норму, а сколько стоит в в РВ 296 вида, может больше нормы) умножить на количество РВ 677 вида.

Выше который писали алгоритм не умножает на РВ 677

проверьте в ТВХ какой внутренний код у вида 677?

выложите сохраненку с ЛС. 

иначе будем долго гадать на кофейной гуще.

Функцию вы добавили

UserAlg192(&info,&r)

а вызов этой функции- у вас не прописан

Вот так надо прописать

      // Пример вызова алгоритма пользователя.
           case 192:
         return UserAlg192(info,r);
      case 4:
         return UserAlg4(info,r);

И с кодировкой напутали...

Возьмите этот файл.

USALG.S

Получите такой расчет:

Ошибка192алг.jpgUSALG.S

Здравствуйте добавил строки пишет ошибку

Добрый день!

Дак в вашем файле ф-ция UserAlg4() определена дважды. Один раз в строке 131, другой раз в строке 1065. Что-то из двух уберите.

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