Ниже приведен пример использования операции OpenWbk для открытия рабочей книги только для чтения. В запросе передаются: экземпляр рабочей книги и шаблон извлечения данных. В ответе приходят запрошенные данные.
{
"OpenWbk" :
{
"tOb" :
{
"id" : "S1!M!5505"
},
"tArg" :
{
"args" :
{
"openForEdit" : "false"
},
"metaGet" :
{
"obInst" : "true",
"series" : "Get",
"seriesFilter" :
{
"includeCollapsed" : "true"
},
"period" : "true",
"rubrs" : "true",
"rubrArg" :
{
"obInst" : "true",
"period" : "true"
}
}
}
}
}
{
"OpenWbkResult" :
{
"id" :
{
"id" : "S1!M!S!W2"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@isShortcut" : "0",
"@isLink" : "0",
"i" : "WBK_AD",
"n" : "Годовые данные",
"k" : "5505",
"c" : "2827", "p" : "5471", "h" : "0" }, "openArgs" : "" }, "windowsPosition" : "Vertical", "hasPivot" : "0", "hasLaner" : "1", "series" :
{
"@count" : "3",
"its" :
{
"it" :
[
{
"k" : "2",
"id" : "OBJ2",
"n" : "USA|A",
"vis" : "1", "kind" : "Calculate", "selectedUnit" : "", "tag" : "", "hasChildren" : "0", "index" : "0", "expanded" : "0", "level" : "Year", "childrenCount" : "0", "visibleChildrenCount" : "0",
"flags" : "0"
},
{
"k" : "4",
"id" : "OBJ4",
"n" : "Canada|A",
"vis" : "1",
"kind" : "Calculate",
"selectedUnit" : "",
"tag" : "",
"hasChildren" : "0",
"index" : "1",
"expanded" : "0",
"level" : "Year",
"childrenCount" : "0",
"visibleChildrenCount" : "0",
"flags" : "0"
},
{
"k" : "6",
"id" : "OBJ6", "n" : "Russia|A", "vis" : "1", "kind" : "Calculate", "selectedUnit" : "", "tag" : "", "hasChildren" : "0", "index" : "2", "expanded" : "0", "level" : "Year",
"childrenCount" : "0", "visibleChildrenCount" : "0", "flags" : "0" } ] }, "displayDataAs" : "CalculatedValues", "autoRecalc" : "1" }, "period" :
{
"start" : "1995-01-01",
"end" : "2015-01-01"
},
"rubrs" :
{
"def" :
{
"k" : "5472",
"id" : "TS_DB",
"n" : "БД временных рядов",
"vis" : "1",
"rubId" :
{
"id" : "S1!M!S!W2!Rubs!5472"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@isShortcut" : "0",
"@isLink" : "0",
"i" : "TS_DB",
"n" : "БД временных рядов",
"k" : "5472",
"c" : "2822",
"p" : "5471",
"h" : "0"
},
"openArgs" : ""
},
"period" :
{
"startYear" : "1980",
"endYear" : "2020"
},
"properties" :
{
"@lightWeight" : "0", "@valuesOnQuery" : "0", "@factsOnQuery" : "0", "@hasMnemonics" : "1", "@revisionsOnQuery" : "0", "@keepHistory" : "1", "@autoUpdateStat" : "1", "@useDistinctSequence" : "0", "@unitIsRequired" : "0", "@compoundFactorKey" : "0",
"@hasEmptyAttribute" : "0"
}
}
},
"its" :
{
"it" :
[
{
"k" : "5472",
"id" : "TS_DB",
"n" : "БД временных рядов",
"vis" : "1",
"rubId" :
{
"id" : "S1!M!S!W2!Rubs!5472"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@isShortcut" : "0",
"@isLink" : "0",
"i" : "TS_DB",
"n" : "БД временных рядов",
"k" : "5472",
"c" : "2822",
"p" : "5471",
"h" : "0"
},
"openArgs" : ""
},
"period" :
{
"startYear" : "1980",
"endYear" : "2020"
},
"properties" :
{
"@lightWeight" : "0",
"@valuesOnQuery" : "0",
"@factsOnQuery" : "0",
"@hasMnemonics" : "1",
"@revisionsOnQuery" : "0",
"@keepHistory" : "1",
"@autoUpdateStat" : "1",
"@useDistinctSequence" : "0",
"@unitIsRequired" : "0",
"@compoundFactorKey" : "0", "@hasEmptyAttribute" : "0" } } } ] } } } } }
Функция OpenWbkForRead открывает рабочую книгу для чтения данных. Входные параметры:
mb. Моникёр соединения с репозиторием;
wbkId. Идентификатор рабочей книги.
После выполнения функция возвращает результат открытия рабочей книги. В окно консоли выводятся запрошенные данные.
public static OpenWbkResult OpenWbkForRead(MbId mb, string wbkId)
{
var tWbk = new OpenWbk()
{ // Задаём параметры выполнения операции
tArg = new OpenWbkArg()
{// Указываем, что открываем рабочую книгу для чтения
args = new WbkOpenArgs()
{
openForEdit = false
},// Задаём шаблон извлечения данных
metaGet = new WbkMdPattern()
{
viewMode = true, // режим просмотра
series = ListOperation.Get, // ряды данных
seriesFilter = new LnSeriesFilter()
{// Извлекаем свернутые ряды
includeCollapsed = true
},
period = true, // параметры периода отображения данных
rubrs = true, // источники данных
rubrArg = new RubMdPattern() {period = true}
}
},// Указываем рабочую книгу, с которой выполняем операцию
tOb = new OdId() { id = mb.id + "!" + FindObjectById(mb, wbkId).k }
};
// Создаем прокси-объект для выполнения операции
var somClient = new SomPortTypeClient();
// Выполняем операцию
var tResult = somClient.OpenWbk(tWbk);
Console.WriteLine("Открыта рабочая книга: " + tResult.id.id);
WbkMd openWbk = tResult.meta;
LnPeriod period = openWbk.period;
Console.WriteLine("Период отображения данных:");
Console.WriteLine("".PadRight(3) + "- начало: " + period.start.ToShortDateString());
Console.WriteLine("".PadRight(3) + "- окончание: " + period.end.ToShortDateString());
Console.WriteLine("Режим отображения рабочей книги: " + openWbk.viewMode.Value);
Console.WriteLine("Количество рядов: " + openWbk.series.count.ToString());
LnRubs rubrs = openWbk.rubrs;
Console.WriteLine("Идентификатор источника, используемого по умолчанию: " + rubrs.def.id);
Console.WriteLine("Все источники данных:");
foreach (LnRub rub in (rubrs.its))
{
Console.Write("".PadRight(3) + "- имя '" + rub.n);
Console.WriteLine("'; идентификатор '" + rub.id + "'");
Console.WriteLine("".PadRight(6) + "начало календаря: " + rub.meta.period.startYear.ToString());
Console.WriteLine("".PadRight(6) + "окончание календаря: " + rub.meta.period.endYear.ToString());
}
return tResult;
}
См. также:
SOAP