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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.07.2007, 11:35   #1  
Lithium is offline
Lithium
Участник
 
20 / 10 (1) +
Регистрация: 17.07.2007
? Динамический picklist
Добрый день!

Суть проблемы в следующем. У сущности "Интерес" имеется атрибут ownerid, в котором хранится имя пользователя, создавшего интерес. При этом имеется возможность переназначить интерес кому-то другому.

Согласно бизнес-процессу компании, требуется в сущность "Интерес" добавить еще 2 подобных поля - Исполнитель и Руководитель, в которых можно было бы выбрать пользователя. Как я понимаю, системный тип данных owner использовать нельзя, тогда остается только picklist. Подскажите, как динамически заполнить Picklist тменами пользователей, заведенных в системе.
Старый 17.07.2007, 13:09   #2  
sam is offline
sam
Участник
 
160 / 25 (1) +++
Регистрация: 04.08.2003
Адрес: Красноярск
Вам нужно через объект XMLHttpRequest на событии onLoad обращаться к сторонней aspx странице или веб сервису которые вернут вам список пользователей. А дальше заполняете им список.

пример с веб страницей
Валюты в CRM

пример с веб сервисом
Динамическое заполнение из выбранного атрибута lookup
Старый 17.07.2007, 16:07   #3  
Lithium is offline
Lithium
Участник
 
20 / 10 (1) +
Регистрация: 17.07.2007
Цитата:
Сообщение от 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;
 
}

}
Но здесь типом возвращаемого значения я сделал string, соответственно все пользователи выводятся в одну кучу. Надо чтобы возвращался массив юзеров, а как это сделать - не знаю
Старый 18.07.2007, 06:03   #4  
sam is offline
sam
Участник
 
160 / 25 (1) +++
Регистрация: 04.08.2003
Адрес: Красноярск
Ну используйте какой нибудь сепаратор в строке, в 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);
jscript
Код:
var str = new String(result);
var arr = str.split("$");

for(var i=0; i<mar.length; i++)
   alert(mar[i]);
Старый 18.07.2007, 11:07   #5  
Lithium is offline
Lithium
Участник
 
20 / 10 (1) +
Регистрация: 17.07.2007
Что-то у меня метод 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>
Как я понимаю, то что надо. Теперь в VS выполняю Build->Publish Web Site, получаю asmx-файл и пару dll. Как их подключить к CRM, чтобы можно было их использовать в обработчиках?
Старый 18.07.2007, 12:23   #6  
Lithium is offline
Lithium
Участник
 
20 / 10 (1) +
Регистрация: 17.07.2007
Вроде сервис работает нормально, но... ответ не приходит от него. в обработчик 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);
В результате выводится пустой алерт
Старый 18.07.2007, 13:43   #7  
sam is offline
sam
Участник
 
160 / 25 (1) +++
Регистрация: 04.08.2003
Адрес: Красноярск
А alert(str) что возвращает?
Старый 18.07.2007, 15:03   #8  
Lithium is offline
Lithium
Участник
 
20 / 10 (1) +
Регистрация: 17.07.2007
Цитата:
Сообщение от sam Посмотреть сообщение
А alert(str) что возвращает?
Ничего - пустой алерт... Как вообще, правильно интегрировать свою веб-службу в 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.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: CRM 4.0: Checkbox style Multi-Select Picklist Blog bot Dynamics CRM: Blogs 0 01.04.2009 05:07
не отображаются значения из picklist в отчетах valk Dynamics CRM: Разработка 6 19.02.2009 22:51
Jim Wang: CRM 4.0: Checkbox style Multi-Select Picklist Blog bot Dynamics CRM: Blogs 0 11.02.2009 06:05
mscrm4ever: CRM 4.0 Supported Multi Select (Picklist) Control Blog bot Dynamics CRM: Blogs 0 25.12.2008 15:05

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

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

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