Transformation: JSON;
Свойство Transformation определяет трансформации сервиса для работы с экспресс-отчетом.
Значение свойства устанавливается с помощью метода setTransformation, а возвращается с помощью метода getTransformation. Из JSON значение свойства задать нельзя.
Параметры метода setTransformation:
- report: PP.Exp.EaxAnalyzer. Модель экспресс-отчета, которой устанавливаются трансформации;
- transformations: Array of Object. Массив объектов трансформации;
- transformOperation: PP.Exp.TransfOperationType. Тип операции;
- returnTransformations: Boolean. Признак получения всех трансформаций. Если для параметра установлено значение true, то в функцию обратного вызова будут возвращены все трансформации сервиса;
- callback: Function. Функция обратного вызова.
Параметры метода getTransformation:
- report: PP.Exp.EaxAnalyzer. Модель экспресс-отчета, у которой получаются трансформации;
- dimKey: Number. Ключ измерения;
- dimElKey: Number. Ключ элемента измерения;
- transfKey: Number. Ключ трансформации; Если для параметра установлено значение null, то будут возвращены все трансформации сервиса;
- callback: Function. Функция обратного вызова.
Для выполнения примера необходимо наличие на html-странице компонента TransformDialog с наименованием «dialog» (см. «Пример создания компонента TransformDialog»). Должно быть открыто измерение с ключом 109, а в данном измерении должен присутствовать элемент с ключом 225. В качестве этих ключей можно использовать собственные значения.
Добавим новую трансформацию в сервис экспресс-отчета, а затем определим формулу, соответствующую данной трансформации:
// Получаем документ экспресс-отчета var source = expressBox.getSource(); // Получаем сервис для работы с экспресс-отчетом var service = expressBox.getSource().getPPService(); var transformation; var dimKey = 109; var elemId = 225; // Добавляем новую трансформацию в сервис экспресс-отчета transformation = { enabled: true, expression: "2010", vis: true, elemId: elemId, dimkey: dimKey, k: 0, isFilter: false, formulaTransform: { calculationDirection: "Forward", calculationType: "Serie" } } // Устанавливаем данную трансформацию service.setTransformation(source, [transformation], PP.Exp.TransfOperationType.Add, false); // Получаем трансформацию service.getTransformation(expressBox.getSource(), dimKey, elemId, null, function(sender,args) { var res = args && args.ResponseText && JSON.parse(args.ResponseText); var transformers = this._Items = PP.getProperty(res, 'GetEaxMdResult.meta.transformations.its.Item') || []; transformation = transformers[0]; if(transformation) { console.log("Формула расчёта для элемента %s: %s", elemId, transformation.expression); } });
В результате выполнения примера в консоли браузера была выведена формула расчёта для элемента с ключом 225:
Формула расчёта для элемента 225: 2010
Установим наименование для созданной трансформации и сохраним её настройки:
// Устанавливаем наименование трансформации transformation.name = "Custom transformation"; if(transformation.isFilter) { // Обновляем настройки трансформации service.updateFilterTransformation(source, transformation); } else { // Сохраняем настройки трансформации service.setTransformationState(source, PP.Exp.TransfType.CalcTransformations, PP.Exp.TransfState.Save, dimKey, elemId); } // Определяем наименование трансформации var tKey; service.getTransformation(expressBox.getSource(), dimKey, elemId, null, function(sender, args) { var res = args && args.ResponseText && JSON.parse(args.ResponseText); var transformers = this._Items = PP.getProperty(res, 'GetEaxMdResult.meta.transformations.its.Item') || []; console.log("Наименование трансформации: " + transformers[0].name); tKey = transformers[0].k; });
В результате в консоль было выведено наименование обновленной трансформации:
Наименование трансформации: Custom transformation
Установим новую позицию трансформации в соответствующей коллекции:
// Устанавливаем новую позицию трансформации service.setTransformationPos(source, tKey, 1);
В результате трансформация-фильтр была перемещена в коллекции.
См. также: