הערה
גישה לעמוד זה דורשת אישור. אתה יכול לנסות להיכנס או לשנות תיקיות.
גישה לעמוד זה דורשת אישור. אתה יכול לנסות לשנות מדריכים.
אחזור אוסף של רשומות טבלה.
תחביר
Xrm.WebApi.retrieveMultipleRecords(entityLogicalName, options, maxPageSize).then(successCallback, errorCallback);
Parameters
| שם | Type | נדרש | תיאור |
|---|---|---|---|
entityLogicalName |
String | כן | השם הלוגי של הטבלה של הרשומות שברצונך לאחזר. לדוגמה: account. |
options |
String | לא | אפשרויות שאילתה של מערכת OData או שאילתת FetchXML כדי לאחזר את הנתונים שלך. ראה אפשרויות |
maxPageSize |
מספר | לא | ציין מספר חיובי המציין את מספר רשומות הטבלה שיש להחזיר בכל עמוד. אם לא תציין פרמטר זה, הערך יוגבל כברירת מחדל למגבלה המרבית של 5,000 רשומות עבור טבלאות רגילות, 500 עבור טבלאות אלסטיות. אם מספר הרשומות המאוחזרות maxPageSize גדול מהערך שצוין או מהמגבלה המרבית עבור סוג הטבלה, nextLink העמודה באובייקט המוחזר promise תכלול קישור לאחזור רשומות. |
successCallback |
פונקציה | לא | פונקציה להתקשרות בעת אחזור רשומות טבלה. ראה ערך החזרה |
errorCallback |
פונקציה | לא | פונקציה שיש לקרוא לה כאשר הפעולה נכשלת. אובייקט עם המאפיינים הבאים מועבר: - errorCode:מספר. קוד השגיאה כמספר עשרוני חיובי. לדוגמה, קוד השגיאה שתועד כפי 0x80040333 שהוא יוחזר בתור 2147746611.- message:מחרוזת. הודעת שגיאה המתארת את הבעיה. |
אפשרויות
אפשרויות שאילתת המערכת הבאות נתמכות: $select, $top, $filter, ו $expand- $orderby.
השתמש באפשרות $expand שאילתת המערכת כדי לקבוע אילו נתונים מטבלאות קשורות יוחזרו. אם תכלול רק את שם מאפיין הניווט, תקבל את כל המאפיינים עבור רשומות קשורות. באפשרותך להגביל את המאפיינים המוחזרים עבור רשומות $select קשורות באמצעות אפשרות שאילתת המערכת בסוגריים לאחר שם מאפיין הניווט. השתמש באפשרות זו הן עבור מאפייני ניווט בעלי ערך יחיד והן עבור מאפייני ניווט בעלי ערך אוסף . שים לב שעבור מצב לא מקוון, אנו תומכים רק באפשרות המקוננת $select בתוך $expand.
כדי לציין שאילתת FetchXML, השתמש בעמודה כדי fetchXml לציין את השאילתה.
הערה
עליך להשתמש תמיד באפשרות שאילתת $selectהמערכת כדי להגביל את המאפיינים המוחזרים עבור רשומת טבלה על-ידי הכללת רשימה מופרדת באמצעות פסיקים של שמות מאפיינים. זוהי שיטת עבודה מומלצת חשובה לביצועים. אם מאפיינים לא מצוינים באמצעות $select, כל המאפיינים יוחזרו.
עליך לציין את אפשרויות השאילתה המתחילות ב- ?. באפשרותך גם לציין אפשרויות מרובות של שאילתת מערכת באמצעות הפרד & בין אפשרויות השאילתה.
בעת ציון מחרוזת שאילתה של OData עבור הפרמטר options , יש לקודד את השאילתה עבור תווים מיוחדים.
בעת ציון שאילתת FetchXML עבור הפרמטר options , אין לקודד את השאילתה.
ראה דוגמאות כדי לראות כיצד באפשרותך להגדיר את הפרמטר עבור options תרחישים מרובים לאחזור שונים.
ערך החזרה
בעת הצלחה, החזרת אובייקט promise ל- successCallback עם המאפיינים הבאים:
| שם | Type | תיאור |
|---|---|---|
entities |
מערך של אובייקטי JSON | כל אובייקט מייצג את רשומת הטבלה המאוחזרת המכילה עמודות והערכים שלהן כזוגות key: value . המזהה של רשומת הטבלה מאוחזר כברירת מחדל |
nextLink |
String | (אופציונלי) אם מספר הרשומות המאוחזרות maxPageSize גדול מהערך שצוין בפרמטר בבקשה, פעולה זו מחזירה את כתובת ה- URL כדי להחזיר את דף הרשומות הבא. |
fetchXmlPagingCookie |
(אופציונלי) עבור פעולה מבוססת-fetchXml retrieveMultipleRecords עם עימוד שבו ספירת הרשומות הכוללת גדולה מערך ההחלפה, תכונה זו מחזירה את קובץ ה- Cookie של ההחלפה שניתן להשתמש בו עבור פעולת fetchXml הבאה כדי לאחזר את עמוד הרשומות הבא. |
סוגי תכונות שאינם נתמכים עבור אפשרויות שאילתת OData במכשירים ניידים לא מקוונים
סוגי העמודות הבאים אינם נתמכים Xrm.WebApi.retrieveMultipleRecords בעת ביצוע פעולה עם אפשרויות מחרוזת שאילתה של OData (לדוגמה, $select$filterו- ) במצב לא מקוון נייד. עליך להשתמש ב- FetchXML אם סוג התכונה שעליך לעבוד איתו נמצא ברשימה זו של סוגי תכונות שאינם נתמכים.
MultiSelectPicklistFileImageManagedPropertyCalendarRulesPartyListVirtual
תכונות שאינן נתמכות במכשירים ניידים במצב לא מקוון
התכונות הבאות אינן נתמכות במכשירים ניידים במצב לא מקוון:
- תכונות קיבוץ וצבירה
פעולות סינון נתמכות לכל סוג תכונה במכשיר נייד לא מקוון באמצעות FetchXML
הפעולות הבאות נתמכות עבור כל סוגי התכונות בעת עבודה עם FetchXML:
- שווה ל- (
eq) - לא שווה ל- (
neq) - Null (
null) - Not Null (
not-null)
הטבלה הבאה מפרטת פעולות נוספות הנתמכות עבור כל סוג תכונה:
| סוג תכונה | פעולות נתמכות |
|---|---|
| BigInt, עשרוני, כפול, מספר שלם | גדול מ- (gt)גדול או שווה ( gte)קטן מ- ( lt)קטן או שווה ( lte) |
| בוליאני, לקוח | In (in)לא נמצא ב- ( not-in) |
| EntityName, Picklist, State, Status | אהבתי (like)לא אהבתי ( not-like)מתחיל ב- ( begins-with)לא מתחיל ב- ( not-begin-with)מסתיים ב- ( ends-with)לא מסתיים ב- ( not-end-with)In ( in)לא נמצא ב- ( not-in) |
| GUID, בדיקת מידע | In (in)לא נמצא ב- ( not-in)שווה מזהה משתמש ( eq-userid)מזהה משתמש לא שווה ( ne-userid) |
| Money | גדול מ- (gt)גדול או שווה ( gte)קטן מ- ( lt)קטן או שווה ( lte)In ( in)לא נמצא ב- ( not-in) |
| Owner | 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) |
דוגמאות
ניתן להשיג את רוב התרחישים/הדוגמאות המוזכרים מנתוני שאילתה באמצעות ה- API של האינטרנט באמצעות פעולת השירות retrieveMultipleRecords . חלק מהדוגמאות מפורטות להלן.
אחזור בסיסי מרובה
דוגמה זו בשאילתות בערכת טבלת החשבונות ומשתמשת באפשרויות $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
}
);
אחזור מרובה בסיסי עם FetchXML
דוגמה זו מבצעת שאילתות לישות account באמצעות fetchXML.
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 אינה נתמכת במצב לא מקוון.
מידע נוסף: מאפייני בדיקת מידע
להלן דוגמאות קוד עבור שני התרחישים:
עבור תרחיש מקוון (מחובר לשרת)
דוגמה זו השאילתה את $select$filter ערכת טבלת החשבונות ומשתמשת באפשרויות שאילתת המערכת ו כדי להחזיר את השם ואת המאפיין primarycontactid עבור חשבונות שיש להם איש קשר ראשי מסוים:
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 ערכת טבלת החשבונות ומשתמשת באפשרויות שאילתת המערכת ו כדי להחזיר את השם ואת המאפיין primarycontactid עבור חשבונות שיש להם איש קשר ראשי מסוים בעת עבודה במצב לא מקוון:
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 לאחזור או לסינון לפי מאפייני בדיקת מידע (תרחיש מקוון ולא מקוון)
באפשרותך להשתמש בפרמטר 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 כדי לציין את מספר הרשומות (3) שיוצגו בדף.
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
השתמש בחלק השאילתה בכתובת ה- URL nextLinkoptions במאפיין כערך עבור הפרמטר בשיחה הבאה מסוג retrieveMultipleRecords כדי לבקש את קבוצת הרשומות הבאה. אל תשנה או תוסיף לערך אפשרויות נוספות של שאילתת מערכת. עבור כל בקשה נוספת עבור עמודים נוספים, עליך להשתמש באותו ערך המשמש maxPageSize בבקשה המקורית לאחזור מרובה. כמו כן, אחחסן במטמון את התוצאות שהוחזרו או את הערך של המאפיין nextLink כך שניתן יהיה להחזיר דפים שאוחזרו בעבר.
לדוגמה, כדי לקבל את העמוד הבא של הרשומות, נ מעביר את חלק השאילתה של כתובת nextLink ה- URL לפרמטר 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 מקודד באמצעות URI. אם אתה מקודד את הערך לפני שליחתו של ה- URI, פרטי קובץ ה- Cookie של XML בכתובת ה- URL עשויים לגרום לשגיאה.
FetchXML דוגמה (תרחיש מקוון)
הדוגמה הבאה מדגימה את השימוש count בפרמטר FetchXML כדי לציין את מספר הרשומות (3) שיוצגו בדף.
הערה
קובץ ה- Cookie של ההחלפה FetchXML מוחזר רק עבור פעולות 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
}
);
דוגמה זו תציג שלוש רשומות ותחזיר קובץ Cookie של עימוד FetchXML כדי לאחזר את התוצאות של הדף הבא אם יש רשומות נוספות השייכות לערכת התוצאות. להלן פלט לדוגמה מהמסוף בכלים למפתחים של הדפדפן:
{
"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 שאילתת המערכת במ מאפייני הניווט כדי לשלוט בנתונים המוחזרים מטבלאות קשורות. הדוגמה הבאה מדגימה כיצד לאחזר את איש הקשר עבור כל רשומות החשבון. עבור רשומות אנשי הקשר הקשורות, אנו מאחזרים רק את ה- וfullname- contactid :
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 ביאור המכיל מידע אודות אופן הכניסה למידע של הרשומה הקשורה. אנו משתמשים בפרמטר 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
});
לקבלת דוגמאות נוספות לאחזור רשומות מרובות באמצעות WEB API, ראה ביצוע שאילתה על נתונים באמצעות ה- API של האינטרנט.
מאמרים קשורים
ביצוע שאילתה על נתונים באמצעות ה- API של האינטרנט
Xrm.WebApi.retrieveRecord
Xrm.WebApi