Работа с регламентным отчетом

Требования к операционной системе: 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

Признак видимости нового рабочего листа: видимый

См. также:

Примеры использования библиотеки pplib++