0
Отвечен

Проверка наличия в ЛС определённого вида НУ

Игорь Шалдин 7 месяцев назад в Прочее обновлен Шинкарев Вячеслав (Менеджер разработки) 7 месяцев назад 2

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

Протестировал скрипт выложенный в теме Как проверить наличие в ЛС действующего вида "районный коэффициент" по заданному источнику.

Выяснилось следующее:

Если в ЛС несколько совместительств с одним и тем же источником - всё нормально.

Если в  ЛС несколько совместительств с разными источниками (или разными наборами исчточников) - всё плохо...



На картинке видно, что скрипт пытается найти вид 119 по источнику "Г", присутствующему в ИД с кодом 2, в ИД с кодом 1, и не находит, потому что такого источника по этому совместительству нет.

Как можно поправить скрипт?

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

Добрый день.

Перед CheckNotExistCod добавьте проверку наличия сумм по источнику

Вам ведь РК нужен только на тех источниках где есть суммы?

if(IsAnySummExist(prop,month))
{
  //делаем проверку через CheckNotExistCod 
}


IsAnySummExist(prop,month)
{
  char dopstbuf[MAXKOD];
  memcpy(dopstbuf,dopst,MAXKOD);
  probely(dopst,MAXKOD-1,'1');
 
  double sum    = CollectSummPropSimv("1",'d',month,0,CL_M |CL_COL|CL_NACH|CL_POSITIVE|CL_SOURCE,prop);
                 sum   += CollectSummPropSimv("1",'d',month,0,CL_M |CL_COL|CL_NACH|CL_NEGATIVE|CL_SOURCE,prop);
  double sumMV  = CollectSummPropSimv("1",'d',0,month,CL_MV|CL_COL|CL_NACH|CL_POSITIVE|CL_SOURCE,prop);
                 sumMV += CollectSummPropSimv("1",'d',0,month,CL_MV|CL_COL|CL_NACH|CL_NEGATIVE|CL_SOURCE,prop);
  
    memcpy(dopst,dopstbuf,MAXKOD);//восстанавливаем...
    return (nabs(sum)+nabs(sumMV)>0.00001)?true:false;
}

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