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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2010, 10:51   #1  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
Подставить значения lookup для Встреча.
Есть сущность Бизнес-Партнер
Есть сущность Встреча

Создана сущность Договор.
Во встрече добавлено поле lookup для договора.

Если создаешь встречу из клиента, все хорошо, имя клиента подставляется.
Если создаешь встречу из Договора, то вместо имени клиента подставляется имя договора.

Как сделать так чтобы при создании встречи из договора автоматически подставлялись поля lookup Для клиента и для Договора.

Как вариант, сделал Бизнес-Процесс на создание запись, все работает, но поля заполняются при сохранении формы. Может как-то возможно чтобы БП срабатывал при первоначальном создании формы ?

заранее спасибо.
Старый 13.09.2010, 11:26   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от ipok Посмотреть сообщение
Есть сущность Бизнес-Партнер
Есть сущность Встреча

Создана сущность Договор.
Во встрече добавлено поле lookup для договора.

Если создаешь встречу из клиента, все хорошо, имя клиента подставляется.
Если создаешь встречу из Договора, то вместо имени клиента подставляется имя договора.

Как сделать так чтобы при создании встречи из договора автоматически подставлялись поля lookup Для клиента и для Договора.

Как вариант, сделал Бизнес-Процесс на создание запись, все работает, но поля заполняются при сохранении формы. Может как-то возможно чтобы БП срабатывал при первоначальном создании формы ?

заранее спасибо.
В вопросе не указано, как договор и клиент взаимосвязаны. Если никак - то никак и не получится.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 11:33   #3  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
Клиент (Бизнес-партнер) - родительский объект для Договора.

У встречи - для атрибута lookup:

regardingobjectid - для родительского клиента
new_dogovor_vstrecha - для родительского договора
Старый 13.09.2010, 11:57   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от ipok Посмотреть сообщение
Клиент (Бизнес-партнер) - родительский объект для Договора.

У встречи - для атрибута lookup:

regardingobjectid - для родительского клиента
new_dogovor_vstrecha - для родительского договора
Тогда это можно сделать при помощи JavaScript на OnLoad. Код изложу структурно.

if (crmForm.FormType == 1)
{
if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0].typename == "<сущность договора, например new_dogovor>")
{
var dogovorid = crmForm.all.regardingobjectid.DataValue[0].id;
//Получение идентификатора и названия компании при помощи Retrieve - http://technet.microsoft.com/en-us/l.../cc677076.aspx

//создание и заполнение лукапа на основании полученных на прошлом шаге данных
//http://technet.microsoft.com/en-us/library/bb928151.aspx
}
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 12:24   #5  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
Спасибо. а что неверного в таком коде ?

if (crmForm.FormType == 1)
{
if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0].typename == "new_dogovor")
{
crmForm.all.new_dogovor_vstrecha.DataValue=crmForm.all.regardingobjectid.DataValue;
}
}

Вроде работает, перекидывает договор в из поля клиента в поле договор.

Но вот как получить имя клиента ?
Старый 13.09.2010, 12:50   #6  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от ipok Посмотреть сообщение
Спасибо. а что неверного в таком коде ?

if (crmForm.FormType == 1)
{
if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0].typename == "new_dogovor")
{
crmForm.all.new_dogovor_vstrecha.DataValue=crmForm.all.regardingobjectid.DataValue;
}
}

Вроде работает, перекидывает договор в из поля клиента в поле договор.

Но вот как получить имя клиента ?
Код верный. Почему решили, что он неверный? А как получить клиента - я уже написал в своём предыдущем сообщении.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 21:27   #7  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
То ли лыжи не едут то ли...

1. делаю запрос в договор - получаю ид клиента.
2. делаю запрос в клиента - получаю его имя.
3. создаю новый лукап.

Верно ? или можно шаг 1 и 2 каким - то образом объединить ?

пример запроса в шаге 1 :


// Prepare variables for a contact to retrieve.
var authenticationHeader = GenerateAuthenticationHeader();

// Prepare the SOAP message.
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'>"+
authenticationHeader+
"<soap:Body>"+
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entityName>new_dogovor</entityName>"+
"<id>"+dogovorid+"</id>"+
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+
"<q1:Attributes>"+
"<q1:Attribute>new_bizbizpdogovor</q1:Attribute>"+
"</q1:Attributes>"+
"</columnSet>"+
"</Retrieve>"+
"</soap:Body>"+
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result.
var resultXml = xHReq.responseXML;

// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
// Display the retrieved value.
else
{
alert(resultXml.selectSingleNode("//q1:new_bizbizpdogovor").nodeTypedValue);
}
Старый 13.09.2010, 21:47   #8  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
В итоге получилось следующее:
Все работает, как всегда, БОЛЬШОЕ спасибо.

if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0].typename == "new_dogovor")
{
crmForm.all.new_dogovor_vstrecha.DataValue=crmForm.all.regardingobjectid.DataValue;
var dogovorid = crmForm.all.regardingobjectid.DataValue[0].id;

//НАХОДИМ ИД КЛИЕНТА
// Prepare variables for a contact to retrieve.
var authenticationHeader = GenerateAuthenticationHeader();

// Prepare the SOAP message.
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'>"+
authenticationHeader+
"<soap:Body>"+
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entityName>new_dogovor</entityName>"+
"<id>"+dogovorid+"</id>"+
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+
"<q1:Attributes>"+
"<q1:Attribute>new_bizbizpdogovor</q1:Attribute>"+
"</q1:Attributes>"+
"</columnSet>"+
"</Retrieve>"+
"</soap:Body>"+
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result.
var resultXml = xHReq.responseXML;

// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
// Display the retrieved value.
else
{
client_id= resultXml.selectSingleNode("//q1:new_bizbizpdogovor").nodeTypedValue;
}

// НАХОДИМ ИМЯ КЛИЕНТА ПО ЕГО ИД
// Prepare the SOAP message.
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'>"+
authenticationHeader+
"<soap:Body>"+
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entityName>account</entityName>"+
"<id>"+client_id+"</id>"+
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+
"<q1:Attributes>"+
"<q1:Attribute>name</q1:Attribute>"+
"</q1:Attributes>"+
"</columnSet>"+
"</Retrieve>"+
"</soap:Body>"+
"</soap:Envelope>";
// Prepare the xmlHttpObject and send the request.
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
// Capture the result.
var resultXml = xHReq.responseXML;

// Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
// Display the retrieved value.
else
{
client_name= resultXml.selectSingleNode("//q1:name").nodeTypedValue;
}

//ДЕЛАЕМ НОВЫЙ ЛУКАП


var lookupData = new Array();
var lookupItem= new Object();

lookupItem.id = client_id;
lookupItem.typename = 'account';
lookupItem.name =client_name;
lookupData[0] = lookupItem;
crmForm.all.regardingobjectid.DataValue = lookupData;

}

Единственное, что приходит на ум, это через функцию получать ид и имя клиента.
может как-то можно еще оптимизировать ?
За это сообщение автора поблагодарили: mistah (1).
Старый 13.09.2010, 22:12   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Попробуйте так:

Код:
var client_id= resultXml.selectSingleNode("//q1:new_bizbizpdogovor").nodeTypedValue;
var clientname= resultXml.selectSingleNode("//q1:new_bizbizpdogovor").getAttribute("name");
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: mistah (1).
Старый 14.09.2010, 10:26   #10  
ipok is offline
ipok
Участник
 
40 / 11 (1) +
Регистрация: 18.08.2010
Действительно ))
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! Some more useful javascripts for MS CRM Blog bot Dynamics CRM: Blogs 0 04.05.2010 11:05
Мелкомягкий CRM: Отображение в Lookup’е произвольного поля вместо основного атрибута Blog bot Dynamics CRM: Blogs 3 26.04.2010 19:10
mscrmblog: Mini Preview Window for Contact Lookup Field Blog bot Dynamics CRM: Blogs 0 10.03.2010 01:05
Jim Wang: CRM Filtered Lookup Multi Blog bot Dynamics CRM: Blogs 0 06.08.2009 06:11
mscrm4ever: Displaying a lookup with related entity fields Blog bot Dynamics CRM: Blogs 0 19.03.2009 07:05

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:00.