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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.05.2006, 09:31   #1  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Помогите сваять отчет по остаткам на складе
Вообщем я начинающий в Ax, необходимо сварганить отчет, выдающий остатки по номенклатуре на определенную дату.
При этом учесть возможность фильтрации и группировки по 5-ти признакам:
- склад
- МОЛ
- номенклатурная группа
- номенклатура
- партия

Подскажите какого вида Query надо забить, ну и как лучше его обработать!!!
Старый 29.05.2006, 09:48   #2  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Читайте классику!!!

http://www.axapta.mazzy.ru/lib/inventsumdate/
Старый 29.05.2006, 09:48   #3  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Начать надо с анализа отчетов Управление запасами/Отчеты/Статус/Физ.наличие/Физ.наличие по складам (Физ.наличие по группам)
Старый 29.05.2006, 10:25   #4  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от slava09
Читайте классику!!!

http://www.axapta.mazzy.ru/lib/inventsumdate/
уже читаю только вот не могу пока разобраться как их применять...начинаешь смотреть использование этих классов хотя бы в том же стандартном отчете Физ. наличие по складам...и начинаются такие дебри...не понять что за кем вызывается и для чего...
Старый 29.05.2006, 10:26   #5  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от raz
Начать надо с анализа отчетов Управление запасами/Отчеты/Статус/Физ.наличие/Физ.наличие по складам (Физ.наличие по группам)
пытаюсь... пока слабо получается
Старый 29.05.2006, 10:48   #6  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
каким образом в отчете Физ. наличие по группам вызываются стандартные классы, описанные в статье http://www.axapta.mazzy.ru/lib/inventsumdate/...??
там если идти по отладчику отслеживая события, вызываемые нажатием кнопы ОК, приходим к тому что запускается класс RunBaseReport и нигде нет ни намека на использование классов: InventSumDateValueReport, InventSumDateValueReportDim
о которых в статье написано что именно они используются этими стандартными отчетами
Старый 29.05.2006, 11:03   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Смотрите отчет InventDimPhys.
В нем в методе fetch() создается экземпляр класса InventSumDateValueReportDim, а на секциях отчета созданы дисплейные методы, которые возвращают значения из этого класса
__________________
Axapta v.3.0 sp5 kr2
Старый 29.05.2006, 11:22   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от sparur
каким образом в отчете Физ. наличие по группам вызываются стандартные классы, описанные в статье
коллега, как программист программисту - Вы точки останова в интересующих методах ставить пробовали?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 29.05.2006, 11:57   #9  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
PHP код:
static void Job110(Args _args)
{
inventtrans inventtrans;
inventdim inventdim;
inventsum inventsum;
;
     
select sum(Qty),sum(costAmountPosted),
                                   
sum(costAmountAdjustmentfrom InventTrans index hint ItemIdx
        group by ItemId
            where 
                  InventTrans
.DatePhysical  <= ваша дата                          &&
                  
InventTrans.ItemId        == "ваша номенклатура" && 
                  
InventTrans.StatusIssue   != StatusIssue::OnOrder               &&
                  
InventTrans.StatusIssue   != StatusIssue::Picked                &&
                  
InventTrans.StatusIssue   != StatusIssue::ReservOrdered         &&
                  
InventTrans.StatusIssue   != StatusIssue::ReservPhysical        &&
                  
InventTrans.StatusIssue   != StatusIssue::Deducted              &&
                  
InventTrans.StatusIssue   != StatusIssue::QuotationIssue        &&
                  
InventTrans.StatusReceipt != StatusReceipt::Registered          &&
                  
InventTrans.StatusReceipt != StatusReceipt::Arrived             &&
                  
InventTrans.StatusReceipt != StatusReceipt::QuotationReceipt    &&
                  
InventTrans.StatusReceipt != StatusReceipt::Ordered
        join inventDim index hint DimIdIdx
            where inventDim
.inventDimId      == InventTrans.inventDimId           &&
                  
inventDim.InventLocationId == "ваш склад";
inventDim.inventDimId;

info(strfmt("%1,  %2 ",inventtrans.Qtyinventtrans.costAmountAdjustment inventtrans.costAmountPosted));


Старый 29.05.2006, 12:00   #10  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от Vadik
коллега, как программист программисту - Вы точки останова в интересующих методах ставить пробовали?
угу, теперь буду пробовать...
канеш пробовал....
Старый 29.05.2006, 12:26   #11  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от Sada
PHP код:
static void Job110(Args _args)
{
inventtrans inventtrans;
inventdim inventdim;
inventsum inventsum;
;
select sum(Qty),sum(costAmountPosted),
sum(costAmountAdjustmentfrom InventTrans index hint ItemIdx
group by ItemId
where 
InventTrans
.DatePhysical <= ваша дата &&
InventTrans.ItemId == "ваша номенклатура" && 
InventTrans.StatusIssue != StatusIssue::OnOrder &&
InventTrans.StatusIssue != StatusIssue::Picked &&
InventTrans.StatusIssue != StatusIssue::ReservOrdered &&
InventTrans.StatusIssue != StatusIssue::ReservPhysical &&
InventTrans.StatusIssue != StatusIssue::Deducted &&
InventTrans.StatusIssue != StatusIssue::QuotationIssue &&
InventTrans.StatusReceipt != StatusReceipt::Registered &&
InventTrans.StatusReceipt != StatusReceipt::Arrived &&
InventTrans.StatusReceipt != StatusReceipt::QuotationReceipt &&
InventTrans.StatusReceipt != StatusReceipt::Ordered
join inventDim index hint DimIdIdx
where inventDim
.inventDimId == InventTrans.inventDimId &&
inventDim.InventLocationId == "ваш склад";
inventDim.inventDimId;
 
info(strfmt("%1, %2 ",inventtrans.Qtyinventtrans.costAmountAdjustment inventtrans.costAmountPosted));
 

ругается однако
Старый 29.05.2006, 12:29   #12  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
на что? хотелось бы знать...
Старый 29.05.2006, 12:31   #13  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
вот на это:
inventDim.inventDimId;
грит ошибка синтаксическая
Старый 29.05.2006, 12:35   #14  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Это моя ошибка , удалите эту строку.
Старый 29.05.2006, 12:43   #15  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
ну теперь работает, однако зачем пользовать inventtrans, если есть таблица InventSum со складскими остатками??
Старый 29.05.2006, 12:51   #16  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Насколько я понял, если делать через inventtrans на сегодня (к примеру), то данные совпадут с обороткой стандартной (хотя я не уверен что она на 100% у нас стандартная), если через InventSum, то будет физическое наличие...
Может я в чём не прав и меня поправят...
PHP код:
static void Job109(Args _args)
{
inventsum   i;
InventDim   id;
select sum(postedQty),sum(received),sum(deducted),sum(registered),sum(pickedfrom i group by itemid where i.ItemId == "номенклатура"
            
&& i.LastUpdDatePhysical <= today()
    
join id where id.InventLocationId == "склад" && id.inventDimId == i.InventDimId;
print 
i.postedQty i.received i.deducted i.registered i.picked;
pause;


Последний раз редактировалось Sada; 29.05.2006 в 13:03.
Старый 29.05.2006, 13:08   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Sada
Насколько я понял, если делать через inventtrans на сегодня (к примеру), то данные совпадут с обороткой стандартной (хотя я не уверен что она на 100% у нас стандартная), если через InventSum, то будет физическое наличие...
Может я в чём не прав и меня поправят...
Нет, вы не совсем правы.
Принцип изложен в статье, ссылку на которую дали выше
Помогите сваять отчет по остаткам на складе

См. также
Остатки на дату.
Остатки номенклатуры
Отчёт Упр. Запасами \ Отчёты \ Статус \ Оборотная ведомость по складу
Остаток номенклатуры на дату
__________________
полезное на axForum, github, vk, coub.
Старый 30.05.2006, 07:07   #18  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
уф, ну вроде со стандартными классами разобрался (как их использовать), теперь вот возник вопрос другого плана:
т.к. в класс InventSumDateValueReportDim надо передавать "Номенклатуру" и набор складских аналитик (запись из таблицы InventDim), то мне сейчас необходимо составить запрос, который бы позволял перебрать все возможные варианты значений-фильтров: склад, МОЛ, группа номенклатуры, номенклатура, партия. Это необходимо в случае если не указаны никакие фильтры и тогда данные необходимо выдавать с группировкой по всем 5-ти фильтрам со всеми имеющимися значениями...
собственно хотелось бы получить подсказки, которые помогут мне составить необходимый запрос
Старый 30.05.2006, 07:25   #19  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от AndyD
Смотрите отчет InventDimPhys.
В нем в методе fetch() создается экземпляр класса InventSumDateValueReportDim, а на секциях отчета созданы дисплейные методы, которые возвращают значения из этого класса
спасибо за подсказку, теперь бы еще сформировать запрос, делающий пробег по всем моим позициям фильтрации (5 штук), чтобы на основе данных, полученных из цикла формировать собственный экземпляр InventSumDateValueReportDim
Старый 30.05.2006, 13:10   #20  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
неужто никто не подскажет ничего полезного в этом плане ??
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вписать динамический отчет в страницу (DAX 4.0) Qaz Qwerty DAX: Программирование 2 17.07.2008 05:46
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Ошибки в отчете о статусе БД, Не совсем понятный отчет. Помогите разобраться. Poleax DAX: Администрирование 7 21.08.2007 12:23
Отчет по остаткам с партиями... NJD DAX: Программирование 6 21.01.2005 11:47
Отчет по остаткам ТМЦ на складах в разрезе бух.счетов tolstjak DAX: Функционал 10 26.02.2004 00:53

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

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

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