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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.08.2003, 09:44   #1  
ArturK is offline
ArturK
Участник
 
81 / 10 (1) +
Регистрация: 13.08.2003
Отчеты: суммирование и условия
Уважаемые, разработчики
у меня возникла при разработке отчета такая ситуация:

Допустим берутся таблицы InventTrast и InventTable, первая привязана ко второй
получаю таблицу

Номенклатура (Table)..........Количество (Trast)..........Статус_1(Trast).....Статус_2(Trast)
------------------------------------------------------------------------------------------------------------------------
Ном1 ..............................................34 .........................................3................................1
Ном2................................................2............................................2...............................4
Ном3................................................3............................................3................................2
Ном4................................................21...........................................1...............................2
Ном5.................................................1.............................................3..............................1
------------------------------------------------------------------------------------------------------------------------
...........................................................61

Но мне надо сделать два столбца (количество) и в первом просуммировать только строчки у которых Статус_1 = 3, во-втором просуммировать только строчки со Статус_2=2, а строчки у которых и статус_1 и статус_2 не соответсвуют условиям убрать из отчета.

Т.е. должно получится следующее

Ном-ра (Table)........Кол-во (Trast) ........Статус_1(Trast)...Кол-во (Trast)....Статус_2(Trast)
------------------------------------------------------------------------------------------------------------------------
Ном1................................34...................................3.......................................................1
Ном3.................................3....................................3.............................3.......................2
Ном4.......................................................................1..............................21....................2
Ном5 .................................1..................................3 ........................................................1
------------------------------------------------------------------------------------------------------------------------
.........................................37..................................................................24

Подскажите, пожалуйста, как такое реализовать?
Старый 15.08.2003, 18:37   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Что-то никто не отвечает. А вопрос вроде бы простой...

Сделать можно по разному, например перекрыв fetch() или send(), там проверять значения печатаемой строки и в зависимости от значения полей:

1. накапливать суммы в переменных
2. решать посылать ли данную строку на печать

Поищи - многие стандартные отчеты так сделаны.
Старый 15.08.2003, 19:14   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ИМХО, на самом деле вопрос не такой и простой.

Во-первых, не надо трогать fetch и send. Тогда многое в штатных механизмах работать перестанет. Например, скорее всего, пользователь не сможет добавлять свои условия, привязывать таблицы, изменять порядок сортировки и т.п.

Во-вторых, не надо накапливать суммы в переменных самостоятельно. Надо воспользоватся свойством SumAll, SumPos или SumNeg.

Скорее, стоит написать 4 display-метода, которые будут возвращать 0 или значение текущей записи в зависимости от условия. А в колонках отчета указывать эти методы. Таким образом, можно минимизировать программирование.

На самом деле, этот способ не очень красив. Я надеялся, что кто-нибудь предложит способ получше. fetch/send - точно трогать не надо.
Старый 15.08.2003, 19:24   #4  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Цитата:
Изначально опубликовано mazzy
ИМХО, на самом деле вопрос не такой и простой.
Неужели программирование такого элементарного запроса в отчете вызывает трудности в аксапте и займет больше 10 минут?

P.S. кстати, поля статуса из таблицы товаров или таблицы скласких проводок? Ответ прямо влияет на способ реализации.
Старый 15.08.2003, 20:08   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Шо!? Опять программирование?

За 10 минут стало быть? С сохранением всех возможностей, которые предоставляет Аксапта? С учетом того, что пользователь может менять запрос? С учетом тго, что у пользователя может не быть прав на некоторые поля? ню-ню... вот так вот бюджеты и раздуваются.

Но даже если "клиент" ArturK решится на программирование, то проблема не в Аксапте. Такой запрос нельзя сформулировать таким образом, чтобы он полностью выполнялся на сервере. Часть обработки все равно придется оставлять на клиенте. А это плохо.

