0
Отвечен
Как извлечь допреквизит вида НУ
Игорь Шалдин 7 лет назад
в Расчеты начислений и удержаний / Алгоритмы
•
обновлен Гашков Николай (Эксперт) 7 лет назад •
2
Здравствуйте.
Извлекаю значение допреквизита "kfc" из строки вида начисления с внутренним кодом 4:
StartRkv(4);
ReadRkv("kfc",st);
FinishRkv();
Но если видов с внутренним кодом 4 в ЛС несколько (действующий один, остальные закрыты), то в переменную st записывается значение допреквизита вида с минимальным расширением.
Как можно извлечь допреквизит вида действующего в расчётном месяце?
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день.
P.S.
для пункта 1 можно использовать такой код:
double code=GetFirstValidNuCode(); //////////// GetFirstValidNuCode() { int stolbec=25; string sims="1"; var nuList=GetValidNuList(mrasch,stolbec,sims); //список точных внутренних кодов видов НУ (действующих в указанном месяце) if(nuList.Size()<1) //нет действующих видов return -1; nuList.InitIterator(); return atof(nuList.GetCurKey());//возвращаем первый } //////////// GetValidNuList(m,stolb,Simv) { var map=CreateObject("MapString");map.Clear(); var db=KDateFromInt_WithDay(1,m); //первое число var de=KDateFromInt_LastDay(m); //последнее число for (int i=0;i < cntplus;i++) { char Sim[2];Sim[1]=0; Sim[0]=Sim_For_Intern_Cod(kodnu1[i],stolb-1); //определяем символ в ТВХ if ( IsSubStrPresent(Simv,"*")&&(Sim!="0") || IsSubStrPresent(Simv,Sim)) { int rowkod[ROWMAX];//массив с номерами строк var Prop=GetCommonProp(CMN_SRC_COUNT_LS);//определяем атрибуты глобального фильтра int cntrow=poiskosnkodProp(kodnu1[i],rowkod,0,Prop);//получаем список строк с внутренним кодом==kodnu1[i] for (int row=0; row < cntrow; row++) //перебираем все строки { var dbRow = KDateFromD(GetBegDate(rowkod[row])); var deRow = KDateFromD(GetEndDate(rowkod[row])); //фильтр на действующие строки if (( dbRow.IsValid() && dbRow.GT(de))|| //дата_начала вида больше даты окончания периода (deRow.IsValid() && deRow.LT(db)) ) //дата_окончания вида меньше даты начала период continue; map.Add(to_string(GetCode(rowkod[row])),""); } } } return map; }