|
28.01.2009, 09:43 | #1 |
Участник
|
Выбрать организации без возможных сделок
Как расширенным поиском выбрать все организации с которыми не связана ни одна возможная сделка?
Если подключаю связанный объект "возможная сделка" в расширенном, то он тут же как Inner Join пересечение организаций и сделок делает, и уже на это пересечение все остальные условия накладывает.
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара |
|
28.01.2009, 10:11 | #2 |
Moderator
|
Я только через одно место придумал:
1. создаем маркетинговый список и добавляем в него все организации. 2. потом через поиск удаляем из него все организации которые связаны со сделками. Замечу, что на Расширенном поиске свет клином не сошелся... MS использует в том числе поисковые запросы, которые нельзя открыть через этот инструмент. Взять хотя бы "Организации без заказов за последние 6 мес." Подобные запросы вы можете добавить программно. Подозреваю, что даже вполне поддерживаемым способом.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: sergeyjb (1). |
28.01.2009, 10:20 | #3 |
Участник
|
Да, Артем, отчет "Организации без заказов" подходит, только способа создать маркетинговый список из данных отчета, похоже, не существует. В это все и упирается.
А решение с удалением из списка организаций со сделками -- самое оно! |
|
28.01.2009, 10:35 | #4 |
Moderator
|
Это если делать список из запроса! Можно же просто выбрать такое представление, выбрать "Другие действия" -> "добавить в маркетинговый список". Жаль только все так не уторкать, только выбранные. Впрочем, проблема победима простым скриптом, плюс ISV. Могу подсказать, если надо.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
19.02.2009, 23:43 | #5 |
Участник
|
Запрос с NOT EXISTS
Ни fetchxml ни QueryExpression не поддерживают запросов которые используют NOT EXISTS (в аналоге SQL) поэтому реализовать запрос как в сабже стандартными методами (расширенный поиск, fetchxml, QueryExpression) не удастся.
В подтверждение - форма Бекуса-Наура для fetchxml с сайта Майкрософт : http://msdn.microsoft.com/en-us/library/aa476315.aspx Максимум на что он способен - аутер и иннер джоин + фильтры по атрибутам. Также можно посмотреть http://msdn.microsoft.com/en-us/library/ms936574.aspx - там описано как работают джоины. Единственное что можно в таком случае посоветовать для программной реализации - поле-индикатор, которое обращается в 1 при создании возможной сделки, но это ИМХО гемор Последний раз редактировалось Савран Роман; 20.02.2009 в 00:32. |
|
28.01.2009, 10:22 | #6 |
Участник
|
А программно добавлять поисковый запрос это как? Тем более поддерживаемым способом?
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара |
|
28.01.2009, 10:29 | #7 |
Moderator
|
Есть классы SavedQuery и UserQuery. По сути одно и тоже, отличаются только типом владения - организация или пользователь. У них есть атрибуты:
fetchxml сам запрос, который вы для простоты можете программно конвертировать из QueryExpression iscustomizable - судя по всему будет ли запрос доступен для редактирования через меню настроек и Расширенном поиске. Собственно вот. Мне лень, а вы попробуйте создать что-то похожее.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: a33ik (1). |
20.02.2009, 13:09 | #8 |
Moderator
|
Есть такой класс: ConditionExpression. Для него доступен оператор NotIn зачение которого: "Specifies that a given value is not matched to a value in a subquery or a list". Лениво проверять как он работает, но если в качестве значения в него действительно можно передать подзапрос, а не его результат, то это вполне решит проблему... Если, конечно, такой запрос потом удастся конвертировать в Fetch.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
20.02.2009, 13:34 | #9 |
Участник
|
При попытке для NotIn задать подзапрос
"<detail><error>\n <code>0x80040203</code>\n <description>Condition for attribute 'account.accountid': expected argument(s) of type 'System.Guid' but received 'Microsoft.Crm.Sdk.Query.QueryByAttribute'.</description>\n <type>Platform</type>\n</error></detail>"
Собсно сам код : ColumnSet cs = new ColumnSet(); cs.Attributes = new string[] { "accountid" }; QueryByAttribute qba = new QueryByAttribute(); qba.ColumnSet = cs; qba.Attributes = new string[] {"name"}; qba.Values = new object[] {"org1"}; ConditionExpression ce = new ConditionExpression(); ce.AttributeName = "accountid"; ce.Operator = ConditionOperator.NotIn; ce.Values = new object[] { qba }; FilterExpression fe = new FilterExpression(); fe.Conditions = new ConditionExpression[] {ce}; QueryExpression qe = new QueryExpression(); qe.ColumnSet = new AllColumns(); qe.EntityName = EntityName.account.ToString(); qe.Criteria = fe; crmService.RetrieveMultiple(qe);
__________________
Внедренец Microsoft Dynamics CRM |
|
20.02.2009, 13:39 | #10 |
Участник
|
Вырезка из формы бекуса-наура по фетчхмл касательно нот ин(с сайта майрософт) :
condition-Multiple := <condition attribute='attribute-name' operator= ( 'in' | 'not-in' | 'between' | 'not-between' )> Value-Xml * </condition> Value-Xml := <value>text</value> Из нее видно, что параметром нот ин может быть только значение, если бы туда можно было бы вставить запрос было бы Value-Xml := <value>( text | FetchXml) </value> ну или что-то вроде этого Кстати знает ли кто-то есть ли однозначное соответствие между Квериекспрешн и Фетчхмл?
__________________
Внедренец Microsoft Dynamics CRM |
|
|
За это сообщение автора поблагодарили: Артем Enot Грунин (3). |
20.02.2009, 14:00 | #11 |
Moderator
|
Думаю их возможности эквивалентны. Есть даже сообщения для преобразования одного типа запроса в другой:
FetchXmlToQueryExpressionRequest QueryExpressionToFetchXmlRequest
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|