Пример использования операции GetObjects для получения списка объектов заданных классов в заданной папке репозитория. Перед получением списка будет произведено обновление дерева репозитория, а также очистка кэша. Для объектов будут извлечены: ключи, идентификаторы, идентификаторы класса и даты создания. Список объектов будет упорядочен по возрастанию даты создания объекта.
{
"GetObjects" :
{
"tParent" :
{
"id" : "S1!M!65"
},
"tFilter" :
{
"levels" : "-1",
"hideEmptyFolders" : "true",
"hideAllFolders" : "false",
"limit" : "-1",
"classes" :
{
"it" :
[
{
"k" : "1537"
},
{
"k" : "1538"
}
]
}
},
"tArg" :
{
"pattern" :
{
"n" : "false",
"i" : "true",
"ts" : "false",
"ds" : "false",
"isShortcut" : "false"
},
"refresh" :
{
"all" : "true"
},
"orderBy" :
{
"asc" : "true",
"attribute" : "Timestamp"
}
}
}
}
{
"GetObjectsResult" :
{
"id" :
{
"id" : "S1!M!65"
},
"objects" :
{
"its" :
{
"d" :
[
{
"@ts" : "2012-01-19T11:18:43.000Z",
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "OBJ66",
"n" : "",
"k" : "66",
"c" : "1537",
"p" : "65",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
{
"@ts" : "2014-08-14T11:36:26.000Z",
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "OBJ90",
"n" : "",
"k" : "90",
"c" : "1538",
"p" : "65",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
{
"@ts" : "2020-02-26T12:39:23.995Z",
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "NEWFORM1",
"n" : "",
"k" : "176176",
"c" : "1538",
"p" : "65",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
},
{
"@ts" : "2020-02-26T12:39:25.401Z",
"@isShortcut" : "0",
"@isLink" : "0",
"@hf" : "0",
"i" : "NEWFORM2",
"n" : "",
"k" : "176177",
"c" : "1538",
"p" : "65",
"h" : "0",
"hasPrv" : "0",
"ic" : "0"
}
]
}
}
}
}
Указанная ниже функция GetObjectsByClass осуществляет отбор всех объектов указанных классов в рамках указанного родительского объекта. Поиск в скрытых папках и различных объектах-контейнерах не производится. В качестве входных параметров функции передаются моникёр соединения с репозиторием, идентификатор родительского объекта и классы искомых объектов. Результатом работы функции является коллекция описаний отобранных объектов.
В примере используется функция FindObjectById, код которой приведен в примере «Получение описания объекта по его идентификатору».
public static Ods GetObjectsByClass(MbId mb, string parent, OdClass[] classes)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tObject = new GetObjects()
{
//Указание извлекаемой информации
tArg = new GetObjectsArg()
{
//Извлекать: ключи, идентификаторы и идентификаторы класса
//Сортировать по возрастанию даты создания
orderBy = new OdsOrderBy()
{
asc = true,
attribute = OdAttribute.Timestamp
},
pattern = new OdsPattern()
{
ds = false,
i = true,
isShortcut = false,
n = false,
ts = false
},
refresh = new MbRefresh()
{
all = true,
},
},
tFilter = new OdsFilt()
{
classes = classes,
limit = -1,
levels = -1,
hideAllFolders = false,
hideEmptyFolders = true
},
//Указание идентификатора объекта, среди дочерних объектов которого будет производиться поиск
tParent = new OdId()
{
id = mb.id + "!" + FindObjectById(mb, parent).k
}
};
//Получение списка объектов в соответствии с указанными параметрами отбора
var result = somClient.GetObjects(tObject);
return result.objects;
}
См. также: