| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Добрый день! 
		
		
		
		
		
		
		
	Суть проблемы в следующем. У сущности "Интерес" имеется атрибут ownerid, в котором хранится имя пользователя, создавшего интерес. При этом имеется возможность переназначить интерес кому-то другому. Согласно бизнес-процессу компании, требуется в сущность "Интерес" добавить еще 2 подобных поля - Исполнитель и Руководитель, в которых можно было бы выбрать пользователя. Как я понимаю, системный тип данных owner использовать нельзя, тогда остается только picklist. Подскажите, как динамически заполнить Picklist тменами пользователей, заведенных в системе.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вам нужно через объект XMLHttpRequest на событии onLoad обращаться к сторонней aspx странице или веб сервису которые вернут вам список пользователей. А дальше заполняете им список. 
		
		
		
		
		
		
		
	пример с веб страницей Валюты в CRM пример с веб сервисом Динамическое заполнение из выбранного атрибута lookup  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от sam
			 
 
			Вам нужно через объект XMLHttpRequest на событии onLoad обращаться к сторонней aspx странице или веб сервису которые вернут вам список пользователей. А дальше заполняете им список. 
		
	пример с веб страницей Валюты в CRM пример с веб сервисом Динамическое заполнение из выбранного атрибута lookup Код: 
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
publicclassService : System.Web.Services.WebService
{
public Service () {
//Uncomment the following line if using designed components 
//InitializeComponent(); 
}
[WebMethod]
publicstring GetUsers() {
 
string result = "";
 
CrmSdk.CrmService srv = new CrmSdk.CrmService();
 
srv.Credentials = System.Net.CredentialCache.DefaultCredentials;
 
srv.Url = http://crm-test/mscrmservices/2006/crmservice.asmx;
 
CrmSdk.QueryExpression query = new CrmSdk.QueryExpression();
 
query.EntityName = CrmSdk.EntityName.systemuser.ToString();
 
CrmSdk.ColumnSet cols = new CrmSdk.ColumnSet();
 
cols.Attributes = newstring[] {"fullname"};
 
CrmSdk.OrderExpression order = new CrmSdk.OrderExpression();
 
order.OrderType = CrmSdk.OrderType.Descending;
 
order.AttributeName = "fullname";
 
query.ColumnSet = cols;
 
query.Orders = new CrmSdk.OrderExpression[] { order };
 
CrmSdk.BusinessEntityCollection returned = srv.RetrieveMultiple(query);
 
for (int i = 0; i < returned.BusinessEntities.Length; i++)
{
CrmSdk.systemuser user = (CrmSdk.systemuser)returned.BusinessEntities[i];
result += user.fullname;
result += " ";
 
}
 
return result;
 
}
}
 
		 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну используйте какой нибудь сепаратор в строке, в jscript потом делите строку обратно в массив. 
		
		
		
		
		
		
		
	Код: string[] usrnames = new string[returned.BusinessEntities.Length] ; for (int i = 0; i < returned.BusinessEntities.Length; i++) usrnames[i] = ((CrmSdk.systemuser)returned.BusinessEntities[i]).fullname; result = string.Join(usrnames); Код: 
var str = new String(result);
var arr = str.split("$");
for(var i=0; i<mar.length; i++)
   alert(mar[i]); | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что-то у меня метод Join не хочет работать, хотя делаю все в точности как в MSDN. Ну да ладно, сделал объединение ручками. Теперь сервис возвращает вот это: 
		
		
		
		
		
		
		
	Код: <?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://tempuri.org/">SYSTEM$Sergey Konnov$INTEGRATION$First name Last name$Eugene Ponomarev$Elena Nasonova$Alexey Velichko$Alexander Balabanov</string>  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вроде сервис работает нормально, но... ответ не приходит от него. в обработчик OnLoad добавил код: 
		
		
		
		
		
		
		
	Код: var serverUrl = "http://crm-test"; var serviceLocation = "/MyService.asmx/GetUsers"; var startTag = "<string xmlns=\"http://tempuri.org/\">"; var endTag = "</string>"; var rval = ""; var valueStart = ""; var valueEnd = ""; var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("get", serverUrl + serviceLocation, false); xmlhttp.send(); // Parse the returned XML string. valueStart = xmlhttp.responseXML.xml.indexOf(startTag, valueEnd) + startTag.length; valueEnd = xmlhttp.responseXml.xml.indexOf(endTag, valueEnd+1); rval = xmlhttp.responseXML.xml.substring(valueStart, valueEnd); var str = new String(rval); var arr = str.split("$"); if(str == null) { alert("Нет ответа!"); } alert(xmlhttp.responseXML.xml);  
		 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А alert(str) что возвращает?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ничего - пустой алерт... Как вообще, правильно интегрировать свою веб-службу в CRM? В IIS что-то нужно настраивать? 
		
		
		
		
		
		
		
		
			При попытке вызвать службу через IE вылезает вот это: Microsoft CRM Unhandled Error Details: Ошибка сервера в приложении '/'. Ошибка синтаксического анализатора Описание: Ошибка при разборе ресурса, требуемого для обслуживания этого запроса. Изучите следующие подробные сведения о данной ошибке разбора и измените исходный файл. Сообщение об ошибке синтаксического анализатора: Не удалось создать тип 'MyService.Service'. Ошибка источника: Строка 1: <%@ WebService Language="C#" CodeBehind="~/bin/App_Code.dll" Class="MyService.Service" %> Исходный файл: c:\inetpub\wwwroot\Service.asmx Строка: 1 Причем отладка в VS2005 проходит совершенно нормально, сервис возвращает то что нужно. Последний раз редактировалось Lithium; 18.07.2007 в 17:33.  | 
| 
	
 |