Filter: IMobilePublishRubricatorFilter;
Filter: Prognoz.Platform.Interop.Mobile.IMobilePublishRubricatorFilter;
Свойство Filter определяет параметры фильтрации атрибутов БД временных рядов.
На основании фильтра атрибутов формируется отметка, отображаемая в мобильном приложении при открытии рабочей книги, которая использует данную БД временных рядов в качестве источника данных.
Для выполнения примера в репозитории предполагается наличие мобильного приложения с идентификатором «MA_PUB», содержащего рабочую книгу БД временных рядов. В файловой системе должен содержаться файл «C:\TSDB_att.xml» с параметрами фильтрации атрибутов БД временных рядов, которая является источником данных для рабочей книги из мобильного приложения «MA_PUB».
Добавьте ссылки на системные сборки Metabase, Mobile, Xml, Forms.
Sub UserProc;
Var
mb: IMetabase;
Mobile: IMobileApplication;
Publicator: IMobileApplicationPublicator;
MaPubObs: IMobileApplicationPublishObjects;
i, j: Integer;
MaPubObj: IMobileApplicationPublishObject;
PubObj: IMobilePublishObject;
RubPubObj: IMobilePublishRubricator;
Filter: IMobilePublishRubricatorFilter;
FilterAttr: IMobilePublishRubricatorAttributeFilter;
res: MobilePublishObjectResult;
XmlDoc, xmlAttr: IXmlDomDocument3;
el: IXmlDomElement;
Begin
mb := MetabaseClass.Active;
// Получаем мобильное приложение (МП)
Mobile := mb.ItemById("MA_PUB").Bind As IMobileApplication;
// Создаем публикатор МП
Publicator := Mobile.CreatePublicator;
// Получаем объекты МП
MaPubObs := Publicator.Items;
For i := 0 To MaPubObs.Count - 1 Do
MaPubObj := MaPubObs.Item(i);
// Выбираем среди объектов БД временных рядов
If (MaPubObj.Type = MobilePublishObjectType.Rubricator) And (MaPubObj.IsValid) Then
PubObj := MaPubObj.PublishObject;
RubPubObj := PubObj As IMobilePublishRubricator;
// Создаем пустой фильтр атрибутов
Filter := New MobilePublishRubricatorFilter.Create;
// Загружаем параметры фильтрации из файла
XmlDoc := New DOMDocument60.Create;
XmlDoc.load("C:\TSDB_att.xml");
el := XmlDoc.selectSingleNode("Root") As IXmlDomElement;
Filter.LoadFromXml(el);
// Настраиваем параметры фильтрации
For j := 0 To Filter.Count - 1 Do
// Задаем параметры сохранения в формате XML
xmlAttr := New DOMDocument60.Create;
el := XmlDoc.createElement("Root");
xmlAttr.appendChild(el);
// Получаем параметры фильтрации атрибута БД временных рядов
FilterAttr := Filter.Item(j);
// Устанавливаем порядок сортировки по значениям атрибута KEY
FilterAttr.ElementsSortDirection := SortDirection.Ascending;
FilterAttr.SortType := ControlSortType.Custom;
FilterAttr.SortAttribute := "KEY";
// Сбрасываем отметку значений атрибута
FilterAttr.Selection := Null;
// Сохраняем параметры фильтрации атрибута
FilterAttr.SaveToXml(el);
xmlAttr.save("C:\TSDB_att_" + j.ToString + "(" + FilterAttr.Key.ToString + ").xml");
End For;
// Выгружаем измененные параметры фильтрации
XmlDoc := New DOMDocument60.Create;
el := XmlDoc.createElement("Root");
XmlDoc.appendChild(el);
Filter.SaveToXml(el);
XmlDoc.save("C:\TSDB_att_chg.xml");
// Устанавливаем параметры фильтрации атрибутов для БД временных рядов
RubPubObj.Filter := Filter;
// Указываем путь для публикации
PubObj.ExportPath := "C:\" + PubObj.Object.Id + ".zip";
// Публикуем рабочую БД временных рядов
res := PubObj.Publish;
// Выводим результат в окно консоли
If (res As integer) = 0 Then
Debug.WriteLine("Публикация выполнена успешно");
Debug.WriteLine(" Путь публикации: " + PubObj.ExportPath);
Else
Debug.WriteLine("При публикации возникла ошибка");
End If;
End If;
End For;
End Sub UserProc;
Результат выполнения примера: из файла «C:\TSDB_att.xml» будут загружены параметры фильтрации атрибутов БД временных рядов. Загруженные параметры будут изменены и установлены для БД временных рядов, которая является источником данных для рабочей книги из мобильного приложения «MA_PUB». Параметры фильтрации каждого атрибута и измененные параметры фильтрации всех атрибутов будут сохранены в формате XML.
Для выполнения примера в репозитории предполагается наличие мобильного приложения с идентификатором «MA_PUB», содержащего рабочую книгу БД временных рядов. В файловой системе должен содержаться файл «C:\TSDB_att.xml» с параметрами фильтрации атрибутов БД временных рядов, которая является источником данных для рабочей книги из мобильного приложения «MA_PUB».
Imports Prognoz.Platform.Interop.Forms;
Imports Prognoz.Platform.Interop.Mobile;
Imports Prognoz.Platform.Interop.MsXml2;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
Mobile: IMobileApplication;
Publicator: IMobileApplicationPublicator;
MaPubObs: IMobileApplicationPublishObjects;
i, j: Integer;
MaPubObj: IMobileApplicationPublishObject;
PubObj: IMobilePublishObject;
RubPubObj: IMobilePublishRubricator;
Filter: MobilePublishRubricatorFilter;
FilterAttr: IMobilePublishRubricatorAttributeFilter;
res: MobilePublishObjectResult;
XmlDoc, xmlAttr: IXmlDomDocument3;
el: IXmlDomElement;
Begin
mb := Params.Metabase;
// Получаем мобильное приложение (МП)
Mobile := mb.ItemById["MA_PUB"].Bind() As IMobileApplication;
// Создаем публикатор МП
Publicator := Mobile.CreatePublicator();
// Получаем объекты МП
MaPubObs := Publicator.Items;
For i := 0 To MaPubObs.Count - 1 Do
MaPubObj := MaPubObs.Item[i];
// Выбираем среди объектов БД временных рядов
If (MaPubObj.Type = MobilePublishObjectType.mpotRubricator) And (MaPubObj.IsValid) Then
PubObj := MaPubObj.PublishObject;
RubPubObj := PubObj As IMobilePublishRubricator;
// Создаем пустой фильтр атрибутов
Filter := New MobilePublishRubricatorFilter.Create();
// Загружаем параметры фильтрации из файла
XmlDoc := New DOMDocument60.Create();
XmlDoc.load("C:\TSDB_att.xml");
el := XmlDoc.selectSingleNode("Root") As IXmlDomElement;
Filter.LoadFromXml(el);
// Настраиваем параметры фильтрации
For j := 0 To Filter.Count - 1 Do
// Задаем параметры сохранения в формате XML
xmlAttr := New DOMDocument60.Create();
el := XmlDoc.createElement("Root");
xmlAttr.appendChild(el);
// Получаем параметры фильтрации атрибута БД временных рядов
FilterAttr := Filter.Item[j];
// Устанавливаем порядок сортировки по значениям атрибута KEY
FilterAttr.ElementsSortDirection := SortDirection.sdAscending;
FilterAttr.SortType := ControlSortType.cstCustom;
FilterAttr.SortAttribute := "KEY";
// Сбрасываем отметку значений атрибута
FilterAttr.Selection := Null;
// Сохраняем параметры фильтрации атрибута
FilterAttr.SaveToXml(el);
xmlAttr.save("C:\TSDB_att_" + j.ToString() + "(" + FilterAttr.Key.ToString() + ").xml");
End For;
// Выгружаем измененные параметры фильтрации
XmlDoc := New DOMDocument60.Create();
el := XmlDoc.createElement("Root");
XmlDoc.appendChild(el);
Filter.SaveToXml(el);
XmlDoc.save("C:\TSDB_att_chg.xml");
// Устанавливаем параметры фильтрации атрибутов для БД временных рядов
RubPubObj.Filter := Filter;
// Указываем путь для публикации
PubObj.ExportPath := "C:\" + PubObj.Object.Id + ".zip";
// Публикуем рабочую БД временных рядов
res := PubObj.Publish(Null);
// Выводим результат в окно консоли
If (res As integer) = 0 Then
System.Diagnostics.Debug.WriteLine("Публикация выполнена успешно");
System.Diagnostics.Debug.WriteLine(" Путь публикации: " + PubObj.ExportPath);
Else
System.Diagnostics.Debug.WriteLine("При публикации возникла ошибка");
End If;
End If;
End For;
End Sub;
Результат выполнения примера: из файла «C:\TSDB_att.xml» будут загружены параметры фильтрации атрибутов БД временных рядов. Загруженные параметры будут изменены и установлены для БД временных рядов, которая является источником данных для рабочей книги из мобильного приложения «MA_PUB». Параметры фильтрации каждого атрибута и измененные параметры фильтрации всех атрибутов будут сохранены в формате XML.
См. также: