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

Добрый день

int countDays=KDateFromStr("07.08.2020").Diff(KDateFromStr("30.03.2020"))+1;
return countDays;

Добрый день

В поставке нет такого файла (с вопросами)

Попробуйте удалить файл, указанный в сообщении

Добрый день.

Поправим в следующем обновлении.

Добрый день.

Как исключать эти периоды из среднего  осуждалось тут

Тогда бухгалтеру придется самостоятельно отслеживать попадание  "опекунов" в СЗВ-М

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

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

Вы хотите, что первым всегда печатался "основной источник"?

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