Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с регламентным отчетом. После запуска примера выполняются следующие операции:
осуществляется получение регламентного отчета;
создается копия регламентного отчета;
создается новый регламентный отчет на основе описания исходного отчёта в репозитории;
извлекается ключ рабочего листа исходного отчета;
извлекается информация о ресурсах нового регламентного отчета;
извлекается контейнер рабочих листов исходного регламентного отчета;
создается новый контейнер рабочих листов с помощью данных, полученных из исходного контейнера;
из исходного контейнера извлекается массив доступных рабочих листов регламентного отчета;
извлекается первый доступный рабочий лист из исходного контейнера рабочих листов;
создается новый рабочий лист с помощью данных, полученных из исходного рабочего листа;
извлекаются наименование и ключ исходного рабочего листа;
извлекается признак видимости нового рабочего листа.
Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:
-(void)executeExample {
// Получаем регламентный отчет
SPPLReport report;
if (m_proceduralReport->qClass<PPLProceduralReport>()) {
report = m_proceduralReport->qClass<PPLProceduralReport>();
// Получаем копию регламентного отчета
SPPLProceduralReport copy = report->copy()->qClass<PPLProceduralReport>();
// Создаем новый регламентный отчет на основе описания исходного отчёта в репозитории
SPPLProceduralReport createdReport = PPLProceduralReport::proceduralReport(report->descriptor());
printf("Ключ рабочего листа регламентного отчета: %d\n",copy->activeSheetKey());
// Выводим информацию о ресурсах нового регламентного отчета
[self printReportResources: createdReport->resources()];
// Выводим информацию о доступных рабочих листах регламентного отчета
[self printWorksheetsInfo: copy->worksheets()];
}
if (m_proceduralReport->qClass<PPLProceduralReport2>()) {
report = m_proceduralReport->qClass<PPLProceduralReport2>();
// Получаем копию регламентного отчета
SPPLProceduralReport2 copy = report->copy()->qClass<PPLProceduralReport2>();
// Создаем новый регламентный отчет на основе описания исходного отчёта в репозитории
SPPLProceduralReport2 createdReport = PPLProceduralReport2::proceduralReport(report->descriptor());
printf("Ключ рабочего листа регламентного отчета: %d\n",copy->activeSheetKey());
// Выводим информацию о доступных рабочих листах регламентного отчета
[self printWorksheetsInfo: copy->worksheets()];
}
}
-(void)printReportResources: (SPPLReportResources) resources {
printf("Идентификатор первого ресурса в новом регламентном отчете: %s\n", resources->items()->objectAtIndex<PPLReportResource>(0)->id()->UTF8String());
}
-(void)printWorksheetsInfo: (SPPLProceduralReportWorksheets) worksheets {
// Получаем данные для списка настроек контейнера рабочих листов
SNArray plist = worksheets->generatePlist()->qClass<NArray>();
// Создаем новый контейнер рабочих листов с помощью списка настроек
SPPLProceduralReportWorksheets createdWorksheets = new PPLProceduralReportWorksheets(plist);
printf("Количество элементов в новом контейнере рабочих листов: %d\n", createdWorksheets->items()->count());
// Получаем массив доступных рабочих листов регламентного отчета
SNArray worksheetItems = worksheets->items();
// Получаем из массива первый рабочий лист
SPPLProceduralReportWorksheet worksheet = worksheetItems->objectAtIndex<PPLProceduralReportWorksheet>(0);
// Получаем данные для списка настроек первого рабочего листа
SNMutableDictionary plist2 = worksheet->generatePlist()->qClass<NMutableDictionary>();
// Создаем новый рабочий лист с помощью списка настроек
SPPLProceduralReportWorksheet createdWorksheet = PPLProceduralReportWorksheet::worksheet(plist2);
printf("Наименование первого рабочего листа: %s\n",worksheet->name()->UTF8String());
printf("Ключ первого рабочего листа: %d\n",worksheet->key());
printf("Признак видимости нового рабочего листа: ");
printf(createdWorksheet->isVisible()? "видимый\n":"невидимый\n");
}
В результате выполнения примера в консоли среды разработки была выведена информация о полученных и созданных регламентных отчетах, информация о контейнере рабочих листов, а также информация о рабочих листах регламентных отчетов:
Ключ рабочего листа регламентного отчета: 8
Идентификатор первого ресурса в новом регламентном отчете: Worksheet_8
Количество элементов в новом контейнере рабочих листов: 4
Наименование первого рабочего листа: Table
Ключ первого рабочего листа: 8
Признак видимости нового рабочего листа: видимый
См. также: