09.10.2013, 13:21 | #1 |
Участник
|
CRM 2011 Report Development using FetchXML
Добрый день!
С отчетами только сейчас столкнулся, поэтому прошу лояльного отношения. Логика отчета следующая: есть сущность Договор, который в отношении Договор-Заявка 1:N, Заявка содержит lookup на сущности Авто и Полис, из которых мне и надо тянуть основную часть данных. В фетч запросе я сделал, что все атрибуты связанных сущностей not-null, но в самом отчете не могу вывести значение этих атрибутов в отчет, т.к. они являются частью фильтрации. Вопрос: как в фетч запросе или в студии 2008 сделать так, чтобы выводить их значение в отчете rdl? Вот сам фетч, как его отредактировать, чтобы выводились атрибуты в отчете? Цитата:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true"> <entity name="new_contract" enableprefiltering = "1"> <attribute name="new_contractid" /> <attribute name="new_name" /> <attribute name="createdon" /> <order attribute="new_name" descending="false" /> <filter type="and"> <condition attribute="new_name" operator="not-null" /> </filter> <link-entity name="new_request" from="new_contract_new_request" to="new_contractid" alias="bh"> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> </filter> <link-entity name="new_avto" from="new_avtoid" to="new_car" alias="bi"> <filter type="and"> <condition attribute="new_avtoid" operator="not-null" /> <condition attribute="new_new_avto_modelid" operator="not-null" /> <condition attribute="new_avto_gos_nomer" operator="not-null" /> <condition attribute="new_new_avto_markaid" operator="not-null" /> <condition attribute="new_avto_vin" operator="not-null" /> <filter type="or"> <condition attribute="auto_year" operator="not-null" /> <condition attribute="new_avto_god" operator="not-null" /> </filter> <condition attribute="new_city" operator="not-null" /> <filter type="or"> <condition attribute="new_tipts" operator="not-null" /> <condition attribute="new_avto_tip2" operator="not-null" /> </filter> </filter> </link-entity> <link-entity name="new_insurance_policy" from="new_request" to="new_requestid" alias="bj"> <filter type="and"> <condition attribute="new_start_date" operator="not-null" /> <condition attribute="new_due_date" operator="not-null" /> <condition attribute="new_payment" operator="not-null" /> </filter> </link-entity> </link-entity> <link-entity name="account" from="accountid" to="new_account" visible="false" link-type="outer" alias="a_208350e8001ae3119bcd00155d001525"> <attribute name="name" /> </link-entity> <link-entity name="account" from="accountid" to="new_insurer" visible="false" link-type="outer" alias="a_8779c502692fe3119bcd00155d001525"> <attribute name="name" /> </link-entity> <link-entity name="contact" from="contactid" to="new_insurants_signer" visible="false" link-type="outer" alias="a_9d2255c14d2fe3119bcd00155d001525"> <attribute name="firstname" /> </link-entity> <link-entity name="contact" from="contactid" to="new_insurers_signer" visible="false" link-type="outer" alias="a_9f2a4cf14d2fe3119bcd00155d001525"> <attribute name="firstname" /> </link-entity> </entity> </fetch> Последний раз редактировалось GetLucky; 09.10.2013 в 13:28. |
|
09.10.2013, 13:41 | #2 |
Чайный пьяница
|
Добрый день,
Попробуйте так: X++: <link-entity name="new_avto" from="new_avtoid" to="new_car" alias="bi"> <attribute name="new_new_avto_modelid" /> <attribute name="new_avto_gos_nomer" /> <attribute name="new_new_avto_markaid" /> <filter type="and"> <condition attribute="new_avtoid" operator="not-null" /> <condition attribute="new_new_avto_modelid" operator="not-null" /> <condition attribute="new_avto_gos_nomer" operator="not-null" /> <condition attribute="new_new_avto_markaid" operator="not-null" /> <condition attribute="new_avto_vin" operator="not-null" /> <filter type="or"> <condition attribute="auto_year" operator="not-null" /> <condition attribute="new_avto_god" operator="not-null" /> </filter> <condition attribute="new_city" operator="not-null" /> <filter type="or"> <condition attribute="new_tipts" operator="not-null" /> <condition attribute="new_avto_tip2" operator="not-null" /> </filter> </filter> </link-entity>
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: GetLucky (1). |
09.10.2013, 13:49 | #3 |
Участник
|
Цитата:
Сообщение от a33ik
Добрый день,
Попробуйте так: X++: <link-entity name="new_avto" from="new_avtoid" to="new_car" alias="bi"> <attribute name="new_new_avto_modelid" /> <attribute name="new_avto_gos_nomer" /> <attribute name="new_new_avto_markaid" /> <filter type="and"> <condition attribute="new_avtoid" operator="not-null" /> <condition attribute="new_new_avto_modelid" operator="not-null" /> <condition attribute="new_avto_gos_nomer" operator="not-null" /> <condition attribute="new_new_avto_markaid" operator="not-null" /> <condition attribute="new_avto_vin" operator="not-null" /> <filter type="or"> <condition attribute="auto_year" operator="not-null" /> <condition attribute="new_avto_god" operator="not-null" /> </filter> <condition attribute="new_city" operator="not-null" /> <filter type="or"> <condition attribute="new_tipts" operator="not-null" /> <condition attribute="new_avto_tip2" operator="not-null" /> </filter> </filter> </link-entity> |
|
09.10.2013, 15:47 | #4 |
Участник
|
А можно как-то выводить нумерацию записей, которые показывает отчет?
Смотрю функции VB, пока не нашел как. |
|
09.10.2013, 16:57 | #5 |
Чайный пьяница
|
Попробуйте следующее:
Код: =RowNumber("Название датасета")
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.10.2013, 13:53 | #6 |
Участник
|
Помогло, но есть другая проблема.
Если не один ДатаСет, а несколько, то надо указывать функцию Агрегации. А если у меня выражение вида: =Month(Fields!new_sign_date.Value) - когда один ДатаСет - без проблем как использовать функцию Агрегации? Если: =Aggregate(Month(Fields!new_sign_date.Value), "DataSet1") - ошибка =Month(Aggregate(Fields!new_sign_date.Value), "DataSet1")- ошибка Написано на msdn Цитата:
Aggregate(expression, scope)
Цитата:
expression
The expression on which to perform the aggregation. The expression must be a simple field reference. Какой есть выход? |
|
10.10.2013, 13:58 | #7 |
Участник
|
Блин, нельзя вкладывать функции в Агрегейт((
Вот тут написано о Restrictions on Nested Aggregates http://technet.microsoft.com/en-us/l.../dd255275.aspx А как тогда сделать? |
|
10.10.2013, 14:46 | #8 |
Участник
|
Наткнулся на еще одно ограничение: </link-entity> не может быть > 10
Только хакнуть таблицу в бд, но это ансапорт |
|
10.10.2013, 14:53 | #9 |
Чайный пьяница
|
Если честно, то не понял конкретно в чём проблема. Слишком уж сумбурно и не структурировано спрашиваете. Можете, пожалуйста, переформулировать вопрос?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.10.2013, 15:03 | #10 |
Участник
|
Цитата:
1) У меня есть несколько ДатаСетов в отчете. 2) В отчетах я использую разные функции, например функция времени Цитата:
=Month(Fields!new_sign_date.Value)
4) Читал, что надо использовать функцию Aggregate 5) Потом нашел, что функция имеет ограничения и не позволяет вкладывать другие функции в нее - Month, например. |
|
10.10.2013, 15:47 | #11 |
Чайный пьяница
|
Если вы хотите брать аггрегированные данные из других датасетов, то можете воспользоваться следующим синтаксисом.
Код: =Sum(Fields!new_tax.Value, "DataSetName")
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.10.2013, 16:11 | #12 |
Участник
|
Цитата:
Пример с датой я привел. потому что по требованию заказчика дата должна быть разбита на День, Месяц, Год. Этот синткасис я пробовал изначально, он не работает Цитата:
=Day(Fields!new_sign_date.Value, "DataSet1")
Цитата:
=Aggregate(Day(Fields!new_sign_date.Value), "DataSet1")
Надеюсь, теперь стало ясно почему я использую два ДатаСета. Последний раз редактировалось GetLucky; 10.10.2013 в 16:33. |
|
10.10.2013, 16:38 | #13 |
Чайный пьяница
|
По поводу двух датасетов - понял. Одно непонятно - что за отчёт такой страшный...
PS вопрос возник - почему не используете t-sql? Проект для CRM Online?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.10.2013, 16:47 | #14 |
Участник
|
|
|
10.10.2013, 16:53 | #15 |
Чайный пьяница
|
Это точно.
Чем могу - помогаю.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|