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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2004, 10:28   #1  
stavteam is offline
stavteam
Участник
 
15 / 10 (1) +
Регистрация: 27.10.2004
Адрес: Южный Федеральный Округ
? Оборотно-сальдовая одним запросом ???
Уважаемый All, есть маленькая проблема.
Необходимо разработать оборотно-сальдовую ведомость, в которой обороты разрезаются по нескольким дополнительным аналитикам, например - по датам, по номенклатурным группам. При этом необходим режим "Только итоги по номенклатурным группам", или "Только итоги по датам". В стандартном SQL - это просто GROUP BY. В Аксапта при генерации отчета тоже можно поставить признак "Только итоги". Единственное ограничение - результирующий набор должен извлекаться одним Query.
В MS SQL я могу написать оборотно сальдовую одним SQL-запросом:

select
ItemId,
NameAlias,
(select (sum(AvailPhysical) from InventSum S where S.ItemId = N.ItemId) as SaldoNow,
(select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusReceipt > 0) as Obr1In,
(select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusIssue > 0) as Obr1Out,
...
SaldoNow - Obr1In + Obr1Out as SaldoBegin,
......
from InventTable N;

Принцип понятен. Используются вложенные запросы. Каждый вложенный запрос я могу оформить отдельной функцией, тогда оборотку можно будет извлечь так:

select
ItemId,
NameAlias,
SaldoBegin(ItemId, @DateBegin),
ObrIn(ItemId, @DateBegin, @DateEnd),
ObrOut(ItemId, @DateBegin, @DateEnd),
SaldoEnd(ItemId, @DateEnd),
from InventTable;

Такой запрос можно джойнить к дополнительным таблицам и получать отчеты с группировками с помощью стандартного Query.

Вопрос - такое возможно в Аксапта ?
Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма.

Заранее благодарен за рассмотрение.
__________________
С уважением, Евгений.
Старый 10.11.2004, 11:01   #2  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Re: Оборотно-сальдовая одним запросом ???
Цитата:
Изначально опубликовано stavteam
Вопрос - такое возможно в Аксапта ?
Да, возможно
Цитата:
Хочется простого и универсального механизма.
Механизм запросов в аксапте, достаточно универсальный и не слишком сложный, но это не TSQL.
P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-)
__________________
Isn't it nice when things just work?
Старый 10.11.2004, 11:17   #3  
stavteam is offline
stavteam
Участник
 
15 / 10 (1) +
Регистрация: 27.10.2004
Адрес: Южный Федеральный Округ
Re: Re: Оборотно-сальдовая одним запросом ???
Цитата:
Изначально опубликовано macklakov

Да, возможно
Механизм запросов в аксапте, достаточно универсальный и не слишком сложный, но это не TSQL.
P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-)
Уважаемый macklakov, я конечно не сомневаюсь в том, что вы знаете все тонкости запросов в Аксапта, но не будете ли столь добры ответить - а как же эту простую и порочную вещь сделать средствами Аксапта ? Про локализацию - понял. Спасибо.
__________________
С уважением, Евгений.
Старый 10.11.2004, 11:33   #4  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Re: Re: Re: Оборотно-сальдовая одним запросом ???
Цитата:
Изначально опубликовано stavteam
не будете ли столь добры ответить - а как же эту простую и порочную вещь сделать средствами Аксапта ?
Так же, как и вы сделали, нарисовать либо написать query, но уже в Аксапта. А затем построить на ее основе либо форму либо отчет.
__________________
Isn't it nice when things just work?
Старый 10.11.2004, 11:48   #5  
Ю-ю is offline
Ю-ю
Участник
 
23 / 10 (1) +
Регистрация: 23.04.2004
Адрес: Москва
Мой скромный опыт программирования запросв в Axapta (чуть ментьше 2 лет) подсказывает мне что операции группировки и объединения таблиц в Axapta не перестановочны. Т.е. я хочу сказать, что сначала сгруппировать записи в таблицах а потом их объеденить с помощью простого механизма нельзя. Единственный приемлемый способ который я для себя придумал состоит в следующем: результаты вложенных запросов (с группировках) сохраняем во временной таблице, а затем объединяем эти временные таблицы. Если у кого-то есть более приемлимые варианты буду рад их узнать.
Старый 10.11.2004, 12:34   #6  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Изначально опубликовано Ю-ю
Мой скромный опыт программирования запросв в Axapta (чуть ментьше 2 лет) подсказывает мне что операции группировки и объединения таблиц в Axapta не перестановочны. Т.е. я хочу сказать, что сначала сгруппировать записи в таблицах а потом их объеденить с помощью простого механизма нельзя. Единственный приемлемый способ который я для себя придумал состоит в следующем: результаты вложенных запросов (с группировках) сохраняем во временной таблице, а затем объединяем эти временные таблицы. Если у кого-то есть более приемлимые варианты буду рад их узнать.
К своему стыду вынужден признать, что почти ничего не понял Вы имеете в виду, что нельзя к одной таблице привязать несколько таблиц с группировками?
__________________
Isn't it nice when things just work?
Старый 10.11.2004, 13:08   #7  
stavteam is offline
stavteam
Участник
 
15 / 10 (1) +
Регистрация: 27.10.2004
Адрес: Южный Федеральный Округ
Господа, я не могу в Query задавать вычисляемые поля, которые будут являться подзапросами. В этом вся проблема. Или можно методы таблицы включать в результирующий набор ? Если это так - то спасибо, попробую.
__________________
С уважением, Евгений.
Старый 10.11.2004, 13:11   #8  
Ю-ю is offline
Ю-ю
Участник
 
