Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Кесте жазбаларының жиынтығын қалпына келтіреді.
Синтаксис
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Параметрлер
| РаT� | РаT� | Талап етіледі | Сипаттамасы |
|---|---|---|---|
entityLogicalName |
String | Иә | Қалпына келтіргіңіз келетін жазбалардың кестенің логикалық атауы. Мысалы: account. |
options |
String | Жоқ | Деректерді алу үшін OData жүйелік сұрау параметрлері немесе FetchXML сұрауы. Параметрлерді қарау |
maxPageSize |
Саны | Жоқ | Бір бетке қайтарылатын кесте жазбаларының санын көрсететін оң санды көрсетіңіз. Егер бұл параметрді көрсетпесеңіз, әдепкі мән стандартты кестелер үшін 5000 жазба, серпімді кестелер үшін 500 жазбаның максималды шегіне дейін белгіленеді. Егер алынатын жазбалар саны кесте түрі үшін көрсетілген maxPageSize мәннен немесе ең үлкен шектен көп болса, қайтарылған уәде нысындағы бағанда nextLink жазбаларды алу үшін сілтеме болады. |
successCallback |
Function | Жоқ | Кесте жазбалары қалпына келтірілген кезде шақырылатын функция. Қайтаратын мәнді қараңыз |
errorCallback |
Function | Жоқ | Операция істен шыққанда қоңырау шалу функциясы. Келесі қасиеттері бар нысан беріледі: - errorCode: Сан. Қате коды оң ондық сан ретінде. Мысалы, құжатталған 0x80040333 қате коды ретінде 2147746611қайтарылады.- message: Жол. Ақауды сипаттайтын қате туралы хабар. |
Параметрлер
Келесі жүйелік сұрау параметрлеріне қолдау көрсетіледі: $select, , $top$filter, $expandжәне $orderby.
Байланысты кестелерден қайтарылған деректерді басқару үшін жүйелік сұрау параметрін пайдаланыңыз $expand . Егер шарлау сипатының атауын ғана қоссаңыз, байланысты жазбалар үшін барлық сипаттарды аласыз. Шарлау сипаты атауынан кейін жақшадағы жүйелік сұрау параметрін пайдаланып $select байланысты жазбалар үшін қайтарылған сипаттарды шектеуге болады. Мұны бір мәнді және жиындық мәнді шарлау сипаттары үшін пайдаланыңыз. Офлайн режимінде біз тек кірістірілген $select$expandопцияны қолдайтынымызды ескеріңіз.
FetchXML сұрауын көрсету үшін сұрауды көрсету үшін бағанды пайдаланыңыз fetchXml .
Ескертпе
Кесте жазбасы үшін қайтарылған қасиеттерді үтірмен бөлінген қасиеттер тізімін қосу арқылы әрдайым жүйелік сұрау параметрін пайдалануыңыз $selectкерек. Бұл үздік тәжірибенің маңызды көрсеткіші. Егер сипаттамалар пайдаланылмаса $select, барлық қасиеттер қайтарылады.
Сұрау параметрлерін келесіден бастап ?көрсетіңіз. Сондай-ақ, сұрау параметрлерін бөлу арқылы & бірнеше жүйелік сұрау параметрлерін көрсетуге болады.
Параметр үшін options OData сұрау жолын көрсеткенде, сұрау арнайы таңбалар үшін кодталуы керек .
Параметр үшін options FetchXML сұрауын көрсеткенде, сұрау кодталмауы керек.
Бірнеше сценарийлерді алу үшін параметрді қалай анықтауға options болатындығын көру үшін Мысалдарды қараңыз.
Қайтаратын мән
Сәттілік кезінде келесі қасиеттері бар уәде нысанын successCallback қайтарады:
| РаT� | РаT� | Сипаттамасы |
|---|---|---|
entities |
JSON нысандарының массивы | Әрбір нысан бағандар мен олардың мәндерін жұп түрінде key: value қамтитын алынған кесте жазбасын білдіреді. Кесте жазбасының идентификаторы әдепкі бойынша қалпына келтіріледі |
nextLink |
String | (міндетті емес) Егер алынатын жазбалар саны сұрау параметрінде maxPageSize көрсетілген мәннен көп болса, бұл жазбалардың келесі бетін қайтару үшін URL мекенжайын қайтарады. |
fetchXmlPagingCookie |
(міндетті емес) Жалпы жазбалар саны беттер мәнінен үлкен болатын paging функциясы бар fetchXml retrieveMultipleRecords негізіндегі операция үшін бұл атрибут жазбалардың келесі бетін алу үшін кейінгі fetchXml операциясы үшін пайдалануға болатын беттік cookie файлын қайтарады. |
Мобильді офлайн режиміндегі OData сұрау параметрлері үшін қолдау көрсетілмейтін атрибут түрлері
Мобильді офлайн режимінде OData сұрау жолының параметрлерімен (мысалы, $select және $filter) операцияны Xrm.WebApi.retrieveMultipleRecords орындау кезінде келесі Баған түрлеріне қолдау көрсетілмейді. Егер жұмыс істеу керек атрибут түрі қолдау көрсетілмейтін атрибут түрлері тізімінде болса, FetchXML бағдарламасын пайдалануыңыз керек.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
Mobile Offline бағдарламасындағы қолдау көрсетілмейтін мүмкіндіктер
Мобильді офлайн режимінде келесі мүмкіндіктерге қолдау көрсетілмейді:
- Топтау және біріктіру мүмкіндіктері
FetchXML көмегімен Mobile Offline бағдарламасында атрибут түріне арналған сүзгілеу операциялары
FetchXML бағдарламасымен жұмыс істеген кезде барлық атрибут түрлері үшін келесі операцияларға қолдау көрсетіледі:
- Теңдеу (
eq) - Тең емес (
neq) - Нөлдік (
null) - Нөл емес (
not-null)
Келесі кестеде әрбір атрибут түрі үшін қолдау көрсетілетін қосымша операциялар тізімделген:
| Атрибут түрі | Қолдау көрсетілетін операциялар |
|---|---|
| BigInt, ондық, қос, бүтін сан | Одан да үлкен (gt)Үлкен немесе тең ( gte)Төмен ( lt)Кіші немесе тең ( lte) |
| Boolean, Тапсырыс беруші | Ішінде (in)Кірмейді ( not-in) |
| EntityName, Таңдау тізімі, Күй, Күй | Ұнайды (like)Ұқсамайды ( not-like)Басталады ( begins-with)Бастауыш емес ( not-begin-with)Аяқталады ( ends-with)Аяқталмайды ( not-end-with)Ішінде ( in)Кірмейді ( not-in) |
| Гуид, Іздеу | Ішінде (in)Кірмейді ( not-in)Пайдаланушы идентификаторына тең ( eq-userid)Пайдаланушы идентификаторына тең емес ( ne-userid) |
| Money | Одан да үлкен (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 ( on-or-before)Бүгін ( today)Ертең ( tomorrow)Кеше ( yesterday)Келесі 7 күн next-seven-days ()Соңғы 7 күн ( 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) |
Мысалдар
Веб-API арқылы деректерді сұрау бөлімінде айтылған сценарийлердің/мысалдардың көпшілігіне retrieveMultipleRecords әдісін пайдалану арқылы қол жеткізуге болады. Кейбір мысалдар төменде келтірілген.
Көпшілікті негізгі алу
Бұл мысалда шоттар кестесі жиынтығын сұрайды және алғашқы үш тіркелгі үшін атау сипатын қайтару үшін және $top жүйелік сұрау параметрлерін пайдаланады$select:
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
}
);
FetchXML көмегімен бірнеше алуын негізгі
Бұл мысал fetchXML көмегімен нысанға сұралады 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> мәнді шарлау сипатының атауы. Сүзгілеу мақсатында бір мәнді шарлау сипатының нақты мәнін де пайдалануға болады. Алайда, офлайн режиміндегі мобильді клиенттер үшін бұл синтаксис параметрлеріне қолдау көрсетілмейді және бір мәнді шарлау сипаты атауын алу және сүзу үшін пайдалану керек. Сондай-ақ, шарлау сипаттарын null параметрімен салыстыру офлайн режимде қолдау көрсетілмейді.
Қосымша ақпарат: Іздеу сипаттары
Міне, екі сценарий үшін де код мысалдары:
Онлайн сценарий үшін (серверге қосылған)
Бұл мысал шоттар кестесінің жиынтығын сұрайды және белгілі бір негізгі контактісі бар тіркелгілер үшін атау мен primarycontactid сипатын қайтару үшін және $filter жүйелік сұрау параметрлерін пайдаланады$select:
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
}
);
Мобильді офлайн сценарийі үшін
Бұл мысалда тіркелгілер кестесі жиынтығын сұрайды және офлайн режимде жұмыс істеген кезде белгілі бір негізгі контактісі бар тіркелгілер үшін атау мен primarycontactid сипатын қайтару үшін және $filter жүйелік сұрау параметрлерін пайдаланады$select:
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 бағдарламасын пайдалану (желідегі және офлайн сценарий)
Шартқа сәйкес келетін негізгі контактісі бар тіркелгі жазбалары үшін және primarycontactid сипатын алу үшін параметрді желіде немесе офлайн name режимінде пайдалануға FetchXML болады:
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
}
);
Бетте қайтарылатын кестелер санын көрсету
Келесі мысалда (3) бетте көрсетілетін жазбалар санын анықтау үшін параметрді қолдану 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 URL мекенжайындағы сұрау бөлігін кейінгі retrieveMultipleRecords шақыруындағы параметрдің options мәні ретінде пайдаланыңыз. Мәнге басқа жүйелік сұрау параметрлерін өзгертпеңіз немесе қоспаңыз. Қосымша беттерге арналған әрбір келесі сұрау үшін бастапқы бірнеше сұрауда пайдаланылған бірдей maxPageSize мәнді пайдалануыңыз керек. Сондай-ақ, бұрын алынған беттерді қайтару үшін қайтарылған нәтижелерді немесе nextLink сипатының мәнін кэштеңіз.
Мысалы, жазбалардың келесі бетін алу үшін URL options мекенжайының nextLink сұрау бөлігін параметрге жібереміз:
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 құндылығы URI кодталған. Егер URI мәнді жібермес бұрын кодтасаңыз, URL мекенжайындағы XML cookie ақпараты қате тудырады.
FetchXML мысалы (желідегі сценарий)
Келесі мысалда бетте көрсетілетін жазбалар санын (3) анықтау үшін FetchXML параметрін пайдалану count көрсетілген.
Ескертпе
FetchXML беттегі cookie файлдары тек онлайн retrieveMultipleRecords операциялар үшін қайтарылады. (Xrm.WebApi.online). Офлайн режимінде қолдау көрсетілмейді.
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
}
);
Бұл мысал үш жазбаны көрсетеді және нәтиже жиынтығына жататын көп жазбалар болса, келесі беттің нәтижелерін алу үшін FetchXML беттік cookie файлын қайтарады. Міне, браузерді әзірлеуші құралдарындағы консольден алынған мысал келтірілген:
{
"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
}
);
Шарлау сипаттарын кеңейту арқылы байланысты кестелерді алу
Байланысты кестелерден қайтарылатын деректерді басқару үшін шарлау сипаттарындағы $expand жүйелік сұрау параметрін пайдаланыңыз. Келесі мысал барлық тіркелгі жазбалары үшін контактіні қалай қалпына келтіруге болатындығын көрсетеді. Байланысты байланыс жазбалары үшін біз тек 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"
}
}
]
}
Ескертпе
Онлайн сценарийге ұқсас, офлайн режимінде байланысты кестелерден деректерді алу үшін $expand жүйелік сұрау параметрін пайдаланыңыз. Алайда, көпшілік қарым-қатынас офлайн режимінде қолдау көрсетілмейді.
Мобильді офлайн сценарийіне арналған ескірген әдіс
Ескертпе
@odata.nextLink Мобильді офлайн сценарийлер үшін ескірген. Ол әлі де қолданыстағы теңшеулерге қолдау көрсетілгенімен, оны енді пайдалану ұсынылмайды.
Офлайн $expand операциясы тиісті жазба ақпаратына қалай жету керектігі туралы ақпаратты қамтитын аннотацияны қайтарады @odata.nextLink . Біз бір немесе бірнеше қосымша Xrm.WebApi.offline.retrieveRecord сұраныс (лар) құру үшін осы аннотацияның , entityTypeжәне options параметрін қолданамызid. Келесі мақаладаБұл әдісті қалай жасау керектігі туралы толық мысал келтірілген:
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
});
Web API арқылы бірнеше жазбаларды алудың қосымша мысалдары үшін Web API арқылы деректерді сұрау бөлімін қараңыз.
Қатысты мақалалар
Web API көмегімен сұрау деректері
Xrm.WebApi.retrieveRecord
Xrm.WebAPI