تَمرِين - استخدَام بيَانَات الجدول مِن النص البرمجي للكمبيوتر العميل
فِي هذا التَمرِين، يمكنك استخدَام برنَامج نصي للعميل لتطبيق متطلبات العمل المتمثلة فِي إنشَاء أعمدة فِي النموذج المطلوب استنَادًا إلى القيم الموجودة فِي جدول ذي صلة. يمكنك تعيين مستوى متطلبات الأعمدة فِي نموذج الفكرة فِي نموذج تطبيق Innovation Challenge استنَادًا إلى قيمة الأعمدة فِي جدول التحدي. لتحقيق ذلك، يمكنك استخدَام أسَاليب Xrm.WebAPI لاستردَاد البيَانَات ذات الصلة.
مهم
استخدم بيئة اختبار مع توفِير Microsoft Dataverse وعينَات التطبيقَات الممكنة. إذا لم يكن لديك واحدة، يمكنك الاشترَاك فِي خطة المجتمع.
المهمة - تحضير الحل
فِي هذه المهمة، يمكنك إنشَاء حل وإضَافة الجدَاول الموجودة إلى الحل وإضَافة أعمدة جَديدة وإعدَاد النموذج الرئيسي لأحد الجدَاول التي أضفتهَا إلى الحل.
انتقل إلى Power Apps maker portal وتأكَّد مِن أنك فِي البيئة الصحيحة التي تم فِيهَا تمكين عينة التطبيقَات.
حدد الحلول ثم حدد + حل جَديد.
أدخل Innovation Challenge Web APIلاسم العرض، وحدد CDS default publisherللنَاشر، وحدد إنشَاء.
يجب أن يتم فتح حل Innovation Challenge Web API الذي قمت بإنشَائه.
حدد + إضَافة موجود ثم حدد جدول.
أدخل الفكرة فِي مربع نص البحث، وحدد الفكرة، ثم حدد التَالي.
ملاحظة
إذا لم تتَمكن مِن تحديد موقع جدول Idea، فقد لا يكون لديك نمَاذج التطبيقَات فِي بيئتك. حدد بيئة أخرى أو أنشئ بيئة جَديدة مع تثبيت نمَاذج التطبيقَات.
حدد زر تحرير الكَائنَات.
حدد علامة التبويب نمَاذج، وحدد نموذج المعلومَات لنوع النموذج الرئيسي، ثم حدد إضَافة.
حدد إضَافة مرة أخرى.
حدد + إضَافة موجود وحدد جدول مرة أخرى.
ابحث عن التحدي، وحدد التحدي، ثم حدد التَالي.
حدد زر تحرير الكَائنَات.
حدد علامة التبويب نمَاذج، وحدد نموذج المعلومَات لنوع النموذجالرئيسي، ثم حدد إضَافة.
حدد إضَافة مرة أخرى.
افتح جدول التحدي الذي أضفته للتو إلى الحل.
حدد + جَديد ثم حدد العَمود. أنت تقوم بإضَافة عمودين للإشَارة إلى البيَانَات المطلوبة لصفوف الأفكَار التي تم إنشَاؤهَا لهذا التحدي.
أدخل الاستثمَار المطلوب لاسم العرض، وحدد الاختيَار | نعم/لا بالنسبة لنوع البيَانَات، قم بتوسيع الخيَارَات المتقدمة. قم بتدوين بادئةاسم المخطط؛ البادئة الخَاصة بك مختلفة. تحتَاج إلى ذلك عندمَا تقوم بإنشَاء البرنَامج النصي ومَا يجب الرجوع إليه فِي الحقول التي تضيفهَا.
حدد حفظ.
حدد + جَديد ثم حدد عمود مرة أخرى.
أدخل عَائد الاستثمَار المطلوب لاسم العرض، وحدد اختيَار | نعم/لا لنوع البيَانَات، ثم حدد حفظ.
قم بتوسيع جدول التحدي عَلى الجَانب الأيسر ثم حدد النمَاذج.
افتح نموذج المعلومَات الذي أضفته إلى الحل.
حدد علامة التبويب أعمدة الجدول.
أضف عمود الاستثمَار المطلوب إلى النموذج.
أضف عَائد الاستثمَار المطلوب إلى النموذج.
يجب أن يبدو النموذج الآن مثل هذه الصورة. حدد حفظ ونشر. انتظر حتى يتم الانتهَاء مِن النشر.
ارجع إلى الحَل عَن طَريق التحديد عَلى الزر رجوع.
المهمة - إنشَاء البرنَامج النصي للعميل
فِي هذه المهمة، يمكنك إنشَاء برنَامج نصي يقوم بتعيين المستوى المطلوب للأعمدة فِي جدول الفكرة استنَادًا إلى قيم أعمدة جدَاول التحدي.
ابدأ نسخة جَديدة مِن Visual Studio Code أو استخدم محرر التعليمَات البرمجية المفضل لديك. يمكنك تنزيل Visual Studio Code وتثبيته.
حدد فتح المجلد.
قم بإنشَاء مجلد فِي مجلد المستندَات الخَاص بك وقم بتسميته ClientScriptLab.
حدد المجلد ClientScriptLab الذي قمت بإنشَائه وحدد الزر تحديد مجلد.
قم بالتمرير فوق المجلد CLIENTSCRIPTLAB وحدد ملف جَديد.
قم بتسمية الملف IdeaForm.js.
أضف الدَالات الموجودة أدنَاه إلى IdeaForm.js. يجب أن تحتوي وظَائفك إمَا عَلى أسمَاء فريدة أو تستخدم مسَاحة اسم لضمَان التفرد.
function LearnLab_handleIdeaOnLoad(executionContext) { } function LearnLab_handleChallengeOnChange(executionContext) { }أضف هذا البرنَامج النصي إلى وظيفة OnLoad. يسجل هذا البرنَامج النصي معَالج حدث OnChange، وتحتَاج إلى معَالجة التغيير فِي حَالة تغير التحدي ذي الصلة.
var formContext = executionContext.getFormContext(); formContext.getAttribute('sample_originatingchallengeid').addOnChange(LearnLab_handleChallengeOnChange);قم بإضَافة هذا البرنَامج النصي إلى الدَالة OnChange. يحصل هذا الرمز ببسَاطة عَلى formContext.
var formContext = executionContext.getFormContext();أضف هذه الوظيفة إلى ملف IdeaForm. يتم استدعَاء هذه الوظيفة مِن كل مِن وظَائف OnLoad وOnChange ويتم تمرير formContext كوسيطة. هذا هو المكَان الذي تقوم فِيه بتطبيق مِنطق الأعمَال لتعيين مستويَات المتطلبات.
function LearnLab_setRequiredFields(formContext) { }تحصل أولاً عَلى قيم بحث التحدي. أضف هذا البرنَامج النصي إلى وظيفة setRequiredFields. حصلنَا
sample_originatingchallengeidعَلى خصَائص العمود فِي مستكشف الحلول.var challenge = formContext.getAttribute('sample_originatingchallengeid').getValue();يمكنك بعد ذلك التحقق ممَا إذا كَانت قيمة التحدي فارغة. أضف هذا البرنَامج النصي إلى وظيفة setRequiredFields.
if (challenge != null) { } else{ }يمكنك جعل الأعمدة غير مطلوبة إذا كَان التحدي فارغًا. أضف هذا البرنَامج النصي دَاخل ملف else. وهذا يضمِن أنه إذا لم يتم تحديد التحدي فلن تكون الأعمدة مطلوبة.
formContext.getAttribute("sample_investmentrequired").setRequiredLevel('none'); formContext.getAttribute("sample_timetoroimonths").setRequiredLevel('none');يجب أن يبدو نموذج IdeaForm الخَاص بك الآن مثل هذه الصورة.
يمكنك الحصول عَلى معرف التحدي ذي الصلة إذا لم يكن التحدي فارغًا. أضف هذا البرنَامج النصي دَاخل عبارة if.
var challengeId = challenge[0].id;يمكنك الآن استردَاد صف التحدي باستخدَام WebAPI وتحديد العمودين اللذين تهتم بهمَا فقط فِي InvestmentRequired وROIRequired. أضف البرنَامج النصي الوارد أدنَاه دَاخل جملة "إذا".
ملاحظة
استبدل crc8c بالبادئة الخَاصة بك مِن المهمة 1.
Xrm.WebApi.retrieveRecord("sample_challenge", challengeId, "?$select=crc8c_investmentrequired,crc8c_roirequired").then( function success(result) { }, function (error) { } );إذا نجح retrieveRecord، عليك أولاً إنشَاء متغيرين يحتفظَان بقيم المتطلبات لكلا العمودين وتعيين القيمة الأولية لهمَا عَلى غير مطلوب. بعد ذلك تقوم بالتحقق ممَا إذا كَانت الأعمدة مطلوبة وتعيين متغير المتطلبات وفقًا لذلك. أخيرًا قمت بتعيين متطلبات العمود عَلى قيمة المتغير الذي قمت بإنشَائه. أضف هذا البرنَامج النصي دَاخل وظيفة النجَاح. استبدل البادئة cr07c بـ cr07c_investmentrequired وcr07c_roirequired ببادئة الأعمدة التي قمت بإنشَائهَا.
ملاحظة
استبدل crc8c بالبادئة الخَاصة بك مِن المهمة 1.
var investmentRequired = 'none'; var roiRequired = 'none'; if (result.cr07c_investmentrequired) { investmentRequired = 'required'; } if (result.cr07c_roirequired) { roiRequired = 'required'; } formContext.getAttribute("sample_investmentrequired").setRequiredLevel(investmentRequired); formContext.getAttribute("sample_timetoroimonths").setRequiredLevel(roiRequired);تقوم بتسجيل رسَالة الخطأ إذا تسبب retrieveRecord فِي حدوث خطأ. أضف هذا البرنَامج النصي دَاخل وظيفة الخطأ. يمكنك أيضًا استخدَام أسَاليب مِن Xrm.Navigation لإظهَار مربع حوار للمستخدم مع الخيَارَات المِنَاسبة إذا لزم الأمر.
console.log(error.message);يجب أن تبدو وظيفة LearnLab_setRequiredFileds الآن بهذه الصورة.
يمكنك استدعَاء LearnLab_setRequiredFileds مِن الدَالتين OnLoad وOnChange. قم بإضَافة هذا البرنَامج النصي إلى كل مِن وظَائف OnLoad وOnChange.
LearnLab_setRequiredFields(formContext)يجب أن يبدو نموذج IdeaForm الخَاص بك الآن مثل هذه الصورة.
حدد ملف وحفظ الكل.
المهمة - تحميل البرنَامج النصي
فِي هذه المهمة، يمكنك تحميل البرنَامج النصي الذي قمت بإنشَائه فِي بيئتك.
انتقل إلى Power Apps Maker Portal وتأكَّد مِن وجودك فِي البيئة الصحيحة.
حدد الحلول لفَتح حل Innovation Challenge Web API.
حدد + جَديد وحدد المزيد | مورد الويب.
أدخل IdeaForm.jsللاسم، وأدخل IdeaForm.jsللاسم المعروض، وحدد Java script (JS) للنوع، ثم حدد اختيَار ملف.
حدد ملف IdeaForm.js الذي قمت بإنشَائه مسبقًا، ثم حدد فتح.
حدد حفظ.
يجب أن يشتمل الحل الخَاص بك الآن عَلى جدول Challenge وجدول Idea ومورد الويب IdeaForm.js.
لا تغَادر هذه الصَفحَة.
المهمة - تحرير النموذج
فِي هذه المهمة، ستضيف مكتبة JavaScript إلى نموذج الفكرة الرئيسي وتضيف معَالج الأحدَاث إلى حدث OnLoad.
تأكد مِن أنك لا تزَال فِي حل Innovation Challenge Web API.
قم بتوسيع جدول الأفكَار وحدد النمَاذج.
افتح نموذج المعلومَاتالرئيسية.
حدد علامة التبويب مكتبات النمَاذج.
حدد + إضَافة مكتبة.
أدخل الفكرة فِي مربع نص البحث ثم اضغط عَلى Enter. حدد IdeaForm.js، ثم حدد إضَافة.
حدد علامة التبويب الأحدَاث مِن اليمين.
قم بتوسيع قسم On Load وحدد + معَالج الأحدَاث.
أدخل LearnLab_handleIdeaOnLoadللوظيفة، وحدد خَانة الاختيَار تمرير سيَاق التطبيق كمعلمة أولى، وحدد تم.
حدد حفظ ونشر وانتظر حتى يكتمل النشر.
حدد الزر رجوع.
اختر الكل.
حدد تَوزيع كل التخصيصَات وانتظر حتى يكتَمل التَوزيع.
المهمة - الاختبار
فِي هذه المهمة، يمكنك اختبار البرنَامج النصي الخَاص بك.
انتقل إلى Power Apps Maker Portal وتأكَّد مِن وجودك فِي البيئة الصحيحة.
حدد التطبيقَات وقم بتَشغيل تطبيق Innovation Challenge.
حدد التحديَات وافتح أحد صفوف التحدي.
يجب أن يكون الاستثمَار المطلوب وعَائد الاستثمَار المطلوب فارغين. حدد ذات الصلة وحدد الأفكَار.
افتح إحدى الأفكَار.
امسح قيم العمودين الاستثمَار المطلوب والوقت إلى عَائد الاستثمَار (بالأشهر).
الأعمدة غير مطلوبة لأن أعمدة المتطلبات فِي جدول التحدي فارغة. حدد الزر رجوع.
حدد علامة تبويب "التفاصيل" وحدد "نعم" لكل مِن الاستثمَار المطلوب وعَائد الاستثمَار المطلوب.
حدد علامة التبويب الأفكَار وافتح نفس الفكرة التي حددتهَا فِي المرة الأخيرة.
يجب الآن أن يكون العمودين مطلوبين.