Форум по программе Контур.Зарплата.
Здесь мы отвечаем на вопросы возникающие у наших пользователей или партнеров при работе с программой или при внедрении ее в организации.
Прежде чем создать обращение, воспользуйтесь поиском. Попробуйте найти похожий топик по ключевому слову. Например "СЗВ-СТАЖ" или "6-НДФЛ".
Если Вы нашли "чужую" тему с похожим вопросом, где уже был дан ответ (есть сообщение помеченное как "Ответ"), но при этом ответ не подходит для Вашей ситуации, то не задавайте свой вопрос в комментариях к "чужой" теме. Лучше создайте новую тему со своим вопросом.
Полезные ссылки по Контур.Зарплата:
- Полный дистрибутив и Веб-обновления
- Обучающий урок
- Вебинары
- "Старый" форум (доступен только из сети Контура, архив)
- Дистрибутив ПФ-Отчет+
![](/s/cache/4b/54/4b5405c83f4a2843b6bab8891c5b23a7.png)
Алименты по месяцу начисления
Здравствуйте.
На старом форуме взял скрипт, позволяющий рассчитать алименты с учётом сумм заработка по месяцу начисления (актуально для расчёта алиментов с сумм "переходящего отпуска"):
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 умеет выбирать суммы с учетом источника/совместительства, но не умеет выбирать суммы по месяцу начисления. Чем её можно заменить?
![](/s/cache/35/e4/35e43d93bbd97d8f6d07479c3c6a6d57.png)
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);
![](https://cdn.userecho.com/characters/65.png?1)
Доплата до МРОТ (алгоритм 897). Как выделить РК и СН?
Блин, с этимим северными...
Вячеслав предложил хорошее решение "крутить" СН, РК сверху доплаты до МРОТ. Но, блин теперь хочют выделять СН и РК с доплаты до МРОТ = "вернулись к тем же баранам" с кучей СН.
Наверное, одно из решений в 897м алгоритме при определении суммы МРОТ с СН и РК - искать виды северных в л/с и выбирать процент С/Н из РВ. Т.е.+ в колонке доплаты до МРОТ нужно отметить виды С/Н и выбирать либо РВ только по основному источнику/объекту/итд???
![](/s/cache/89/ac/89acfca5c889faababd9f666c09a543b.png)
Вид можно завести любой в пределах начислений, а если заводите среди удержаний, то не забудьте поставить в столбце С23 специальной ТВХ букву "Н" (Начисление). Поскольку он будет считаться после видов начислений, поставьте порядок 100 или 130. Налоги будут браться, поэтому ставим 2000.
![](https://cdn.userecho.com/characters/75.png?1)
Алгоритм для премии
Добрый день,
помогите пожалуйста с алгоритмом.
Надо посчитать в/о 202(премия) = оклад*РВ/НРВ*коэф, и округлить до 2знаков после запятой, где
оклад = БЗ основного в/о(5)
РВ = РВ из основного в/о(5)
КЧ(код категории)
коэф - берется из сетки окладов и др.табл в зависимости от категории и месяца.
Пример:
Оклад=8484
РВ=31
НРВ=75.5
КЧ(код категории)=13
Коэф =2.8247
Сумма премии = 8484*31/75.5*2.8247 = 9839.83
ЛС
КЧ (kat=13)
Сетка окладов и другие таблицы (№таблицы 4)
![](/s/cache/4b/54/4b5405c83f4a2843b6bab8891c5b23a7.png)
Здравствуйте.
Алгоритм: 4
Параметры: D2=Б(внутренний_код_оклада)/Н(1); D3=К(kat,4) // Н и К - русские
В 26 столбце спецТВХ символ 1
![](https://cdn.userecho.com/characters/1056.png?1)
Запись РВ и суммы в НУ в ЛС
Здравствуйте. Делаю расчет аванса.
Если делаю из списка ЛС, то РВ и сумма записываются без проблем. Если делаю из ЛС, то заполнение происходить в зависимости от того, была ли заполнена РВ.
Что нужно сделать, чтобы это исправить (заполнение при РВ = 0 из ЛС при расчете аванса)?
P.S. Использую функции PutSumm и PutTime
![](https://cdn.userecho.com/characters/65.png?1)
Доплата до МРОТ (алгоритм 897). Как отключить заполнение табеля рабочими днями?
Здравствуйте, уважаемые разработчики.
Замечательный алгоритм 897. Но... обнаружилось, что заполнение табеля рабочими днями - лишний функционал алгоритма. В некоторых организациях есть желание добавлять данный вид автоматом, не закрывать датой увольнения, разнести всем сотрудникам, включая архивных - на тот, случай, если архивные вновь устроятся на работу.
Просьба отвязать заполнение табеля - пусть табель заполняет оклад/тариф или вывести в параметры.
![](https://cdn.userecho.com/characters/1043.png?1)
В шестой параметр будет добавлен флаг:
0x08 - не заполнять табель рабочими днями
Сервис поддержки клиентов работает на платформе UserEcho