Я написал сценарий потока приложений на основе веб-протокола, в котором мне нужно выбрать 20 отчетов для загрузки. Идентификаторы ReportID отображаются в запросе. Я настраиваю запрос таким образом, чтобы запрос собирал 20 отчетов (ReportID), которые являются либо EXCEL, либо CSV (ReportOutput), а статус — успех (ReportStatus). Я успешно захватил параметры LR через традиционный "wsrp" с Ord = All, и вот моя логика
int i;
int count=0;
char ro_buffer[25],rs_buffer[25];
lr_save_string("","R_buffer");
for(i=0;i<=atoi(lr_eval_string("{ReportID_count}");i++)
{
sprintf(RO_buffer,"%s",lr_paramarr_idx(ReportOutput,i))
sprintf(RS_buffer,"%s",lr_paramarr_idx(ReportStatus,i))
if((lr_eval_string(ro_buffer)=="EXCEL" || lr_eval_string(ro_buffer) =="CSV") && lr_eval_string(rs_buffer)=="S")
{
count++;
if(count>20) break;
lr_param_sprintf("R_buffer","%s%s%2c",lr_eval_string("{R_buffer}"),lr_paramarr_idx(ReportID,i));
}
}
В приведенном выше коде vugen не выполняет код внутри блока if, даже если условие удовлетворяет, то есть когда формат вывода отчета — «EXCEL» или «CSV», а состояние отчета — «S». Даже из ответа сервера я вижу, что значения успешно выводятся в соответствии с блоком if. Я также использовал синтаксис lr_param_sprintf вместо sprintf, но ситуация точно такая же. Но бесполезно. Не могу понять, что такое недостающая точка.... Нужна помощь в этом..