Форум по программе Контур.Зарплата.

Здесь мы отвечаем на вопросы возникающие у наших пользователей или партнеров при работе с программой или при внедрении ее в организации.

Прежде чем создать обращение, воспользуйтесь поиском. Попробуйте найти похожий топик по ключевому слову. Например "СЗВ-СТАЖ" или "6-НДФЛ".


Если Вы нашли "чужую" тему с похожим вопросом, где уже был дан ответ (есть сообщение помеченное как "Ответ"), но при этом ответ не подходит для Вашей ситуации, то не задавайте свой вопрос в комментариях к "чужой" теме. Лучше создайте новую тему со своим вопросом.

Полезные ссылки по Контур.Зарплата:

  1. Полный дистрибутив и Веб-обновления
  2. Обучающий урок
  3. Вебинары
  4. "Старый" форум отключен, архив
  5. Дистрибутив ПФ-Отчет+
0
Отвечен

Выборка размера северной надбавки из РВ видов НУ

Поправьте, пожалуйста, скрипт. В колонке 33 символом 3 отмечены виды СН. Как подсуммировать РВ по этим видам по основному подразделению, источнику, совместительству и без учета пересчетных строк.

Спасибо.

UserDefineSev(month, d1, d2)
{
int stolbec = 33;
double n2=0;
  var Prop = CreateObject("APropBE");
  Prop.Init(GetGeneralSrcLS(),GetGeneralSubjectLS(),GetGeneralPodrLS(),GetGeneralCombineLS()); //Основной источник
  var CurProp = GetCurPropCountLS();   // По  должностям
char buf[256];
char func[256];
sprintf(func,"R_Col_T(3,'н',%d,0,0,Prop)%s",stolbec);
CallFuncReceive(func,buf,250,2);  
n2 = atof(buf)/100; 
return n2;

}

Script
Ответ

Попробуйте так:

UserGetRvColProp(col,sim, prop)
{
  int Flags=CL_SOURCE|CL_MV;//выборка по виду по месяцу начисления
  double rv=0.; 
  //цикл по видам ТВХ
  for(int pos=0;pos<cntplus;pos++)
  {
     char cur_sim=Sim_For_Position(pos,col-1);
     if ( cur_sim!=sim)  
      continue;
     rv+=CashSummProp(0,kodnu1[pos],mrasch,mrasch,42,Flags,prop); 
  }
  return rv;
}

Использовать так:

var Prop = CreateObject("APropBE");
Prop.Init(GetGeneralSrcLS(),GetGeneralSubjectLS(),GetGeneralPodrLS(),GetGeneralCombineLS());
return UserGetRvColProp(25,'3', Prop);
0
Отвечен

Параметры алгоритма "Доплата до МРОТ" (алгоритм 897)

Игорь Шалдин 7 лет назад в Расчеты начислений и удержаний / Алгоритмы обновлен Matilda 6 лет назад 17

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

Напомните, пожалуйста, параметры алгоритма 897 ("старый" форум, к сожалению, недоступен).

0
Отвечен

Алименты по месяцу начисления

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


На старом форуме взял скрипт, позволяющий рассчитать алименты с учётом сумм заработка по месяцу начисления (актуально для расчёта алиментов с сумм "переходящего отпуска"):