Кроме того, Pavel, обратите внимание, что ArturK методично использовал термин InventTrast, а не InventTrans. кроме того статусы не похожи на статусы inventTrans'а. Это либо говорит о том, что ArturK новичок в Аксапте, либо вопрос ставится по уже сильно модифицированной Аксапте. И в том, и в другом случае лучше отговорить от программирования насколько это возможно. На мой взгляд.
Старый 15.08.2003, 20:15   #6  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Так это можно сделать за 10 минут (простой, конкретный пример, с изменением запроса, без прав на поля)?
Старый 15.08.2003, 20:17   #7  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Цитата:
Изначально опубликовано mazzy
обратите внимание, что ArturK методично использовал термин InventTrast, а не InventTrans. кроме того статусы не похожи на статусы inventTrans'а. Это либо говорит о том, что ArturK новичок в Аксапте, либо ...
новичок
Старый 15.08.2003, 20:36   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Pavel
Так это можно сделать за 10 минут (простой, конкретный пример, с изменением запроса, без прав на поля)?
Проект в студию!
Старый 16.08.2003, 16:38   #9  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Цитата:
Изначально опубликовано mazzy
Проект в студию!
Не понял, что это за ответ. Повторяю свой вопрос:

Цитата:
Изначально опубликовано Pavel
Неужели программирование такого элементарного запроса в отчете вызывает трудности в аксапте и займет больше 10 минут?
Старый 16.08.2003, 17:20   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Повторяю свой ответ:
если для вас "программирование такого элементарного запроса ... займет (НЕ) больше 10 минут?", то сделайте это и выложите сюда проект такого отчета.

Со своей стороны я готов выложить проект с моим предложением.
Старый 16.08.2003, 17:50   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Вот отчет, который показывает только строки со статусом закуплено и продано.
Поиграйтесь параметрами суммирования, измените сортировку, добавьте таблицу.

Pavel, ждем от вас проекта с запрограммированным "элементарным запросом".


Уважаемые все, не программируйте там где это возможно!

И еще. Мне все же пришлось влезть в код и создать два display-метода. Я считаю такое решение не очень красивым. Сможет ли кто-нибудь предложить вариант, где программировать вообще ничего не надо?
Вложения
Тип файла: xpo mazzyreportdemo.xpo (27.6 Кб, 236 просмотров)
Старый 17.08.2003, 12:45   #12  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Сергей, какой-то очень сложный диалог получается. Если все правильно понял, то:
- за 10 минут такой отчет не создать
- а еще лучше, вообще не программировать
ОК?
Старый 17.08.2003, 14:35   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Pavel
Неужели программирование такого элементарного запроса в отчете вызывает трудности в аксапте и займет больше 10 минут?
Хм... Значит здесь был вопрос, а не наезд?
Что ж, постараюсь к этому надо привыкнуть.
Извини, если что. Кстати, жаль, что не привел таки свой отчет. Ну да ладно.

Аксаптовскими средствами нельзя написать "элементарный" запрос для такой задачи.

Теперь рассуждения. Придется программировать. Причем много. Уверен, что наверняка есть спецы, которые запрограммируют отчет запрос и за 10 минут. Но таких спецов вряд ли много, чтобы рассчитывать на таковых в нормальном внедрении

И еще: буду чертовски рад ошибаться. Буду рад, если кто-то сможет привести "элементарный" запрос на Аксапте.
Старый 18.08.2003, 11:02   #14  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Mazzy, согласен, что в твоем варианте гораздо меньше программирования, чем в моем. Хотя для меня количество доработок, как критерий, всегда был после таких факторов, как удобство для пользователя и полнота функционала .
C другой стороны мой вариант более гибок - представь, что через пару дней ArturK придет к тебе и попросит добавить к этому отчету пару фич, которые ты не сможешь реализовать не перекрыв fetch() или send()....

Цитата:
Во-первых, не надо трогать fetch и send. Тогда многое в штатных механизмах работать перестанет. Например, скорее всего, пользователь не сможет добавлять свои условия, привязывать таблицы, изменять порядок сортировки и т.п.
Хм... Оборотка по складу версии sp2. Все работает. Конечно для того, чтоб это работало пришлось поработать и ручками (см. класс ReportPeriodDialogInventTurnover_RU) - но если количество разработчиков не самое узкое место на проекте - можно реализовать и такой вариант
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Финансовые отчеты lml_20 DAX: Функционал 5 25.05.2009 15:13
Фин отчеты: может ли работать по нескольким компаниям сразу Arahnid DAX: Функционал 3 30.05.2007 17:46
Финансовые отчеты. Отбор счетов. ax_f DAX: Функционал 3 15.12.2005 20:34
Отчеты по клиентам Anastasiya DAX: Функционал 2 19.03.2005 12:11
Авансовые отчеты - Копировать из источников mpa DAX: Функционал 11 05.04.2004 09:42
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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