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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2009, 16:40   #1  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Нахождение GUIDа объекта по другим атрибутам
Прошу прощения, но мне вновь нужен ваш совет

Сейчас мне нужно сделать обработку которая бы из 1С создавала некий объект в CRM, в целом это не проблема через WebService, но встал вопрос, как зная, допустим доменное имя пользователя - получить по нему GUID этого systemuser-а, для дальнейшего заполнения его в lookup сущности
Старый 20.01.2009, 16:55   #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
Lightbulb
Цитата:
Сообщение от Казарин Александр Посмотреть сообщение
Прошу прощения, но мне вновь нужен ваш совет

Сейчас мне нужно сделать обработку которая бы из 1С создавала некий объект в CRM, в целом это не проблема через WebService, но встал вопрос, как зная, допустим доменное имя пользователя - получить по нему GUID этого systemuser-а, для дальнейшего заполнения его в lookup сущности
Код:
            CrmService _serv = new CrmService();

            //Формируем собственно токен для работы сервиса, креденшиалы и прочее

            Microsoft.Crm.Sdk.Query.QueryByAttribute query = new Microsoft.Crm.Sdk.Query.QueryByAttribute();
            query.ColumnSet.AddColumn("systemuserid");
            query.EntityName = "systemuser";
            query.Attributes = new string[] { "domainname" };
            query.Values = new string[] { "domain\\userdomainname" };

            BusinessEntityCollection users = _serv.RetrieveMultiple(query);

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

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Артем Enot Грунин (1).
Старый 20.01.2009, 17:37   #3  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Большое спасибо
Старый 20.01.2009, 17:41   #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
:)
Цитата:
Сообщение от Казарин Александр Посмотреть сообщение
Большое спасибо
Спасибо - репутацию не повышает
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 21.01.2009, 18:07   #5  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Цитата:
Спасибо - репутацию не повышает
Знаю =) Но вы спасаете меня чаще чем у меня проходит трехдневный кулдаун на репутацию

Возникла еще одна крайне непонятная проблема, с организациями, офтопик но не хочется создавать пока новых тем.

На CRM-е несколько организаций. С той которая по умолчанию все прекрасно. Но Сейчас мне нужно производить действия с другой организацией и тут начали лезть какие то непонятные проблемы с кодингом да и вообще с компонентами.

Когда при попытке подключить акселератор Notifications он начал выдавать сущности организации по дефаулту а не нужной я списал это на сам акселератор. Но тут мне понадобилось описаную в первом посте задачу реализовать с этой организацией - но VisualStudio так же невозмутимо рекомендует мне сущности организации по дефаулту, а сам скрипт выдавать при исполнении ошибку
Цитата:
Сообщение об ошибке компилятора: CS0103: Имя 'new_goods_problems'
отсутствует в текущем контексте
token.OrganizationName как бы стоит и указывает именно на нужную организацию..
Что делать, право не знаю

Старый 21.01.2009, 20:30   #6  
Артем 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
Все работает правильно. Просто в этом случае придется иметь дело с Dynamic Entity, а не готовыми типами,как вы привыкли.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Казарин Александр (1).
Старый 23.01.2009, 14:04   #7  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
А не подскажите как его правильно использовать? В SDK нашел пример, сделал у себя примерно так
Цитата:
DynamicEntity new_goods_problems = (DynamicEntity)context.InputParameters[ParameterName.Target];
new_goods_problems["new_name"] = zakazname;
new_goods_problems["new_problemitem"] = Request.Params["trableitem"];
Guid goodsGuid = service.Create(new_goods_problems);
Но там пример был через Plugin, а у меня отдельный aspx через вебсервис, непонятно какой тип у context
Старый 23.01.2009, 14:37   #8  
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
Lightbulb
Цитата:
Сообщение от Казарин Александр Посмотреть сообщение
А не подскажите как его правильно использовать? В SDK нашел пример, сделал у себя примерно так


Но там пример был через Plugin, а у меня отдельный aspx через вебсервис, непонятно какой тип у context
Тогда надо не так, а примерно так:

Код:
            DynamicEntity entity = new DynamicEntity("Entity Name To Be Created");
            entity.Properties.Add(new StringProperty("Name Of Field", "Value of Field"));

            //Заполнение остальных пропертей создаваемой сущности по аналогичному механизму

            service.Create(entity);
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Казарин Александр (1).
Старый 09.02.2009, 15:13   #9  
IgorF is offline
IgorF
Учаснег
Аватар для IgorF
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Регистрация: 23.07.2007
Адрес: Поребрик сити
Не буду плодить новых тем... Попробую спросить, а можно ли как то получить список DynamicEntity удовлетворяющих условию? что то наподобие Queryexpression.
__________________
http://about.me/fedorovigor
Старый 09.02.2009, 15:46   #10  
Артем 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
Ну да. Например метод Execute + запрос TargetRetrieveDynamic. Ну или установите свойство ReturnDynamicEntities = true e вашего RetrieveRequest.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 09.02.2009, 16:28   #11  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Написал для этих целей следующую функцию:
X++:
public object getObjectsByCondition(string entityName, Dictionary<int, Condition> conditionList, string[] requestAttributeName)
        {
            ColumnSet cols = new ColumnSet();

            cols.Attributes = requestAttributeName;

            ConditionExpression[] condition = new ConditionExpression[conditionList.Count];
            FilterExpression filter = new FilterExpression();

            filter.FilterOperator = LogicalOperator.And;

            for (int i = 0; i < conditionList.Count; i++)
            {
                condition[i] = new ConditionExpression();
                condition[i].AttributeName = conditionList[i].name;
                condition[i].Operator = ConditionOperator.Like;
                condition[i].Values = conditionList[i].values;
            }

            filter.Conditions = condition;

            QueryExpression query = new QueryExpression();

            query.EntityName = entityName;
            query.ColumnSet = cols;
            query.Criteria = filter;

            RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();

            retrieve.Query = query;
            RetrieveMultipleResponse retrieved;
            try
            {
                retrieved = (RetrieveMultipleResponse)service.Execute(retrieve);
            }
            catch (SoapException ex)
            {
                throw new Exception(ex.Detail.InnerText.ToString());
            }
            return retrieved.BusinessEntityCollection;
        }
ИСпользование функции:
X++:
conditionList.Clear();
            conditionList.Add(0, new Condition("itb_itn", new string[] { node.SelectSingleNode("INN").InnerText }));
            conditionList.Add(1, new Condition("new_lead_type", new string[] { "2" }));
            conditionList.Add(2, new Condition("new_address1_country", new string[] { node.SelectSingleNode("Country").InnerText }));
            BusinessEntityCollection companyCollection = (BusinessEntityCollection)getObjectsByCondition(EntityName.lead.ToString(), conditionList, new string[] { "leadid" });
Класс для хранения набора условий для атрибутов:
X++:
            public Condition(string _name, string[] _values)
            {
                name = _name;
                values = _values;
            }
За это сообщение автора поблагодарили: Dissident (1), IgorF (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Имя объекта сущности по id sphinks Dynamics CRM: Разработка 3 05.03.2009 08:40
Создание нового объекта sanych_81 Dynamics CRM: Функционал 9 26.11.2008 17:12
Получение атрибута из другого объекта Казарин Александр Dynamics CRM: Разработка 6 20.10.2008 18:08
Получить id объекта вызвавшего PlugIn sergeyjb Dynamics CRM: Разработка 5 09.10.2008 14:17
Создание объекта сущности из другого объекта! SnSS Dynamics CRM: Разработка 5 29.05.2008 13:38

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

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

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