AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2009, 18:46   #1  
e.pasechny is offline
e.pasechny
Участник
 
42 / 10 (1) +
Регистрация: 10.12.2007
Извлечение значения полей из атрибута на форме
Задача : упростить ввод типовых операций для пользователя.
Пример : Возможная Сделка - постоянно надо указывать поле - Прайс-Лист.
Продукты - надо указывать поле - Шт.

Оба эти поля я завел в Пользователя где выбрал для них значения.

Как я понял на прямую получить что-то кроме текстового поля я из атрибута не могу.

У меня даже есть готовый пример,оставшийся от внедренцев:

В папке C:\Inetpub\wwwroot\ISV\GetFirmAndWarehouse
лежит handler.ashx

Код:
<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Xml;
using Crm.Sdk;

public class Handler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        XmlDocument doc = new XmlDocument();

        string fecth = String.Format(@"<fetch mapping='logical'>
                                                    <entity name='systemuser'>
                                                        <filter type='and'>
                                                            <condition attribute='systemuserid' operator='eq' value='{0}'/>
                                                        </filter>
                                                        <link-entity name='hr_user1c' from='hr_user1cid' to='hr_user1cid' link-type='inner'>
                                                            <attribute name='hr_firmid'/>
                                                            <attribute name='hr_warehouseid'/>
                                                        </link-entity>
                                                    </entity>
                                                    </fetch>", context.Request.Params["userid"]);


        CrmAuthenticationToken token = new CrmAuthenticationToken();

        token.AuthenticationType = 0;
        token.OrganizationName = context.Request.Params["orgname"];

        CrmService crmservice = new CrmService();
        crmservice.CrmAuthenticationTokenValue = token;
        crmservice.Credentials = System.Net.CredentialCache.DefaultCredentials;

        string resultfetch = crmservice.Fetch(fecth);
        doc.LoadXml(resultfetch);



        XmlNode hr_firmid_node = doc.SelectSingleNode("//hr_user1cid.hr_firmid");
        XmlNode hr_warehouseid_node = doc.SelectSingleNode("//hr_user1cid.hr_warehouseid");

        string hr_firmid = string.Empty;
        string hr_firmidname = string.Empty;
        string hr_warehouseid = string.Empty;
        string hr_warehouseidname = string.Empty;
        string xmlstr = string.Empty;
        if (hr_firmid_node != null)
        {
            hr_firmid = hr_firmid_node.InnerText;
            hr_firmidname = hr_firmid_node.Attributes["name"].Value;
            xmlstr+="<hr_firmid name='"+hr_firmidname+"'>"+hr_firmid+"</hr_firmid>";
        }
        if (hr_warehouseid_node != null)
        {
            hr_warehouseid = hr_warehouseid_node.InnerText;
            hr_warehouseidname = hr_warehouseid_node.Attributes["name"].Value;
            xmlstr += "<hr_warehouseid name='" + hr_warehouseidname + "'>" + hr_warehouseid + "</hr_warehouseid>";
    
        }
        /*context.Response.ContentType = "text/plain";*/
        context.Response.Write("<root>" + xmlstr + "</root>");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

и в форме на OnLoad прописано как его вызвать:
Код:
FillFields()         
function FillFields()
{
var req=createRequestObject();
       
        var url ='/ISV/GetFirmAndWarehouse/Handler.ashx?orgname='+ORG_UNIQUE_NAME+'&userid='+crmForm.all.ownerid.DataValue[0].id;
        req.open('GET', url, false);
        req.onreadystatechange = function() 
                         {
                                if (req.readyState == 4) 
                                {   
                                    if(req.status == 200)
                                    {
                                           var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
                                           xmldoc.async = false;
                                           xmldoc.loadXML(req.responseText);
                                           var rootElement = xmldoc.documentElement;
                                           var firmNode=rootElement.selectSingleNode('//hr_firmid');
                                           var 
                                              if(firmNode!=null && crmForm.all.hr_firmid.DataValue==null)
                                              {
                                                    var lookupData = new Array();
                                                    var lookupItem= new Object();
                                                    lookupItem.id = firmNode.text;
                                                    lookupItem.typename = 'hr_firm';
                                                    lookupItem.name =firmNode.attributes.getNamedItem("name").text;
                                                    lookupData[0] = lookupItem;
                                                    crmForm.all.hr_firmid.DataValue=lookupData;
                                               }
                                    }
                                }
                        }
           req.send(null);
  
}

  function createRequestObject()
    {
      if (window.XMLHttpRequest)
      {
        try 
        {
          return new XMLHttpRequest();
        } 
        catch (e) { }
      } 
      else if (window.ActiveXObject)
      {
        try 
        {
          return new ActiveXObject('Msxml2.XMLHTTP');
        } 
        catch (e) {}
        try 
        {
          return new ActiveXObject('Microsoft.XMLHTTP');
        } 
        catch (e) {}
      }
      return null;
    }

попытался сделать по аналогии ,но у меня не получилось
не проходит вот это условие
Код:
if(req.status == 200)
может что то есть проще?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Присвоение одного атрибута сущности значения другого атрибута связанной сущности vital.mih Dynamics CRM: Функционал 38 08.09.2010 10:53
Мелкомягкий CRM: Отображение в Lookup’е произвольного поля вместо основного атрибута Blog bot Dynamics CRM: Blogs 3 26.04.2010 19:10
не сохраняются значения новых полей zhenek Dynamics CRM: Разработка 18 05.06.2009 18:28
пустые значения при перегонки данных через migration Manager valk Dynamics CRM: Функционал 2 02.09.2008 19:52
Как сделать две одинаковые ссылки на одной форме? tatra Dynamics CRM: Разработка 5 21.09.2007 18:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:49.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.