UserAlg608(&info,&r)   // алименты по по мес начисл
{
   int stolbec = 9;       //--- выборка начислений за текущий месяц
   double n2;
   toMatrLS();
   n2=CollectSumm(stolbec-1,0,mrasch, CL_MV | CL_COL | CL_NACH );                                      
   //--- выборка удержаний за текущий месяц
   double n3;
   n3 = CollectSumm(stolbec-1,0,mrasch, CL_MV | CL_COL | CL_UD);
   
   //--- выборка удержаний за прошлый месяц, если они назначены
   double n4=0;
   double k_nep;    int mes = 0;
   char M_T_1[90];                                                                          
   sprintf(M_T_1,"%i.01",atoi(data));                                                       
   double MesTek1 = static_cast_to_double(M_T_1);                                               char M_T_2[90];
   sprintf(M_T_2,"%i.%i",atoi(data),atoi(countday));
   double MesTek2 = static_cast_to_double(M_T_2);    double zz1=info.d1; if(atoi(info.d1) < atoi(MesTek1))  zz1=MesTek1;
   double zz2=info.d2; if(atoi(info.d2) > atoi(MesTek2))  zz2=MesTek2;    nepoln(zz1,zz2,MesTek1,MesTek2,k_nep,1);    double t_nu=n2-n3-n4;
   double res1 = t_nu*info.bz/100.;
   
   info.n1=res1*k_nep;    if(FL_V_ALG && uprc != NO_SCREEN)
   {
      infolist.add_record("Начисления",n2);
      infolist.add_record("Удержания",n3);
      infolist.add_record("Столбец Т/В",stolbec);
      infolist.add_record("Начисл. - Удержержано",t_nu);
      infolist.add_record("Проц. алиментов",info.bz);
      infolist.add_record("ПромежутРезультат",res1);       infolist.add_record("Дат_нач",info.d1);
      infolist.add_record("Дат_кон",info.d2);
      //infolist.add_record("Зед_1",z1);
      //infolist.add_record("Зед_2",z2);
      infolist.add_record("Неполн",k_nep);
      infolist.add_record("ДатТек1",MesTek1);
      infolist.add_record("ДатТек2",MesTek2);
      infolist.add_record("ИтоговыйРезультат",info.n1);
   }
   var simv=poiskprch(info.ikod);
   if(simv == 4)
   {
   char str[81];
   char str1[81];
      Rkv_from(GetCode(info.crow),"долг",str1,str);
      // Долг по алиментам уменьшается при переходе
      // в новый месяц на сумму, вычисленную ниже
   var r9=atof(str);
      if(r9 && r9 < info.n1)
      {
      // Долг по алиментам ведется и
      // долг по алиментам  < суммы алиментов
      char str1[80];
            sprintf(str1,"Долг по алиментам %-8.2f",r9);
            if(uprc != NO_SCREEN)
            vwriteat(scr04,windrow+1,0,str1);
            info.n1=r9;
      }
   }
   return code_Break;
}

Работает всё хорошо, но только если в ЛС один источник/совместительство. Если их несколько, в выборку попадают суммы по всем источникам/совместительствам.

Можно ли функцию CollectSumm  научить выбирать суммы только по тому источнику/совместительству, по которому заведён вид алиментов? Ну или что можно использовать вместо неё?


З.Ы. Смотрел "стандартный" скрипт алиментов: 


// алименты
   // 06.10.1999
   //--- выборка начислений за текущий месяц
   s1001simv("1","н",info.d1,info.d2,0,ST_ALIMENT,info.n1,2,0);  // 08.11.95
   //--- выборка удержаний за текущий месяц
   double n3;
   s1001simv("1","у",info.d1,info.d2,0,ST_ALIMENT,n3,2,0);
   //--- выборка удержаний за прошлый месяц, если они назначены
   double n4;
   s1001simv("2","у",info.d1,info.d2,-1,ST_ALIMENT,n4,2,0);
   var t_nu=info.n1-n3-n4;
   info.n1=info.n1-n3-n4;
   info.n1=info.n1*info.bz/100.;
   if(FL_V_ALG && uprc != NO_SCREEN)
   {
      infolist.add_record("Столбец Т/В",ST_ALIMENT+1);
      infolist.add_record("Начисл. - Удержержано",t_nu);
      infolist.add_record("Проц. алиментов",info.bz);
      infolist.add_record("Результат",info.n1);
   }
   var simv=poiskprch(info.ikod);
   if(simv == 4)
   {
   char str[256];
   char str1[256];
      Rkv_from(GetCode(info.crow),"долг",str1,str);
      // Долг по алиментам уменьшается при переходе
      // в новый месяц на сумму, вычисленную ниже
   var r9=atof(str);
      if(r9 && r9 < info.n1)
      {
      // Долг по алиментам ведется и
      // долг по алиментам  < суммы алиментов
      char str1[80];
            sprintf(str1,"Долг по алиментам %-8.2f",r9);
            if(uprc != NO_SCREEN)
            vwriteat(scr04,windrow+1,0,str1);
            info.n1=r9;
      }
   }
   return code_MDefault;
}


