Показать сообщение отдельно
Старый 23.12.2011, 14:29   #20  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Цитата:
Сообщение от griefon Посмотреть сообщение
Не очень понятно, где на какой строке у вас возникает ошибка, но в любом случае стоит делать вот так:

X++:
function Form_onload()
{
    if (crmForm.all.new_materialid.DataValue != null)
    {
        alert(GetAttributeValueFromID("new_competitormaterial", crmForm.all.new_materialid.DataValue[0].id, "new_links", "isTextField"));
    }
}
Код:
griefon
спасибо!
это проверка заполнено ли поле лукапа на форме сущности1, что тоже, кстати, надо было добавить!
а у меня проблема была в получении данных из поля с формы связанной сущности2 - если оно не заполнено - возвращалась вышеупомянутая ошибка об объекте.
иначе говоря, если значение у sAttributeName не содержит данных/равно null.
сделал так:

X++:
function Form_onload()
{
  if (crmForm.all.new_materialid.DataValue != null)
    {
        alert(GetAttributeValueFromID("new_competitormaterial", crmForm.all.new_materialid.DataValue[0].id, "new_links", "isTextField"));
    }    
}

function GetAttributeValueFromID(sEntityName, sGUID, sAttributeName, isTextField)
{
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>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"RetrieveRequest\" ReturnDynamicEntities=\"false\">" +
" <Target xsi:type=\"TargetRetrieveDynamic\">" +
" <EntityName>" + sEntityName + "</EntityName>" +
" <EntityId>" + sGUID + "</EntityId>" +
" </Target>" +
" <ColumnSet xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>" + sAttributeName + "</q1:Attribute>" +
" </q1:Attributes>" +
" </ColumnSet>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml); 
var result = null;
var new_v = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName);
if(new_v != null)
  {
  if(isTextField) 
    {
      result = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName).text;
    } 
  else 
    {
      result = xmlHttpRequest.responseXML.selectSingleNode("//q1:" + sAttributeName).getAttribute('name');
    } 
  }
if (result == null) 
  {
    return '';
  } 
else
return result;
}