Форум по программе Контур.Зарплата.
Здесь мы отвечаем на вопросы возникающие у наших пользователей или партнеров при работе с программой или при внедрении ее в организации.
Прежде чем создать обращение, воспользуйтесь поиском. Попробуйте найти похожий топик по ключевому слову. Например "СЗВ-СТАЖ" или "6-НДФЛ".
Если Вы нашли "чужую" тему с похожим вопросом, где уже был дан ответ (есть сообщение помеченное как "Ответ"), но при этом ответ не подходит для Вашей ситуации, то не задавайте свой вопрос в комментариях к "чужой" теме. Лучше создайте новую тему со своим вопросом.
Полезные ссылки по Контур.Зарплата:
- Полный дистрибутив и Веб-обновления
- Обучающий урок
- Вебинары
- "Старый" форум (доступен только из сети Контура, архив)
- Дистрибутив ПФ-Отчет+
Как в скрипте получить значение заголовка столбца из сетки
Участились просьбы клиентов настроить автоматический расчёт компенсации за задержку выплаты отпускных.
Два года назад в этой теме Вячеслав предложил сделать некий начальный шаблон таблицы для расчёта суммы и последующей разноски в ЛС. Но дело с мертвой точки похоже не сдвинулось.
Появилась идея написать скриптовый алгоритм для расчёта суммы компенсации, который будет работать так:
- невыплаченная сумма берётся из БЗ вида
- плановая и фактическая даты выплаты даты начала и конца действия вида
- 1/150 ставки центробанка - из сетки.
Проблема в том, что при расчёте необходимо учитывать изменение ставки в периоде задолженности. А для этого надо пробежать по столбцам сетки и считать заголовки столбцов:
Можно ли в скрипте это как-то реализовать?
Пример функции:
/* numSet- номер сетки row - номер строки в сетке ( нумерация с 1) d1 - дата начала периода (в виде строки дд.мм.гггг) d2 - дата окончания периода */ GetRateValues(numSet,row,d1,d2) { var map = CreateObject("MapString"); char zplPath[256]; GetCurrentDirectory(255,zplPath); // путь до zpl char filePath[256];sprintf(filePath,"%s\\TABLSET\\Tabl%d.Set",zplPath,numSet); // путь до сетки if ( access(filePath,0) ) { AmbaMessageBox("Файл с сеткой не найден","Ошибка",MB_OK|MB_ICONERROR,0); return map; } var db=KDateFromStr(d1); var de=KDateFromStr(d2); var tabl = CreateObject("CurPrnTbl"); tabl.InitialNameFile(to_string(filePath)); int countFld=tabl.Count_Fld();// число столбцов //цикл по столбцам double prevRateValue=0.; for(int idxFld=0; idxFld < countFld ;idxFld++) { string fldName=tabl.Name(idxFld);FreeSpaceString (fldName,3,""); var date=KDateFromStr(fldName); //нас интересую только столбцы с датой if(!date.IsValid()) continue; //значение ставки double rateValue=atof(tabl.Text(idxFld,row-1)); prevRateValue=rateValue; //дата не входит в интересующий нас период if (date.GT(de) || date.LT(db)) continue; //добавим значение ставки на начало периода if(!map.IsExist(db.GetDouble())) map.Add(db.GetDouble(),prevRateValue); //добавим значение ставки на дату date map.Add(date.GetDouble(),rateValue); } return map; }
Пример использования:
var map=GetRateValues(85,3,"01.01.2020","31.08.2020"); ShowRates(map,"01.01.2020","31.08.2020");
Результат:
Скрипт: USFUNCRW.S
17 алгоритм
Добрый день!
При расчете ставки по 17 алгоритму надо учитывать несколько сумм:
оклад (104 вид),
увеличение объема работ (151 вид) выбирается из сетки,
надбавка к окладу в % (121 вид).
Обнаружила, что при расчете часовой ставки надбавка к окладу в % посчиталась и на вид 151, по которому в столбце С1 ТВ указано =1 ( виды, у которых в БЗ оклад). Есть тут какой то выход или надо писать свой алгоритм?
нормативный заработок
Здравствуйте.
Необходимо:
1. "Запомнить" текущее состояние табеля.
2. Очистить табель.
3. Проставить в табеле символ "Р" по нормативным дням.
4. Рассчитать сумму заработка за полностью отработанный месяц.
5. Восстановить "запомненное" состояние табеля.
Как реализовать п.1 и п.5 ?
Алгоритм ночных\праздничных от МРОТ
Добрый день!
Помогите пожалуйста с реализацией алгоритма для расчета Ночных\Праздничных от суммы S1 =>МРОТ
БЗ |
НРВ (168) |
РВ |
Сумма |
|
Оклад (час) |
5000,00 |
168 |
160 |
4761,90 |
Нагрузка |
100% |
4761,90 |
||
S1 |
Оклад+Нагрузка |
S1 = 9523,80 |
||
S2 = Ночные |
Если S1<МРОТ (12130,00), то S2=МРОТ/НРВ * РВ (ночных) |
|||
Если S1>=МРОТ (12130,00), то S2=S1/НРВ * РВ (ночных) |
считаем пока без сравнения с МРОТ.
Расчёт алиментов
Здравствуйте.
Клиент пожаловался, что при перерасчёте прошлых месяцев, появляется отрицательная сумма алиментов.
Попробовал смоделировать ситуацию на поставке. Выяснилось следующее. Странный перерасчёт алиментов касается случая удержания долга по алиментам.
В допреквизитах указана сумма долга. Каждый месяц она уменьшается на сумму удержанных в этом месяце алиментов. В конце концов наступает месяц, в котором сумма долга будет погашена:
Если в этом месяце сделать перерасчёт любого предыдущего, то увидим такую картинку:
Т.е. рассчитанная ранее сумма алиментов, корректируется с учётом суммы долга в последнем месяце удержания алиментов.
На мой взгляд, это баг.
Заполнение табеля прошлых месяцев на этапе внедрения
Добрый день
в далеком 2008 году Вы мне помогали с такой вот функцией
// А потом в таблице пишем функцию разноски:
// Код:
// FillDayTabel("20.12.2007","10.01.2008","*","Б"); return имя_столбца_из_которого_разносим;
// Первый и второй параметр - дата начала и дата конца (в достаточно произвольном виде: целое число (будет трактоваться как абсолютный или относительный месяц, но не календарный!), строка вида "ДД.ММ.ГГГГ", строка вида "ГГГГММ.ДД".
// Третий - что меняем: * - все, n - нормативные дни, r - рабочие, "nr" - нормативные и рабочие и т.д.
// Четвертый - на что меняем.
//
FillDayTabel(&Dat1, &Dat2, &simv, &na_simv )
{
var DatB = CreateObject("KDate");
var DatE = CreateObject("KDate");
double d1 = GetDateFromFuncRWScript(Dat1); // получаем дату в виде ГГГГММ.ДД
double d2 = GetDateFromFuncRWScript(Dat2);
DatB.SetDateD(d1);
DatE.SetDateD(d2);
int mraschtmp = mrasch;
int mend = DatE.GetAbs(), z1,z2;
for ( int absm=DatB.GetAbs(); absm<=mend; ++absm )
{
if ( absm!=mrasch ) s50(absm);
s6400(d1,d2,z1,z2,data); // определяем дни которые надо заполнить в очередном месяце
if ( zamena_simv_v_tab (simv,na_simv,calm,z1,z2,-1,0) )
s145(s120(mrasch),1);
}
if ( mraschtmp!=mrasch )
s50(mraschtmp);
}
вопрос: как её изменить чтобы разносить табеля с учетом совместительства ?
Ф-ция для приема из файла
Добрый день!
Написал таблицу для приема и обработки из Excel табелей с символами самоизоляции.
Вызов скрипта из "Ф-ции для приема из файла"; соответственно в окне "Прием данных из файла"
активируется режим "Формат пользователя" и исчезает строка "Имя файла" которая в других режимах
позволяет пользователю выбрать расположение и имя файла.
Возможно ли в режме "Формат пользователя" подключить механизм выбора файла,
чтобы не прописывать в скрипте конструкции типа:
string nm="tab.xls";
var WorkDir ="C:\\tabel\\";
xls.Workbooks.Add(WorkDir+nm);
Расчет по среднему
Здравствуйте.
В связи с эпидемией, решили оплачивать нерабочие дни по средней. При этом расчет средней отличается от обычного расчета. Поковырявшись в системе, нашли настройки расчета по среднему, сделали отдельный столбец. Но данный режим не совсем удобен, например при массовом расчете работников. Поэтому сделали через свой алгоритм, включающий расчет среднего через объект.
И опять упёрлись в расчет среднего в режиме расчета за первую половину месяца (чтобы выплатить типа аванс). При анализе оказалось, что средняя считает неверно из-за подсчета фактически отработанных дней. Настройка во всех случаях стоит по табелю минус minus_dni. Однако, при расчете за полный месяц дни (типа отпуск и т.п.) минусуются, а при расчете за первую половину месяца - нет. Можно ли как-то это все-таки настроить?
Коэффициент индексации
Добрый день!
На предприятии действует коэффициент индексации с 01.01.2020 = 0,03
Новые оклады проставлены 01.01.2020.
Но еще для многих произошел личный рост оклада с 02.01.2020
Сетка 12 (для коэффициентов индексации) служит только для получения дат ( вариант брать коэффициент из сетки не подходит) . А сам расчет коэффициента = новый оклад/оклад предыдущий
По сути должно считаться так коэффициент = оклад на 01.01.2020/ оклад на 31.12.2019.
В Амбе получилось : коэффициент = оклад с 02.01.2020/оклад декабря.
Подскажите как сделать, чтобы заработала формула
коэффициент = оклад на 01.01.2020/ оклад декабря.
Как подменить поставочный скрипт своим?
Здравствуйте.
Карточку-справку ф-417 формирует скрипт ..\SCRIPT\forms\b425.S
Реализуя "хотелку" заказчика, я его чуть изменил.
Можно ли как-то при формировании карточки вызывать не b425.S, а b425_usr.S?
Сервис поддержки клиентов работает на платформе UserEcho