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

предлагаю продолжить обсуждение в соседней теме.

Не надо все вопросы вести в рамках одной темы..

РК и СН можно выделять в своде...

Как вариант, можете в скрипте определить ф-цию UserDefineSev(double &proc_sev, int month, double d1, double d2) если поставочная функция вас не устраивает.

Добрый день.

Версия с таким функционалом(выгрузка результатов расчета ЭЛН) планируется к выходу в ближайшее время.

Можно в доп. данные ЛС добавить подобную таблицу(tabel.zip) и поправить алгоритмы чтобы часы брались из этой таблицы...

Только у вас в строках таблицы будут храниться не часы за месяц, а часы за указанный день. 


Не хватает ваших ф-ций TryFindCodeValidOnDate(),IsTimeLS() и возможно что то еще..

TryFindCodeValidOnDate(), которую выкладывал я в соседней теме - возвращает номер строки, а у вас возвращается какая то дата (либо вы неправильно используете результат)?

pos_tvx- позиция вида в ТВХ

получить ее можно через 

return poisk1(intCodeNu,kodnu1,cntplus,1);//intCodeNu - внутренний код вида
  var CL=CreateObject("CombineList");
  var it = CL.CreateIterator();
  for (it.SetBegin();!it.IsEnd();it.Next()) //цикл по должностям (it.CurKey() - внутр.код совместительства )
  {  
    int combine=it.CurKey();   }

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

TryFindCodeValidOnDate(comb,extCode,kDate)
{
  var Prob = CreateObject("APropBE");
  Prob.Init(CLL_TOTAL_SRC,CLL_TOTAL_SUBJECT,CLL_TOTAL_PODR,comb); //инициализируем APropBE вн.кодом совместительства
  int rowkod[ROWMAX];//массив с номерами строк
  int cntrow=poiskosnkodProp(Extern_To_Intern(extCode),rowkod,0,Prob);//получаем список строк с кодом==kod
  for (int row=0; row<cntrow; row++)  
  {
    double ikod=GetCode(rowkod[row]);
    var dbRow=KDateFromD(GetBegDate(rowkod[row]));
    var deRow=KDateFromD(GetEndDate(rowkod[row]));
    if (dbRow.IsValid() && dbRow.GT(kDate)) //вид еще не открыт
      continue;
    
    if (deRow.IsValid() && deRow.LT(kDate)) //вид закрыт
      continue;
      
    return row;  
  }
  return -1;  
}

Использовать так:

var d=KDateFromInt_WithDay(1,mrasch);
if (TryFindCodeValidOnDate(comb,extCode,d)==-1) //вид на 1 первое число расчетного месяца не найден..
{
  //код для открытия вида
}

Существование за какой период нужно проверить ( за расчетный месяц?) ? Как это планируется использовать?

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