Тут другая беда:  функция s1001simv  умеет выбирать суммы с учетом источника/совместительства, но не умеет выбирать суммы по месяцу начисления. Чем её можно заменить?



Script
Ответ
var CurProp = GetCurPropCountLS();
...
n2=CollectSummProp(stolbec-1,0,mrasch, CL_MV | CL_COL | CL_NACH,CurProp);
...
n3 = CollectSummProp(stolbec-1,0,mrasch, CL_MV | CL_COL | CL_UD,CurProp);
0
Отвечен

Доплата до МРОТ (алгоритм 897). Как выделить РК и СН?

Блин, с этимим северными...

Вячеслав предложил хорошее решение "крутить" СН, РК сверху доплаты до МРОТ. Но, блин теперь хочют выделять СН и РК с доплаты до МРОТ = "вернулись к тем же баранам" с кучей СН.

Наверное, одно из решений в 897м алгоритме при определении суммы МРОТ с СН и РК - искать  виды северных в л/с и выбирать процент С/Н из РВ. Т.е.+ в колонке доплаты до МРОТ нужно отметить виды С/Н и выбирать либо РВ только по основному источнику/объекту/итд???

Ответ

Вид можно завести любой в пределах начислений, а если заводите среди удержаний, то не забудьте поставить в столбце С23 специальной ТВХ букву "Н" (Начисление). Поскольку он будет считаться после видов начислений, поставьте порядок 100 или 130. Налоги будут браться, поэтому ставим 2000.

0
Отвечен

Алгоритм для премии

Добрый день,

помогите пожалуйста с алгоритмом.

Надо посчитать в/о 202(премия) = оклад*РВ/НРВ*коэф, и округлить до 2знаков после запятой, где

  оклад = БЗ основного в/о(5)

  РВ = РВ из основного в/о(5)

  КЧ(код категории)

  коэф - берется из сетки окладов и др.табл в зависимости от категории и месяца.

Пример:

Оклад=8484

РВ=31

НРВ=75.5

КЧ(код категории)=13

Коэф =2.8247

Сумма премии = 8484*31/75.5*2.8247 = 9839.83


ЛС

Image 717

 

КЧ (kat=13)

Image 718


 

Сетка окладов и другие таблицы (таблицы 4)

Image 719


Ответ
Игорь Шалдин 7 лет назад

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

Алгоритм: 4

Параметры: D2=Б(внутренний_код_оклада)/Н(1); D3=К(kat,4)   // Н и К - русские

В 26 столбце спецТВХ символ 1

0
Отвечен

Запись РВ и суммы в НУ в ЛС

Здравствуйте. Делаю расчет аванса.

Если делаю из списка ЛС, то РВ и сумма записываются без проблем. Если делаю из ЛС, то заполнение происходить в зависимости от того, была ли заполнена РВ.
Что нужно сделать, чтобы это исправить (заполнение при РВ = 0 из ЛС при расчете аванса)?

P.S. Использую функции PutSumm и PutTime

0
Завершен

Доплата до МРОТ (алгоритм 897). Как отключить заполнение табеля рабочими днями?

Здравствуйте, уважаемые разработчики.


Замечательный алгоритм 897. Но... обнаружилось, что заполнение табеля рабочими днями - лишний функционал алгоритма. В некоторых организациях есть желание добавлять данный вид автоматом, не закрывать датой увольнения, разнести всем сотрудникам, включая архивных - на тот, случай, если архивные вновь устроятся на работу. 


Просьба отвязать заполнение табеля - пусть табель заполняет оклад/тариф или вывести в параметры.

Ответ

В шестой параметр будет добавлен флаг:

  • 0x08 - не заполнять табель рабочими днями






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