23 / 10 (1) +
Регистрация: 23.04.2004
Адрес: Москва
И это тоже, но общий принцип можно сформулировать примерно следующим образом.
С помощью механизма Query и оператора select нельзя таблицы сначала сгруппировать, а затем объединить (если я ошибаюсь, пусть меня поправят).
Старый 10.11.2004, 13:23   #9  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Совсем запутался, какие вычисляемые поля, какие подзапросы, зачем? Рассмотрим построение отчета на основе вашего запроса:
1. Строим запрос, в таблицах InventSum и InventTrans задаем агрегатные поля.
2. Создаем переменные, которые будем отображать и display методы для них
3. Переопределяем executeQuery на секции дизайна, а в нем из QueryRun, методами getNo() вынимаем из запроса таблицы и значения полей присваиваем нашим переменным.
4. Набрасываем display методы в дизайн.
Вот собственно и все.
__________________
Isn't it nice when things just work?
Старый 15.05.2006, 14:54   #10  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Цитата:
Изначально опубликовано macklakov

P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-)
Уважаемый macklakov поясните пожалуйста - следует ли из вашего ответа что пользоваться "Оборотно сальдовой ведомостью по складу" не рекомендуется как и ОСВ в ГК и прочими запросами(и отчетами) с суффиксом RU или проблеммы связаны с модификациями данных запросов?
И в чем же заключается проблемма(ы)?

спрашиваю не из праздного любопытства, мы активно пользуемся ОСВ по складу и прочими запросами с суффиксом RU, причем некоторые модифицированы
Старый 15.05.2006, 15:13   #11  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от stavteam
Вопрос - такое возможно в Аксапта ?
Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма.

Заранее благодарен за рассмотрение.
Через АДО можно все, например так
Цитата:
Сообщение от stavteam
Хочется простого и универсального механизма.
Через ОЛАП

Кстати, судя по навыкам в скуле Вас должен порадовать MS reporting services
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/

Последний раз редактировалось Recoilme; 15.05.2006 в 15:37.
Старый 15.05.2006, 16:02   #12  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Подумайте, прежде чем такой запрос пытаться осуществить (на MS-SQL). У него большая вероятность получить несогласованные данные, либо надолго заблокировать работу большого кол-ва пользователей. Как не неприятен ручной механизм получения данных, он все-же позволит избежать узких мест.

С уважением, itfs.
Старый 15.05.2006, 16:20   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Вообще, прежде всего надо определиться, что конкретно Вы понимаете под оборотами и сальдо в приложении к Аксапте. Обратите внимание, что в Аксапте есть физическое и финансовое движение, даты которых могут быть расположены совершенно произвольно друг относительно друга. Кроме того, в Аксапте есть два вида возвратов: по отборочной накладной и по инвойсу. Посмотрите, как эти возвраты обрабатываются стандартными отчетами по статусу склада. Вообще, разберитесь для начала с этими отчетами. Ведь в конечном итоге одним из основных критериев правильности Вашего отчета будет соответствие остатков по складу на начало и конец отчетного периода значениям в стандартных отчетах.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 17.05.2006, 17:31   #14  
ahtoh
Гость
 
n/a
Цитата:
Сообщение от Ю-ю
И это тоже, но общий принцип можно сформулировать примерно следующим образом.
С помощью механизма Query и оператора select нельзя таблицы сначала сгруппировать, а затем объединить (если я ошибаюсь, пусть меня поправят).
Действительно, так, как вариант решения - создать View-шки для таблиц, которые нужно сгруппировать, а потом эти вьюшки соединить.
Старый 21.05.2006, 12:00   #15  
SomeBodyElse is offline
SomeBodyElse
Участник
 
10 / 10 (1) +
Регистрация: 10.04.2006
А как получить остаток на начало периода, остаток на конец периода,себестоимость (такое же поле как и в стандартном отчете ОСВ) , если я иду по InventTrans,но оборотов за данный период не было?? Заранее благодарен.
Старый 21.05.2006, 12:43   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Тогда, очевидно, Остаток на конец периода = Остаток на начало периода = Остаток на конец предыдущего периода, в котором были обороты. Себестоимости, соответственно, тоже равны.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.05.2006, 14:57   #17  
SomeBodyElse is offline
SomeBodyElse
Участник
 
10 / 10 (1) +
Регистрация: 10.04.2006
2MaximGorbunov: Да это очевидно и для меня. Просто вопрос в том из какой таблицы вытащить остаток на начало и себестоимость. Можно ли из InventSum (если да, то на какую дату ориентироваться), или придется из InventTrans брать сумму до определенного периода CostAmountAdjastmеnt+ CostAmount****(какое втoрое точно не помню так как дома нохожусь и Аксапты нет под рукой)???
Старый 22.05.2006, 12:27   #18  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Теоритически, можно и так, и так. На практике: смотрите классы InventSumPhysical и InventSumFinancial.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Оборотно-сальдовая ведомость по складу miklenew DAX: Функционал 15 29.03.2010 12:27
Оборотно-сальдовая ведомость??! Silence DAX: Прочие вопросы 16 11.12.2007 14:54
Оборотно-сальдовая ведомость по клиентам kvan DAX: Программирование 11 30.11.2007 12:00
Оборотно-сальдовая ведомость (или проводки по складу) oleg_e DAX: Функционал 5 01.10.2007 13:39
Оборотно-сальдовая ведомость. gaenar DAX: База знаний и проекты 1 07.10.2005 19:47
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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