|
29.10.2009, 18:42 | #1 |
Участник
|
Значение поля по атрибуту
Добрый день!
Есть веб-сервис, в котором по заданным именам аттрибутов и GUID сущности нужно получить соответствующие значения полей. Как это можно сделать? То есть, есть определенная карточка, есть названия атрибутов - нужно программно получить данные из полей, которые соответствуют этим самым атрибутам. Спасибо. |
|
29.10.2009, 23:00 | #2 |
Участник
|
Доброго времени суток!
Если нужно получить значение поля из связанной записи с помощью JScript, то поможет функция: /* Получение атрибута * / /* getAttributeValueFromID(objecttypename,guid,fieldname)); */ /* objecttypename - имя сущности, guid - идентификатор, fieldname - имя поля */ getAttributeValueFromID = function(sEntityName, GUID, sAttributeName) { var xml = [ "<?xml version='1.0' encoding='utf-8'?>", "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" ", "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ", "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">", GenerateAuthenticationHeader(), "<soap:Body>", "<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>", "<entityName>", sEntityName, "</entityName>", "<id>", GUID, "</id>", "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>", "<q1:Attributes>", "<q1:Attribute>", sAttributeName, "</q1:Attribute>", "</q1:Attributes>", "</columnSet>", "</Retrieve>", "</soap:Body>", "</soap:Envelope>" ].join(""); var resultXml = executeSoapRequest("Retrieve",xml) var errorCount = resultXml.selectNodes('//error').length; var resultnode = resultXml.selectSingleNode("//q1:" + sAttributeName) var result=null; if (resultnode!=null) result = resultnode.nodeTypedValue; if (errorCount != 0) { var msg = resultXml.selectSingleNode('//description').nodeTypedValue; result = " "; alert(msg); } else { return result; } } |
|
30.10.2009, 09:29 | #3 |
Moderator
|
Опишите подробнее задачу. На первый взгляд она кажется надуманной: эти данные можно вычитать из веб сервиса CRM, так что незачем заводить дополнительный. Если дополнительный все же нужен, то рекомендую воспользоваться методом Retrive у СrmService
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
30.10.2009, 10:08 | #4 |
Участник
|
Цитата:
Попробую объяснить: Допустим, есть некий веб-сервис [WebMethod] public void GetDataByAttribute (string AttributeName, Guid ObjectId) { ... } В качестве входных параметров в него передаются: 1. название атрибута (например, "customerid") - стринговая переменная; 2. GUID сущности (например, "Возможная сделка" opportunity, у которой соответственно есть атрибут customerid) - Guid переменная. Соответственно нужно каким-то способом получить значение поля customerid (то есть название контакта) у сущности с этим GUID. Но штука в том, что полученный атрибут сущности может быть любой, и не понятно, как его потом привести к виду opportunity.customerid, ведь "customerid" - это текстовый параметр (!). Надеюсь, сейчас описано понятнее |
|
30.10.2009, 17:15 | #5 |
Участник
|
Неужели никто не сталкиваося с подобной задачей?!
|
|
30.10.2009, 17:19 | #6 |
Чайный пьяница
|
Я в разработке под Microsoft Dynamics CRM уже полтора года и, надеюсь, моя квалификация не вызывает у Вас сомнения.
Я не смог понять зачем Вам это необходимо. Можете сценарий привести?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
30.10.2009, 17:32 | #7 |
Участник
|
Цитата:
Сценарий таков: В системе необходимо реализовать гибкий механизм, который позволит пользователям выбирать необходимые поля (атрибуты) из сущностей, значения которых потом используются, например, в составлении неких документов. Возможно, это можно как-то по другому реализовать, но пока что вижу только такой вариант. |
|
31.10.2009, 10:48 | #8 |
Moderator
|
А я вот так и не понял нафига все это было нужно. "Для составления неких документов" или все же есть реальная задача?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|