Ваши комментарии

Добрый день

/* Пеpвый паpаметp - набор символов суммирования */
/* Втоpой паpаметp - столбец таблицы входимоси */
/* Третий параметр - вид Н-У */
/* Четвертый параметр - выражение */
/* Если вид отмечен в столбце таблицы входимости одним из указанных */
/* символов, то возвращается значение выражению

Другими словами это "выборка суммы по  столбцу ТВХ по указанным символам"

Какие даты приема- увольнения?

Если дата приема 2022г- в отчет за 2021 сотрудник не попадет при настройке 0

Сформулируйте четко задачу: как вы хотите чтобы заполнялся отчет? 

Желательно приложить сохраненку с  "проблемным" ЛС..

Пример таблицы для расчета отпуска.

Расчет происходит при разноске таблицы. 

В таблице должны быть заполнены поля:

  •  ТН в КЗ
  • Дата начала отпуска
  • Дата окончания отпуска

расчет отпуска из таблицы.zip

Для запуска расчета отпуска используется такой скрипт

UserCalcOneOtpusk(Beg, End)
{
  var BegD=KDateFromStr(Beg);
  
  var EndD=KDateFromStr(End);
  //даты отпуска заданы неверно
  if( !BegD.IsValid() || !EndD.IsValid() || BegD.GT(EndD))
    return "-1";
  
  int  monthSr= BegD.GetAbs()-1;// месяц для расчета среднего
  var lsform=CreateObject("LS_Form"); //для WIN создали окно где будет происходить корректировка сумм
  if (!VarHasValue(lsform)) 
  {
    if (ESC==param_b2(2))   // запрос параметров расчета (автоматически, с корректировкой...), работает для режима в func[0]
      return to_string(ESC);
  }
  int TypeOtp = OTPUSK_OSN; 
/*
 else if (T=="173-176")     // учебный отпуск
      TypeOtp = OTPUSK_UCH; 
   else TypeOtp = OTPUSK_DOP; // все остальные считаем как Доп
*/
  var Otp = CreateObject("KCalcSredn"); //установит func[0]=2 - глобальный режим "расчет отпуска", восстановит при разрушении 
  if (ESC==Otp.InitOtp2(BegD,EndD,TypeOtp,monthSr,0)) 
      return to_string(ESC);

  string rez=to_string(Otp.Calculate(0,2))+"^";  
  //количество дней между датами
  //rez+=to_string(EndD.Diff(BegD)+1)+"^";
  //количество дней отпуска (определяем по табелю)
  rez+=to_string(CalcTabelSimCount(BegD,EndD,"О"))+"^";
  //средний
  rez+=to_string(Otp.SumSredn());
  return rez;  
}

в поле "Начало расчета таблицы" нужно написать 

FindTnForKCH(1,"tn_ibm");return; 

1)FindTnForKCH(1,"tn_ibm") лучше поместить в "Начало расчета таблицы"

иначе будет долго работать... ( для каждой записи в таблице будет полностью читаться весь список ЛС)

2) Не уверен что у вас правильно посчитает СДЗ..

Функции расчета не читают ЛС - это нужно делать самостоятельно через LSRead(Tn, flag)

/*
Распределение численности работников государственных и муниципальных учреждений здравоохранения Свердловской области по размеру заработной платы, начисленной за январь-декабрь 2013 года
в строке "Число работников всего (человек)" показываем сотрудников ПОЛНОСТЬЮ отработавших 2013 год (дата приема<01/01/2013 дата увольнения >31/12/2013)
в строке "на условиях неполного рабочего времени (дня, недели)" - сотрудники, у которых в к.ч. "код работы для ссч" стоит 2 или 8 на 31.12.2013
в строке "по совместительству" - сотрудники, у которых в к.ч. "код работы для ссч" стоит 4 или 9 на 31.12.2013
*/

  1. Разрывы стажа не учитываются.Берется период между датой приема и увольнения.
  2. Проверьте "код работы для ср.списочной" (значение 3)
  3. Есть настройка "Настройка -> 5. Настройки таблиц и форм печати -> >> Отчетность по статистике -> 4. Распределение численности СО -> Фильтр учета отработанного времени":

0 -  попадут только полностью отработавшие год (дата приема<01/01/2013 дата увольнения >31/12/2013)

- учитываются те, кто отработал хотя бы один полный месяц в году

Добрый день.

"Принять на работу" - это кнопка для добавления еще одного совместительства..

соответственно должность не привязана ни к какому подразделению

А в справочнике должностей вы у этой должности проставили подразделение?

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