Белешка
Приступ овој страници захтева ауторизацију. Можете покушати да се пријавите или промените директоријуме.
Приступ овој страници захтева ауторизацију. Можете покушати да промените директоријуме.
Преузима збирку табела записа.
Синтакса
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Параметре
| Име | Тип | Потребно | Опис |
|---|---|---|---|
entityLogicalName |
String | Да | Табела логичко име записа које желите да преузмете. На пример: account |
options |
String | Не | ОДата опције системског упита или ФетцхXМЛ упит за преузимање података. Погледајте опције |
maxPageSize |
Број | Не | Наведите позитиван број који означава број записа табеле који се враћају по страници. Ако не наведете овај параметар, подразумевана вредност је максимално ограничење од 5.000 записа за стандардне табеле и 500 за еластичне табеле. Ако је број записа које преузимате већи од maxPageSize наведене вредности или максималног ограничења за тип табеле, колона nextLink у враћеном објекту обећања садржи везу за преузимање записа. |
successCallback |
Function | Не | Функција за позивање када се преузму записи табеле. Погледајте повратну вредност |
errorCallback |
Function | Не | Функција за позивање када операција не успе. Објекат са следећим особинама је прошао: - errorCode:Број. Код грешке као позитиван децимални број. На пример, код грешке документован као 0x80040333 ће бити враћен као 2147746611.- message:Ниске. Порука о грешци која описује проблем. |
Опције
Подржане су следеће опције системског упита $select: , $top, , $filter$expand, и $orderby.
Користите опцију системског упита $expand да бисте контролисали који се подаци из повезаних табела враћају. Ако укључите само име особине навигације, добићете све особине за сродне записе. Можете ограничити особине враћене за сродне записе помоћу опције системског упита $select у заградама након имена особине навигације. Користите ову опцију и за једновредне и за колекционосне навигационе особине. За офлајн, подржана је само угнежђена $select опција унутар ње $expand .
Да бисте одредили ФетцхXМЛ упит, користите колону fetchXml да бисте одредили упит.
Белешка
Увек морате да користите опцију системског упита $select да ограничите особине враћене за запис табеле укључивањем листе имена особина раздвојених зарезима. Ова пракса је важна за перформансе. Ако не специфицирате особине користећи $select, све особине се враћају.
Наведите опције упита почевши са ?. Такође можете одредити више опција системског упита користећи & да раздвојите опције упита.
Када наведете ОДата низ упита за options параметар, кодирајте упит за специјалне знакове.
Када наведете ФетцхXМЛ упит за options параметар, немојте кодирати упит.
Да бисте сазнали како да дефинишете параметар options за различите преузимања више сценарија, погледајте Примери .
Враћена вредност
На успех, враћа објекат обећања на следећим successCallback својствима:
| Име | Тип | Опис |
|---|---|---|
entities |
Низ ЈСОН објеката | Сваки објекат представља преузете запис табеле који садржи колоне и њихове вредности као key: value парове. ИД записа табеле се подразумевано преузима. |
nextLink |
String | (опционо) Ако је број записа који се преузимају већи од вредности наведене у параметру maxPageSize у захтеву, ово враћа УРЛ да врати следећу страницу записа. |
fetchXmlPagingCookie |
(опционо) За операцију засновану retrieveMultipleRecords на фетцхXмл-у са страничењем где је укупан број записа већи од вредности страничења, овај атрибут враћа пејџингов колачић који се може користити за наредну фетцхXмл операцију за преузимање следеће странице записа. |
Неподржани типови атрибута за опције упита ОДата у мобилном офлајн уређају
Следећи типови колона нису подржани када користите Xrm.WebApi.retrieveMultipleRecords са опцијама низа упита ОДата (као што $select су и $filter) у мобилном оффлине режиму. Користите ФетцхXМЛ ако вам је потребно да радите са типом атрибута у овој листи неподржаних типова атрибута.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Неподржане функције у мобилном офлајн
Следеће функције нису подржане у мобилном офлајн-у:
- Карактеристике груписања и агрегације
Подржане операције филтрирања по типу атрибута у мобилном офлајну коришћењу ФетцхКСМЛ
Следеће операције су подржане за све типове атрибута када се ради са ФетцхКСМЛ:
- Једнако (
eq) - Није једнако (
neq) - Билтен (
null) - Није нула (
not-null)
Следећа табела наводи више операција подржаних за сваки тип атрибута:
| Тип атрибута | Подржане операције |
|---|---|
| БигИнт , Децимални, Дупли, Цео број | Веће од ( gt)Веће од или једнако ( gte)Мање од ( lt)Мање од или једнако ( lte) |
| Боолеан , купац | У ( in)Није у ( not-in) |
| ЕнтитетИме , Листа за избор, Држава, Статус | Свиђа ми се ( like)Не као ( not-like)Почиње са ( begins-with)Не почиње са ( not-begin-with)Завршава се са ( ends-with)Не завршава са ( not-end-with)У ( in)Није у ( not-in) |
| Гуид , Претрага | У ( in)Није у ( not-in)Једнако ИД корисника ( eq-userid)Није једнако ИД корисника ( ne-userid) |
| Новац | Веће од ( gt)Веће од или једнако ( gte)Мање од ( lt)Мање од или једнако ( lte)У ( in)Није у ( not-in) |
| Власник | У ( in)Није у ( not-in)Једнако ИД корисника ( eq-userid)Није једнако ИД корисника ( ne-userid)Једнака кориснику или тиму ( eq-useroruserteams) |
| String | Свиђа ми се ( like)Не као ( not-like)Почиње са ( begins-with)Не почиње са ( not-begin-with)Завршава се са ( ends-with)Не завршава са ( not-end-with) |
| Датум и време | На или после ( on-or-after)На ( on)На или пре ( on-or-before)Данас ( today)Сутра ( tomorrow)Јуче ( yesterday)Следећих седам дана ( next-seven-days)Последњих седам дана ( last-seven-days)Следеће недеље ( next-week)Прошле недеље ( last-week)Ове недеље ( this-week)Следећи месец ( next-month)Последњи месец ( last-month)Овог месеца ( this-month)Следећа година ( next-year)Прошле године ( last-year)Ове године ( this-year)Последњих X дана ( last-x-days)Следећи X Дани ( next-x-days)Последњих X недеља ( last-x-weeks)Следеће X Недеља ( next-x-weeks)Последњих X месеци ( last-x-months)Следећи X месеци ( next-x-months)Последњих X година ( last-x-years)Следећи X Година ( next-x-years)Веће од ( gt)Веће од или једнако ( gte)Мање од ( lt)Мање од или једнако ( lte) |
Примери
Можете користити метод ретриевеМултиплеРецордс да бисте постигли већину сценарија и примера наведених у Упит подацима користећи Веб АПИ. Неки од примера су наведени у следећем одељку.
Основно преузимање више
Овај пример упита скуп табела рачуна и користи $select$top опције и системски упит да врати својство имена за прва три налога:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Основно преузимање више са ФетцхКСМЛ
Овај пример упита account ентитет користећи фетцхКСМЛ.
var fetchXml = "?fetchXml=<fetch><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";
Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Преузимање или филтрирање по својствима претраге
За већину једновредних особина навигације, можете наћи израчунату особину само за читање која користи следећу конвенцију именовања: _<name>_value где <name> је име једновредне особине навигације. За потребе филтрирања, такође можете користити специфичну вредност једновредне навигационе особине. Међутим , ове опције синтаксе нису подржане за мобилне клијенте у оффлине режиму. Користите име особине за навигацију са једном вредношћу и за преузимање и за филтрирање. Такође , оффлине режим не подржава упоређивање својстава навигације са нулл.
Више информација: Својства претраге
Ево примера кода за оба сценарија:
За онлине сценарио (повезан са сервером)
Овај пример упитује скуп табеле налога и користи $select$filter опције и системски упит да врати име и примарно контактно својство за рачуне који имају одређени примарни контакт:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,_primarycontactid_value&$filter=primarycontactid/contactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
За мобилни оффлине сценарио
Овај пример упита скуп табеле налога и користи $select$filter опције и системски упит да врати име и примарни контактид својство за рачуне који имају одређени примарни контакт када раде у оффлине режиму:
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name,primarycontactid&$filter=primarycontactid eq a0dbf27c-8efb-e511-80d2-00155db07c77").then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Коришћење ФетцхКСМЛ за преузимање или филтрирање по својствима претраге (онлине и оффлине сценарио)
Користите параметар FetchXML док сте на мрежи или ван мреже да бисте преузели name и primarycontactid својство за записе рачуна који имају примарни контакт који одговара услову:
var fetchXml = `?fetchXml=
<fetch>
<entity name='account'>
<attribute name='name'/>
<attribute name='primarycontactid'/>
<link-entity name='contact' from='contactid' to='primarycontactid'>
<filter type='and'>
<condition attribute='lastname' operator='eq' value='Contoso'/>
</filter>
</link-entity>
</entity>
</fetch>`;
Xrm.WebApi.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Наведите број табела које треба вратити на страницу
Следећи пример показује како да користите параметар maxPageSize да одредите да свака страница приказује три записа.
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Next page link: " + result.nextLink);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Овај пример приказује три записа и везу ка следећој страници. Ево примера излаза из конзоле у алатима за програмере претраживача:
{@odata.etag: "W/"1035541"", name: "A. Datum", accountid: "475b158c-541c-e511-80d3-3863bb347ba8"}
@odata.etag: "W/"1035541""accountid: "475b158c-541c-e511-80d3-3863bb347ba8"name: "A. Datum"__proto__: Object
VM5595:4
{@odata.etag: "W/"947306"", name: "Adventure Works", accountid: "a8a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:4
{@odata.etag: "W/"1033754"", name: "Alpine Ski House", accountid: "aaa19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5595:6
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E
Користите део упита у УРЛ-у у особини nextLink као вредност за параметар options у следећем позиву ретриевеМултиплеРецордс да бисте затражили следећи скуп записа. Немојте мењати или додавати више опција системског упита вредности. За сваки наредни захтев за више страница, користите исту maxPageSize вредност коју сте користили у оригиналном захтеву за преузимање вишеструког захтева. Такође , кеширајте враћене резултате или вредност nextLink својства тако да ваша апликација може да врати претходно преузете странице.
На пример, да бисте добили следећу страницу записа, проследите део упита nextLink УРЛ-а параметру options :
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257bAAA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257b475B158C-541C-E511-80D3-3863BB347BA8%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Next page link: " + result.nextLink);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Овај захтев враћа следећу страницу скупа резултата.
{@odata.etag: "W/"1035542"", name: "Blue Yonder Airlines", accountid: "aca19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4
{@odata.etag: "W/"1031348"", name: "City Power & Light", accountid: "aea19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:4
{@odata.etag: "W/"1035543"", name: "Coho Winery", accountid: "b0a19cdd-88df-e311-b8e5-6c3be5a8b200"}
VM5597:6
Next page link: [Organization URI]/api/data/v9.0/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%223%22%20pagingcookie=%22%253ccookie%2520page%253d%25222%2522%253e%253caccountid%2520last%253d%2522%257bB0A19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520first%253d%2522%257bACA19CDD-88DF-E311-B8E5-6C3BE5A8B200%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E
Важно
Вредност имовине nextLink је УРИ кодирана. Ако УРИ кодирате вредност пре него што је пошаљете, информације о КСМЛ колачићима у УРЛ-у изазивају грешку.
ФетцхXМЛ пример (онлине сценарио)
Следећи пример показује како да користите параметар count у ФетцхXМЛ да одредите да свака страница приказује три записа.
Белешка
ФетцхXМЛ пејџинг колачић се враћа само за онлине retrieveMultipleRecords операције. (Xрм.WебАпи.онлине). Није подржан ван мреже.
var fetchXml = "?fetchXml=<fetch count='3'><entity name='account'><attribute name='accountid'/><attribute name='name'/></entity></fetch>";
Xrm.WebApi.online.retrieveMultipleRecords("account", fetchXml).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
console.log("Paging cookie: " + result.fetchXmlPagingCookie);
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Овај пример приказује три записа и враћа ФетцхXМЛ пејџинг колачић да преузме резултате следеће странице ако има више записа у скупу резултата. Ево примера излаза из конзоле у алатима за програмере претраживача:
{
"entities": [
{
"@odata.etag": "W/\"1035542\"",
"accountid": "aca19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "Blue Yonder Airlines"
},
{
"@odata.etag": "W/\"1031348\"",
"accountid": "aea19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "City Power & Light"
},
{
"@odata.etag": "W/\"1035543\"",
"accountid": "b0a19cdd-88df-e311-b8e5-6c3be5a8b200",
"name": "Coho Winery"
}
],
"fetchXmlPagingCookie": "<cookie pagenumber=\"2\" pagingcookie=\"%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b0748C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520first%253d%2522%257bFC47C6EC-55A8-EB11-B1B5-000D3AFEF6FA%257d%2522%2520%252f%253e%253c%252fcookie%253e\" istracking=\"False\" />"
}
Да бисте преузели велике скупове резултата са страничком, користите као fetchXmlPagingCookie што је приказано у следећем примеру.
function CreateXml(fetchXml, pagingCookie, page, count) {
var domParser = new DOMParser();
var xmlSerializer = new XMLSerializer();
var fetchXmlDocument = domParser.parseFromString(fetchXml, "text/xml");
if (page) {
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute("page", page.toString());
}
if (count) {
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute("count", count.toString());
}
if (pagingCookie) {
var cookieDoc = domParser.parseFromString(pagingCookie, "text/xml");
var innerPagingCookie = domParser.parseFromString(
decodeURIComponent(
decodeURIComponent(
cookieDoc
.getElementsByTagName("cookie")[0]
.getAttribute("pagingcookie")
)
),
"text/xml"
);
fetchXmlDocument
.getElementsByTagName("fetch")[0]
.setAttribute(
"paging-cookie",
xmlSerializer.serializeToString(innerPagingCookie)
);
}
return xmlSerializer.serializeToString(fetchXmlDocument);
}
function retrieveAllRecords(entityName, fetchXml, page, count, pagingCookie) {
if (!page) {
page = 0;
}
return retrievePage(entityName, fetchXml, page + 1, count, pagingCookie).then(
function success(pageResults) {
if (pageResults.fetchXmlPagingCookie) {
return retrieveAllRecords(
entityName,
fetchXml,
page + 1,
count,
pageResults.fetchXmlPagingCookie
).then(
function success(results) {
if (results) {
return pageResults.entities.concat(results);
}
},
function error(e) {
throw e;
}
);
} else {
return pageResults.entities;
}
},
function error(e) {
throw e;
}
);
}
function retrievePage(entityName, fetchXml, pageNumber, count, pagingCookie) {
var fetchXml =
"?fetchXml=" + CreateXml(fetchXml, pagingCookie, pageNumber, count);
return Xrm.WebApi.online.retrieveMultipleRecords(entityName, fetchXml).then(
function success(result) {
return result;
},
function error(e) {
throw e;
}
);
}
var count = 3;
var fetchXml =
'<fetch><entity name="account"><attribute name="accountid"/><attribute name="name"/></entity></fetch>';
retrieveAllRecords("account", fetchXml, null, count, null).then(
function success(result) {
console.log(result);
// perform additional operations on retrieved records
},
function error(error) {
console.log(error.message);
// handle error conditions
}
);
Преузмите сродне табеле проширењем својстава навигације
Користите опцију $ еxпанд системски упит у својствима навигације да бисте контролисали податке који се враћају из повезаних табела. Следећи пример показује како да преузмете контакт за све записе налога. За сродне записе контаката, преузимате само поља contactid и fullname :
Xrm.WebApi.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)", 3).then(
function success(result) {
for (var i = 0; i < result.entities.length; i++) {
console.log(result.entities[i]);
}
// perform additional operations on retrieved records
},
function (error) {
console.log(error.message);
// handle error conditions
}
);
Претходни код враћа резултат са шемом као што је:
{
"entities": [
{
"@odata.etag": "W/\"1459919\"",
"name": "Test Account",
"accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
"primarycontactid": {
"contactid": "6c63a1b7-19c6-ea11-a81a-000d3af5e732",
"fullname": "Test Contact"
}
}
]
}
Белешка
Слично онлине сценарију, користите опцију $ еxпанд системски упит да бисте преузели податке из повезаних табела у офлајн-у. Међутим , многи-на-много односи нису подржани у офлајн.
Застарела метода за мобилни оффлине сценарио
Белешка
То @odata.nextLink је застарело за мобилне оффлине сценарије. Иако је и даље подржан за постојеће прилагођавања, немојте га више користити.
Оффлине $ еxпанд операција враћа напомену @odata.nextLink која садржи информације о томе како доћи до информација о повезаном запису. Користите id, entityType, и параметре options те напомене да конструишете један или више додатних Xrm.WebApi.offline.retrieveRecord захтева. Следећи код даје комплетан пример како то урадити:
Xrm.WebApi.offline.retrieveMultipleRecords("account", "?$select=name&$top=3&$expand=primarycontactid($select=contactid,fullname)").then(function(resultSet) {
/**
* resultSet has a structure like:
* {
* "entities": [
* {
* "accountid": "119edfac-19c6-ea11-a81a-000d3af5e732",
* "name": "Test Account",
* "primarycontactid@odata.nextLink": {
* "API": "{Xrm.Mobile.offline}.{retrieveRecord}",
* "id": "119edfac-19c6-ea11-a81a-000d3af5e732",
* "entityType": "account",
* "options": "?$select=accountid&$expand=primarycontactid($select=contactid,fullname)&$getOnlyRelatedEntity=true"
* },
* "primarycontactid": {}
* }
* ]
* }
*
* Notice the empty `primarycontactid` property but an additional `primarycontactid@odata.nextLink`
* annotation that lets us know how to get to the linked data that we need.
**/
var promises = resultSet.entities.map(function(outerItem) {
// We do a retrieveRecord() for every item in the result set of retrieveMultipleRecords() and then
// combine the results into the retrieveMultipleRecords() result set itself.
return Xrm.WebApi.offline.retrieveRecord(
outerItem["primarycontactid@odata.nextLink"].entityType,
outerItem["primarycontactid@odata.nextLink"].id,
outerItem["primarycontactid@odata.nextLink"].options
).then(function(innerResult) {
if (innerResult.value.length === 0) {
return outerItem;
}
outerItem.primarycontactid = innerResult.value[0];
return outerItem;
});
});
return Promise.all(promises);
}).then(function(allResults) {
for (var i = 0; i < allResults.length; i++) {
console.log(allResults[i]);
}
// perform additional operations on retrieved records
}, function(error) {
console.error(error);
// handle error conditions
});
За више примера преузимања више записа помоћу Веб АПИ-ја, погледајте Упит података помоћу Веб АПИ-ја .
Сродни чланци
Упитни подаци помоћу Веб АПИ-ја
Кстрм.ВебАпи.ретриевеРецорд
Српскохрватски / српскохрватски