Вытащить данные из другого объекта в CRM 3.0?

У меня есть форма с тремя полями, которые я хотел бы заполнить на основе трех атрибутов другой сущности. Какой лучший способ сделать это? Я попробовал это, основываясь на материалах, которые я нашел в Интернете:

if (crmForm.all.new_name.DataValue == null) { return; }
var sdk = new XrmDataContext(null, null);
var id = crmForm.all.new_name.DataValue[0].id;
var fetchXml = "<fetch mapping=\"logical\"><entity name=\"mag_identificationtype\"><all-attributes /><filter type=\"and\"><condition attribute=\"new_advertisingrate\" operator=\"eq\" value=\"" + id + "\" /></filter></entity></fetch>";
var result = sdk.Fetch(fetchXml);
for (var i = 0; i < result.length; i++) {
crmForm.all.new_mediapaymentplan.DataValue = parseFloat(result[i].attributes["new_mediapaymentplan"]);
}
for (var i = 0; i < result.length; i++) {
crmForm.all.new_yellowpagepayment.DataValue = parseFloat(result[i].attributes["new_fixed_yellowpages_fee"]);
}
for (var i = 0; i < result.length; i++) {
crmForm.all.new_extrapayment.DataValue = parseFloat(result[i].attributes["new_extraadvertisingpayment"]);
}

... но это не работает, и я подозреваю, что это потому, что он предназначен для 4.0. Есть ли способ сделать это в 3.0, и если да, то что это?

2 ответа

Вы правы в том, что вы используете в своем коде Advanced Developer Extensions для MS CRM 4.0, и он не будет работать на 3.0.

Есть несколько способов сделать это в MS CRM 3.0.

  1. Вы можете использовать сборку Callout, когда объект или связанный объект создается или обновляется.

  2. Вы можете использовать пользовательский рабочий процесс, когда объект или связанный объект создается или обновляется.

  3. Вы можете создать запланированное приложение для заполнения этих полей.

  4. Вы можете вызвать веб-сервисы CRM из JavaScript в форме, чтобы найти эти поля.

Что мне не понятно, так это то, как эти сущности связаны. 1:N или N:1

Раньше у меня была похожая проблема, как сказал Марк, вы используете классы в CRM 4 и более, разработанные сообществом XRM.

В вашем случае я бы использовал необработанный вызов веб-службы с XMLHTTP, как показано в этой статье.

http://blog.customereffective.com/blog/2008/02/calling-the-crm.html

http://ayazahmad.wordpress.com/2006/12/14/calling-custom-web-services-through-mscrm-30-form-a-way-to-duplicate-detection/

Во-первых, для вызова служб CRM, и я думаю, что пример, объясненный на нем, взят из CRM 3.0. С другой стороны, вторая ссылка говорит только о вызове веб-службы из javascript, процесс такой же, как и при вызове веб-службы CRM, единственное, что вам нужно изменить, - это URL-адрес конечной точки.

Способ сделать это - создать конверт SOAP вручную. Я помню, что была какая-то библиотека javascript для извлечения, создания, обновления... от javascript до CRM, но не помню, где это, и я думаю, что это было сделано для CRM 4.0, в любом случае, я собираюсь найти и разместите это здесь.

Увидимся

РЕДАКТИРОВАТЬ:

Эта ссылка содержит некоторую информацию о том, что я объяснил:

https://community.dynamics.com/product/crm/crmtechnical/b/crmdelvingintodynamics/archive/2008/07/11/a-microsoft-dynamics-crm-javascript-sdk.aspx

Раньше у Ascentium был CRM SDK для javascript в их сети, но большая часть доступной ссылки теперь отправляется в блог Avanade, так что это хорошее место для поиска дополнительной информации.

http://blogs.infinite-x.net/2008/07/15/ascentium-crmservice-javascript-library/

http://www.avanadeblog.com/xrm/

Но следите за версией, к которой он подготовлен.

Увидимся.

Другие вопросы по тегам