Ваши комментарии
Правильнее поместить код, который ищет нужную строку, в отдельную функцию
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 FiltrRowkod(rowkod,cntrow, kDate.GetAbs(), 1); //отфильтровываем из массива недействующие 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 rowkod[row]; } return -1; }
и обработать ситуацию, когда строку не нашли ( функция вернула -1)
rowCode742=TryFindCodeValidOnDate(CLL_TOTAL_COMBINE,742,kDate); if (rowCode742!=-1)//нашли вид 742 return GetIDCombineOfCod(GetCode(rowCode742));
break там кажется по ошибке стоит, должен быть continue
а после того как нашли нужную строку в заданном период - запоминаете row и ставите break
можно не придумывать, а выложить сохраненку с ЛС
переименуйте rowMy в rowCount иначе потом сами запутаетесь
jrow я был переименовал в rowIndex и инициализировал внутри цикла:
for( int rowIndex=0; rowIndex<rowCount;rowIndex++ ) { }
дату начала и окончания строки можно определять так
var dbRow=KDateFromD(GetBegDate(rowkod[rowIndex]));
var deRow=KDateFromD(GetEndDate(rowkod[rowIndex]));
не придумывайте..
rvvid работает по точному коду, который вы ей передали.
Источник в этой функции не анализируется
Обращаю внимание на ошибку в вашем коде
int rowMy=poiskosnkodprop
функция возвращает не номер строки, а количество найденных строк!
номера строк записываются в массив rowkod
Матрицу с1 я получил выше приведенной функцией
1)poiskosnkodprop() - это функция для поиска строк НУ.
2)Зная номер нужной вам строки, вы получаете точный код вида:
double code = GetCode(row);
3)РВ по виду определяется так:
double rv=0; rvvid("=",code,0,rv);
з.ы. Так и не увидел описание того, что хотите получить в конечном итоге..
Если вопрос по конкретной функции - напишите ее название.
Если задача более сложная - не надо ее пытаться описывать с помощью функций..
Опишите задачу "словами бухгалтера"..
Конкретный пример ЛС с суммами - укорит процесс
вид начисления с определенной суммовой базой с учетом РВ
что это значит?
Сервис поддержки клиентов работает на платформе UserEcho
У вас на GetTime свет клином сошелся?
Почему вы игнорируете мой совет выложить сохраненку с кодом, который не работает при использовании rvvid?