Форум по программе Контур.Зарплата.
Здесь мы отвечаем на вопросы возникающие у наших пользователей или партнеров при работе с программой или при внедрении ее в организации.
Прежде чем создать обращение, воспользуйтесь поиском. Попробуйте найти похожий топик по ключевому слову. Например "СЗВ-СТАЖ" или "6-НДФЛ".
Если Вы нашли "чужую" тему с похожим вопросом, где уже был дан ответ (есть сообщение помеченное как "Ответ"), но при этом ответ не подходит для Вашей ситуации, то не задавайте свой вопрос в комментариях к "чужой" теме. Лучше создайте новую тему со своим вопросом.
Полезные ссылки по Контур.Зарплата:
- Полный дистрибутив и Веб-обновления
- Обучающий урок
- Вебинары(YouTube) RuTube
- "Старый" форум отключен, архив
- Дистрибутив ПФ-Отчет+

Функция подсчета символов табеля по нормативным рабочим дням графика
Доброго дня.
Нужно подсчитать количество символов в табеле, например, "Б", приходящихся на рабочие смены по нормативному графику работника.
rv=dney_v_tab("Б",calm,1,31); возьмет с выходными
Как сказать, чтобы "Б", приходящиеся на выходные дни, не подсчитывали?

Добрый день!
CountTabelNormCalendDay(absm, _SimvTabel, _SimvNorm, bHoliday, &Hours )
//*********************************************************
//** Определяет количество отработанных дней в месяце absm
//** SimvTabel - какие символы в табеле учитываем
//** SimvNorm - какие символы в нормативном календаре
//** учитываем
//** bHoliday - учитывать (1) только праздничные дни
// или их не учитывать (0)
double hours; int countBlOnWorkDays=CountTabelNormCalendDay(mrasch,"Б","2",0,hours);

Доплата до МРОТ не учитывает неполностью отработанный месяц ...
У меня при расчете МРОТ не учитывается неполный месяц отработанный человеком. Шестой параметр не указан в алгоритме.

Не рассчитались алименты с отпускных
Добрый день!
Поменяли у вида алиментов параметр По начислению=1.
Начисляем отпуск в марте за апрель, допустим, с 10.04 по 15.04.
С этой суммы отпускных в марте алименты не удерживаются, закрываем месяц, переходим на апрель, и в апреле алименты не посчитались с этой суммы.

Проблема с алгоритмом расчета аванса, переопределенным через пользовательский скрипт
Здравствуйте. С вашей помощью написал программу расчета аванса, но то ли плохо потестировал, то ли одно из двух...
Когда одно человека считаем, то всё хорошо. Когда нескольких, то почему то записывает только одного. Прошу помочь, а то самому точно не осилить.
Полный код в приложении.USAVANS.zip

Расчету доплаты до МРОТ при не полностью отработанном месяце
ЛС отработал 112 часов из 159 часов. Был на б/л. Мы начислили б/л, затем з/п. Так вот, минималка неправильно доначисляет. Вид расчитывает за 112 часов.

Неверный перерасчет у вида
ZPL_zplinfo_net(20180321_144327).cabУ нас ещё проблемные виды по настройкам.
А ещё не по теме, возможно посмотреть у этого ЛС при расчёте б/л автоматически не перерасчитывается заработная плата за предыдущий месяц

171-ый вид. 4-ый столбец специальной таблицы входимости. Стоит 2 "Не пересчитывать рабочее время если оно уже было заполнено". Поэтому и не пересчитывается.

Выборка размера северной надбавки из РВ видов НУ
Поправьте, пожалуйста, скрипт. В колонке 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;
}

Попробуйте так:
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);

Параметры алгоритма "Доплата до МРОТ" (алгоритм 897)
Здравствуйте.
Напомните, пожалуйста, параметры алгоритма 897 ("старый" форум, к сожалению, недоступен).

Алименты по месяцу начисления
Здравствуйте.
На старом форуме взял скрипт, позволяющий рассчитать алименты с учётом сумм заработка по месяцу начисления (актуально для расчёта алиментов с сумм "переходящего отпуска"):
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 умеет выбирать суммы с учетом источника/совместительства, но не умеет выбирать суммы по месяцу начисления. Чем её можно заменить?

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);

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

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