15.08.2003, 09:44 | #1 |
Участник
|
Отчеты: суммирование и условия
Уважаемые, разработчики
у меня возникла при разработке отчета такая ситуация: Допустим берутся таблицы 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 |
Moderator
|
Что-то никто не отвечает. А вопрос вроде бы простой...
Сделать можно по разному, например перекрыв fetch() или send(), там проверять значения печатаемой строки и в зависимости от значения полей: 1. накапливать суммы в переменных 2. решать посылать ли данную строку на печать Поищи - многие стандартные отчеты так сделаны. |
|
15.08.2003, 19:14 | #3 |
Участник
|
ИМХО, на самом деле вопрос не такой и простой.
Во-первых, не надо трогать fetch и send. Тогда многое в штатных механизмах работать перестанет. Например, скорее всего, пользователь не сможет добавлять свои условия, привязывать таблицы, изменять порядок сортировки и т.п. Во-вторых, не надо накапливать суммы в переменных самостоятельно. Надо воспользоватся свойством SumAll, SumPos или SumNeg. Скорее, стоит написать 4 display-метода, которые будут возвращать 0 или значение текущей записи в зависимости от условия. А в колонках отчета указывать эти методы. Таким образом, можно минимизировать программирование. На самом деле, этот способ не очень красив. Я надеялся, что кто-нибудь предложит способ получше. fetch/send - точно трогать не надо. |
|
15.08.2003, 19:24 | #4 |
SAP
|
Цитата:
Изначально опубликовано mazzy
ИМХО, на самом деле вопрос не такой и простой. P.S. кстати, поля статуса из таблицы товаров или таблицы скласких проводок? Ответ прямо влияет на способ реализации. |
|
15.08.2003, 20:08 | #5 |
Участник
|
Шо!? Опять программирование?
За 10 минут стало быть? С сохранением всех возможностей, которые предоставляет Аксапта? С учетом того, что пользователь может менять запрос? С учетом тго, что у пользователя может не быть прав на некоторые поля? ню-ню... вот так вот бюджеты и раздуваются. Но даже если "клиент" ArturK решится на программирование, то проблема не в Аксапте. Такой запрос нельзя сформулировать таким образом, чтобы он полностью выполнялся на сервере. Часть обработки все равно придется оставлять на клиенте. А это плохо. Кроме того, Pavel, обратите внимание, что ArturK методично использовал термин InventTrast, а не InventTrans. кроме того статусы не похожи на статусы inventTrans'а. Это либо говорит о том, что ArturK новичок в Аксапте, либо вопрос ставится по уже сильно модифицированной Аксапте. И в том, и в другом случае лучше отговорить от программирования насколько это возможно. На мой взгляд. |
|
15.08.2003, 20:15 | #6 |
SAP
|
Так это можно сделать за 10 минут (простой, конкретный пример, с изменением запроса, без прав на поля)?
|
|
15.08.2003, 20:17 | #7 |
SAP
|
Цитата:
Изначально опубликовано mazzy
обратите внимание, что ArturK методично использовал термин InventTrast, а не InventTrans. кроме того статусы не похожи на статусы inventTrans'а. Это либо говорит о том, что ArturK новичок в Аксапте, либо ... |
|
15.08.2003, 20:36 | #8 |
Участник
|
Цитата:
Изначально опубликовано Pavel
Так это можно сделать за 10 минут (простой, конкретный пример, с изменением запроса, без прав на поля)? |
|
16.08.2003, 16:38 | #9 |
SAP
|
Цитата:
Изначально опубликовано mazzy
Проект в студию! Цитата:
Изначально опубликовано Pavel
Неужели программирование такого элементарного запроса в отчете вызывает трудности в аксапте и займет больше 10 минут? |
|
16.08.2003, 17:20 | #10 |
Участник
|
Повторяю свой ответ:
если для вас "программирование такого элементарного запроса ... займет (НЕ) больше 10 минут?", то сделайте это и выложите сюда проект такого отчета. Со своей стороны я готов выложить проект с моим предложением. |
|
16.08.2003, 17:50 | #11 |
Участник
|
Вот отчет, который показывает только строки со статусом закуплено и продано.
Поиграйтесь параметрами суммирования, измените сортировку, добавьте таблицу. Pavel, ждем от вас проекта с запрограммированным "элементарным запросом". Уважаемые все, не программируйте там где это возможно! И еще. Мне все же пришлось влезть в код и создать два display-метода. Я считаю такое решение не очень красивым. Сможет ли кто-нибудь предложить вариант, где программировать вообще ничего не надо? |
|
17.08.2003, 12:45 | #12 |
SAP
|
Сергей, какой-то очень сложный диалог получается. Если все правильно понял, то:
- за 10 минут такой отчет не создать - а еще лучше, вообще не программировать ОК? |
|
17.08.2003, 14:35 | #13 |
Участник
|
Цитата:
Изначально опубликовано Pavel
Неужели программирование такого элементарного запроса в отчете вызывает трудности в аксапте и займет больше 10 минут? Что ж, постараюсь к этому надо привыкнуть. Извини, если что. Кстати, жаль, что не привел таки свой отчет. Ну да ладно. Аксаптовскими средствами нельзя написать "элементарный" запрос для такой задачи. Теперь рассуждения. Придется программировать. Причем много. Уверен, что наверняка есть спецы, которые запрограммируют отчет запрос и за 10 минут. Но таких спецов вряд ли много, чтобы рассчитывать на таковых в нормальном внедрении И еще: буду чертовски рад ошибаться. Буду рад, если кто-то сможет привести "элементарный" запрос на Аксапте. |
|
18.08.2003, 11:02 | #14 |
Moderator
|
Mazzy, согласен, что в твоем варианте гораздо меньше программирования, чем в моем. Хотя для меня количество доработок, как критерий, всегда был после таких факторов, как удобство для пользователя и полнота функционала .
C другой стороны мой вариант более гибок - представь, что через пару дней ArturK придет к тебе и попросит добавить к этому отчету пару фич, которые ты не сможешь реализовать не перекрыв fetch() или send().... Цитата:
Во-первых, не надо трогать fetch и send. Тогда многое в штатных механизмах работать перестанет. Например, скорее всего, пользователь не сможет добавлять свои условия, привязывать таблицы, изменять порядок сортировки и т.п.
|
|