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

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

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


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

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

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

Как в скрипте получить значение заголовка столбца из сетки

Участились просьбы клиентов настроить автоматический расчёт компенсации за задержку выплаты отпускных.

Два года назад в этой теме Вячеслав предложил сделать некий начальный шаблон таблицы для расчёта суммы и последующей разноски в ЛС. Но дело с мертвой точки похоже не сдвинулось. 

Появилась идея написать скриптовый алгоритм для расчёта суммы компенсации, который будет работать так:

- невыплаченная сумма берётся из БЗ вида

- плановая и фактическая даты выплаты даты начала и конца действия вида

- 1/150 ставки центробанка - из сетки.

Проблема в том, что при расчёте необходимо учитывать изменение ставки в периоде задолженности. А для этого надо пробежать по столбцам сетки и считать заголовки столбцов:

Image 4459

Можно ли в скрипте это как-то реализовать?

Script
Ответ

Пример функции:

/*
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

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

17 алгоритм

АНН 4 года назад в Расчеты начислений и удержаний / Алгоритмы обновлен 4 года назад 6

Добрый день!

При расчете ставки по 17 алгоритму надо учитывать несколько сумм:

оклад (104 вид),

увеличение объема работ (151 вид) выбирается из сетки,

надбавка к окладу в % (121 вид).

Обнаружила, что при расчете часовой ставки надбавка к окладу в % посчиталась и на вид 151, по которому в столбце С1 ТВ указано =1 ( виды, у которых в БЗ оклад). Есть тут какой то выход или надо писать свой алгоритм?



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

нормативный заработок

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

Необходимо:

1. "Запомнить" текущее состояние табеля.

2. Очистить табель.

3. Проставить в табеле символ "Р" по нормативным дням.

4. Рассчитать сумму заработка за полностью отработанный месяц.

5. Восстановить "запомненное" состояние табеля.

Как реализовать п.1 и п.5 ?

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

Алгоритм ночных\праздничных от МРОТ

Татьяна Батурина 4 года назад в Расчеты начислений и удержаний / Алгоритмы обновлен 4 года назад 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/НРВ * РВ (ночных)

считаем пока без сравнения с МРОТ.

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

Расчёт алиментов

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

Клиент пожаловался, что при перерасчёте прошлых месяцев, появляется отрицательная сумма алиментов.

Попробовал смоделировать ситуацию на поставке. Выяснилось следующее. Странный перерасчёт алиментов касается случая удержания долга по алиментам. 

В допреквизитах указана сумма долга. Каждый месяц она уменьшается на сумму удержанных в этом месяце алиментов. В конце концов наступает месяц, в котором сумма долга будет погашена:

Image 4245

Если в этом месяце сделать перерасчёт любого предыдущего, то увидим такую картинку:

Image 4246

Т.е. рассчитанная ранее сумма алиментов, корректируется с учётом суммы долга в последнем месяце удержания алиментов.

На мой взгляд, это баг.

0
Отвечен

Заполнение табеля прошлых месяцев на этапе внедрения

Добрый день

в далеком 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);

}


вопрос: как её изменить чтобы разносить табеля с учетом совместительства ?

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

Ф-ция для приема из файла

Добрый день!

Написал таблицу  для приема и обработки из Excel  табелей с символами самоизоляции.

Вызов скрипта из  "Ф-ции для приема из файла";   соответственно  в окне "Прием данных из файла" 

активируется режим  "Формат пользователя"  и исчезает строка "Имя файла"  которая в других режимах 

позволяет пользователю выбрать расположение и имя файла.

Возможно ли в режме "Формат пользователя"  подключить механизм выбора файла, 

чтобы не прописывать в скрипте конструкции типа:

string nm="tab.xls";

var WorkDir ="C:\\tabel\\"; 

xls.Workbooks.Add(WorkDir+nm); 

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

Расчет по среднему

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

В связи с эпидемией, решили оплачивать нерабочие дни по средней. При этом расчет средней отличается от обычного расчета. Поковырявшись в системе, нашли настройки расчета по среднему, сделали отдельный столбец. Но данный режим не совсем удобен, например при массовом расчете работников. Поэтому сделали через свой алгоритм, включающий расчет среднего через объект.

И опять упёрлись в расчет среднего в режиме расчета за первую половину месяца (чтобы выплатить типа аванс). При анализе оказалось, что средняя считает неверно из-за подсчета фактически отработанных дней. Настройка во всех случаях стоит по табелю минус minus_dni. Однако, при расчете за полный месяц дни (типа отпуск и т.п.) минусуются, а при расчете за первую половину месяца - нет. Можно ли как-то это все-таки настроить?

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

Коэффициент индексации

Добрый день!
На предприятии действует коэффициент индексации с 01.01.2020 = 0,03
Новые оклады проставлены 01.01.2020.
Но еще для многих произошел личный рост оклада с 02.01.2020
Сетка 12 (для коэффициентов индексации) служит только для получения дат ( вариант брать коэффициент из сетки не подходит) . А сам расчет коэффициента = новый оклад/оклад предыдущий
По сути должно считаться так коэффициент = оклад на 01.01.2020/ оклад на 31.12.2019.
В Амбе получилось :  коэффициент = оклад с 02.01.2020/оклад декабря.
Подскажите как сделать, чтобы заработала формула
коэффициент = оклад на 01.01.2020/ оклад декабря.

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

Как подменить поставочный скрипт своим?

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

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

Карточку-справку ф-417 формирует скрипт ..\SCRIPT\forms\b425.S

Реализуя "хотелку" заказчика, я его чуть изменил.

Можно ли как-то при формировании карточки вызывать не b425.S, а b425_usr.S? 



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