Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере выполняется работа с источником данных аналитической панели и его контейнером. После его запуска выполняются следующие операции:
возвращается первое измерение источника данных аналитической панели;
определяются идентификатор, ключ, наименование, количество изменений измерения источника данных;
определяются идентификатор, ключ и наименование измерения в аналитической панели;
определяется, является ли измерение уникальным и связано ли с объектом источника данных;
создаётся справочник с настройками источника данных, на основе которого создаётся объект источника с новым значением его идентификатора в аналитической панели.
Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Отображение аналитической панели») следующий код:
-(void)executeExample {
// Получаем контейнер измерений источника данных
SPPLDashboardDataSourceDimensionObjects dimensionObjects1 =
m_dashboardReport->dataSourceDimensionObjects();
if (dimensionObjects1 != NULL) {
// Создаём справочник с настройками контейнера измерения источника данных
SNMutableArray objectDescriptions = dimensionObjects1->generatePlist()->qClass<NMutableArray>();
if (objectDescriptions->count() > 0) {
// Получаем первое измерение источника данных
SPPLDashboardDataSourceDimensionObject dimensionObject1 =
[self getDimensionObjectFromObjects: objectDescriptions ByIndex:0];
// Создаём справочник с настройками измерений источника данных
SNMutableDictionary plist1 = dimensionObject1->generatePlist()->qClass<NMutableDictionary>();
// Устанавливаем для первого измерения источника данных новое значение идентификатора
plist1->setObjectForKey(NNumber::numberWithInt(5), NStr("changeCounter"));
// Создаём на основе справочника второй объект источника данных
SPPLDashboardDataSourceDimensionObject dimensionObject2 =
PPLDashboardDataSourceDimensionObject::dimensionObject(plist1, m_dashboardReport->dataSourceObjects());
// Выводим информацию о данном измерении
[self showDimensionObjectInfo: dimensionObject2];
}
}
}
// Возвращает измерение источника данных по индексу
-(SPPLDashboardDataSourceDimensionObject) getDimensionObjectFromObjects: (SNArray)objectDescriptions
ByIndex: (int) index {
// Получаем измерения источника данных
SPPLDashboardDataSourceDimensionObjects dimensionObjects =
PPLDashboardDataSourceDimensionObjects::dimensionObjects(
objectDescriptions,
m_dashboardReport->dataSourceObjects());
// Получаем измерение источника данных по индексу
SNString dimensionObjectId = dimensionObjects->objects()->objectAtIndex(index)->qClass<PPLDashboardDataSourceDimensionObject>()->dashboardRelatedId();
SNString dataSourceObjectId = m_dashboardReport->dataSourceObjects()->objects()->
objectAtIndex(index)->qClass<PPLDashboardDataSourceObject>()->dashboardRelatedId();
return dimensionObjects->getDimensionObject(dimensionObjectId, dataSourceObjectId);
}
// Выводит информацию об измерении источника данных
-(void)showDimensionObjectInfo: (SPPLDashboardDataSourceDimensionObject) dimensionObject {
printf("Идентификатор измерения в источнике данных: %s \n", dimensionObject->id()->UTF8String());
printf("Ключ измерения в источнике данных: %lld \n", dimensionObject->key());
printf("Наименование измерения в источнике данных: %s \n", dimensionObject->name()->UTF8String());
printf("Количество изменений измерения в источнике данных: %lld \n", dimensionObject->changeCounter());
printf("Идентификатор измерения источника данных в аналитической панели: %s \n",
dimensionObject->dashboardRelatedId()->UTF8String());
printf("Ключ измерения источника данных в аналитической панели: %lld \n",
dimensionObject->dashboardRelatedKey());
printf("Наименование измерения источника данных в аналитической панели: %s \n",
dimensionObject->dashboardRelatedName()->UTF8String());
// Проверяем измерение источника данных на уникальность
if(dimensionObject->isOriginal()) {
printf("Измерение источника данных является уникальным \n");
} else {
printf("Измерение источника данных не является уникальным \n");
}
// Получаем объект источника данных
SPPLDashboardDataSourceObject dataSourceObject =
dimensionObject->dataSourceObject();
// Проверяем, связано ли измерение с объектом источника данных
if(dimensionObject->isLinkedDSO()) {
// Получаем связанный объект источника данных
SPPLDashboardDataSourceObject dataSourceObject =
dimensionObject->dataSourceObject();
printf("Измерение связано с объектом источника данных %s \n", dataSourceObject->id()->UTF8String());
} else {
printf("Измерение не связано с объектом источника данных %s \n", dataSourceObject->id()->UTF8String());
}
}
В результате выполнения примера в консоли среды разработки была выведена информация о первом измерении источника данных аналитической панели:
Идентификатор измерения в источнике данных: FACTS_98
Ключ измерения в источнике данных: 98
Наименование измерения в источнике данных: Факты
Количество изменений измерения в источнике данных: 5
Идентификатор измерения источника данных в аналитической панели: DIMITEM
Ключ измерения источника данных в аналитической панели: 1
Наименование измерения источника данных в аналитической панели: Факты
Измерение источника данных является уникальным
Измерение не связано с объектом источника данных OBJ9630
См. также: