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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.02.2008, 19:57   #1  
Верба is offline
Верба
Участник
Аватар для Верба
 
16 / 10 (1) +
Регистрация: 03.07.2007
Адрес: Челябинск
Автоматическое заполнение поля типа lookup при создании формы
Подскажите, пожалуйста.

При создании организации необходимо, чтобы поле Город типа lookup было автоматически заполнено. Какой код необходимо прописать на onLoad формы?
Старый 03.02.2008, 11:00   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Читайте SDK! Если ваш город - сточное значение, то писать надо что-то вроде:

crmForm.all.address1_city.DataValue = 'Крыжополь';
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 04.02.2008, 06:55   #3  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Example
The following code example shows how to set values in a field of type Lookup. This example shows how to set the parent account lookup field on the account form.
//Create an array to set as the DataValue for the lookup control.
var lookupData = new Array();
//Create an Object add to the array.
var lookupItem= new Object();
//Set the id, typename, and name properties to the object.
lookupItem.id = '{1AAC1363-01A1-DB11-8432-0003FF9CE217}';
lookupItem.typename = 'account';
lookupItem.name = 'A Bike Store';
// Add the object to the array.
lookupData[0] = lookupItem;
// Set the value of the lookup field to the value of the array.
crmForm.all.parentaccountid.DataValue = lookupData;

Осталось главное - узнать id города (тут пример для организации). Может быть прописан по-разному: либо статически, либо значение вытаскивается из какой-то сущности по какому-то условию.
За это сообщение автора поблагодарили: Верба (1).
Старый 04.02.2008, 15:22   #4  
Верба is offline
Верба
Участник
Аватар для Верба
 
16 / 10 (1) +
Регистрация: 03.07.2007
Адрес: Челябинск
Всё получилось. Спасибо.
id прописывается статически, взяла из базы sql.
Старый 27.05.2008, 09:30   #5  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Вопрос:
В объекте Звонок есть lookup OwnerId, который ссылается на Ответсвенного пользователя.
Нужно в добавленный lookup "Ответственное подразделение" автоматически записывать ссылку на подразделение, к которому относиться пользователь с Ownerid.
Как вытащить атрибут businessunitid из объекта systemuser, на который ссылается ownerid, и проставить значение businessunitid в lookup "Ответственное подразделение" ?

заране благодарю.
Старый 27.05.2008, 11:09   #6  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Я точно не знаю, т.к. вспоминать надо, но могу дать наводку.
1. В SDK есть статья Using Link Tables.Можно заиспользовать QueryExpression
2. У systemuser есть поле organizationid. Это не оно? Если нет, то см. п.1.
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 27.05.2008, 11:52   #7  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
> 2. У systemuser есть поле organizationid. Это не оно? Если нет, то см. п.1.
поле называется businessunitid, но мой вопрос в том, какие механизмы использовать, чтобы вытащить атрибуты объекта по его GUID.

в нете докопался до того, что SOAP запросы надо подавать на MSCRMServices.

Цитата:
1. В SDK есть статья Using Link Tables.Можно заиспользовать QueryExpression
буду смотреть

хотел уточнить, что хочу написать код в виде javascript'a на событие в форме.

Последний раз редактировалось Bakai Madybaev; 27.05.2008 в 11:56.
Старый 27.05.2008, 12:17   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Данный вопрос уже обсуждался на форуме. Смотрите Как получить значение поля одной сущности при обработке формы другой сущности Есть и другие темы, код, в целом, тот же.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 27.05.2008, 12:27   #9  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
См. Обращение к полю сущности я там ответил на подобный вопрос
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 27.05.2008, 12:28   #10  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Синхронно
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 28.05.2008, 08:07   #11  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Спасибо, большое - получилось!
Старый 29.05.2008, 15:57   #12  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Новые проблемы:

Посылка http запросов влечет свои особенности.
Выскакивает окно авторизации для ввода логина и пароля.
У моего логина уже что-то заблокировалось, что логин и пароль не принимаются и запрос не выполняется. Хотя на сайт я захожу именно под данным логином.
Еще выходит сообщение:
Цитата:
Данная страница обращается к данным, которые не удается проверить, что вызывает рискованное нарушение безопасности. Продолжить?
Если выбрать "Да", то все нормально.
Если выбрать "Нет", то в течении всей сессии работы с сайтом, скрипт вываливается с ошибкой и надо заново логиниться и все равно выбирать "Да".
Старый 29.05.2008, 16:34   #13  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Убедитесь, что сайт CRM внесен в надежные узлы. Для них разрешено использование XMLHTTP и описанный выше скрипт не будет вызывать проблем с авторизацией
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 30.05.2008, 06:45   #14  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Убедитесь что в настройках ИЕ для вашей зоны стоит автоматический вход
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 30.05.2008, 08:35   #15  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Убедитесь что в настройках ИЕ для вашей зоны стоит автоматический вход
Это где смотреть?
Старый 30.05.2008, 09:37   #16  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Post
Цитата:
Сообщение от Bakai Madybaev Посмотреть сообщение
Это где смотреть?
В свойствах обозревателя броузера. В IE на вкладке Безопастность перечислены основные зоны. Скорее всего у Вас установлен уровень безопасности, принимающий данные только из надежных узлов (зона так и называется - Надежные узлы). Для того, чтобы задать автоматический вход (всего может быть два варианта авто-входа) - нужно нажать кнопку "Другой уровень" ( предварительно выбрав узел), а далее в открывшемся окне отскроллить список, найдя в дереве: узел "Проверка подлинности" - подузел "Вход" - ну а далее выбрать в подузле "Вход" одну из опций входа. Например, у нас стоит "Автоматический вход в сеть только в зоне интрасети". Возможно, что Вы ходите в корпоративную сеть через инет или VPN - тогда Вам нужно скорее всего выбрать другую опцию. Ну а в целом - так.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 30.05.2008, 12:22   #17  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Благодарю.

Таковы результаты:
Поместил сайт в Надежные узлы. В настройках по-умолчанию стоит "Вход" - "Автоматический вход в сеть с текущим пользователем и паролем".
Это решило только проблему выскакивания окна:
Цитата:
Данная страница обращается к данным, которые не удается проверить, что вызывает рискованное нарушение безопасности. Продолжить?
Но при начале сессии при срабатывании скрипта Окно с запросом логина, пароля выскакивает все равно.
Старый 30.05.2008, 12:42   #18  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
влияет ли на это наличие/отсутствие в строке запроса заголовочных тегов от функции GenerateAuthenticationHeader() ?
Старый 02.06.2008, 07:37   #19  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Откуда взялось GenerateAuthenticationHeader?
Если можно, то приведите код, можно без строки запроса, раз нормально она отрабатывается. Может какие-нибудь параметры не указали.
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 02.06.2008, 09:03   #20  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Откуда взялось GenerateAuthenticationHeader?
сам добавил - хотя не помню, зачем
Цитата:
var ownerLookupItem = new Array;
ownerLookupItem = crmForm.all.ownerid.DataValue;
var lookupData = new Array();
var bUnitLookupItem= new Object();
var debug = false;

if (ownerLookupItem != null)
{
if (ownerLookupItem[0] != null)
{
var oXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
var serverurl = "http://inftb:5555/";
sGUID=ownerLookupItem[0].id;
if (sGUID != null)
{
var sEntityName="systemuser";
var sAttributeName="businessunitid";

var bUID ="";

if(debug) crmForm.all.new_debug.DataValue = sEntityName + " | " + sGUID + " | "+ sAttributeName;

bUID = GetAttributeValue(sEntityName, sGUID, sAttributeName);

var bUEntityName ="businessunit";
var bUEntityType ="name";

if(debug) crmForm.all.new_debug.DataValue +=bUEntityName + " | " + bUID + " | "+ bUEntityType;
var bUName = GetAttributeValue(bUEntityName, bUID, bUEntityType);

bUnitLookupItem.id = bUID;
bUnitLookupItem.typename = bUEntityName;
bUnitLookupItem.name = bUName;

lookupData[0] = bUnitLookupItem;
crmForm.all.new_businessunit_phonecall.DataValue = lookupData;
if(debug) crmForm.all.new_debug.DataValue += " >>" + lookupData[0].id + " | "+ lookupData[0].name;
}
}
else
{
//alert("crmForm.all.ownerid is Null");
}
}
function GetAttributeValue(sEntityName, sGUID, sAttributeName)
{
var xml = "";
xml +="<?xml version=\"1.0\" encoding=\"utf-8\"?>";
xml +="<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\">";
xml += GenerateAuthenticationHeader();
xml +="<soap:Body>";
xml +="<entityName xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\">" + sEntityName + "</entityName>";
xml +="<id xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\">" + sGUID + "</id>";
xml +="<columnSet xmlns=\"http://schemas.microsoft.com/crm/2006/WebServices\" xmlns:q=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q:ColumnSet\">";
xml +="<q:Attributes>";
xml +="<q:Attribute>" + sAttributeName + "</q:Attribute>";
xml +="</q:Attributes>";
xml +="</columnSet>";
xml +="</soap:Body>";
xml +="</soap:Envelope>";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", serverurl + "/mscrmservices/2006/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/Retrieve");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
if(debug) crmForm.all.new_debug.DataValue +=xml;
var doc = xmlHttpRequest.responseXML;
if(debug) crmForm.all.new_debug.DataValue +=xmlHttpRequest.responseText;
var retValue = "";
if (doc.selectSingleNode("//RetrieveResult/q1:" + sAttributeName) != null)
retValue = doc.selectSingleNode("//RetrieveResult/q1:" + sAttributeName).text;
else
{
if(debug) crmForm.all.new_debug.DataValue += xmlHttpRequest.responseXML;
}
return retValue;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить значение поля одной сущности при обработке формы другой сущности zhenek Dynamics CRM: Разработка 25 05.07.2011 16:19
Создание Lookup формы. Xelaan Dynamics CRM: Разработка 0 03.09.2008 12:17
Как взять текстовое значение из поля LookUp tatra Dynamics CRM: Разработка 2 21.11.2007 08:20
Как сделать в поле типа "Lookup" осуществить множественный выбор значений? Alexey-IT Dynamics CRM: Функционал 5 01.11.2007 11:48
Динамическое заполнение из выбранного атрибута lookup Sibcons Dynamics CRM: Разработка 4 15.06.2007 17:49

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

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

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