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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.04.2013, 11:49   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Список партий, по которым есть остатки (на дату)
Подскажите, пожалуйста, как получить список партий по которым были остатки, скажем, позавчера?
Старый 30.04.2013, 12:01   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Отчет "физическое наличие по аналитикам" с фильтром по "Доступное количество" !0.
Старый 30.04.2013, 12:03   #3  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Путь в 3-ке - УЗ \ Отчеты \ Статус \ Физ. наличие по складам
Путь в 4-ке - нет под рукой
Путь в 2009 УЗ \ Отчеты \ Статус \ Физические запасы по складским аналитикам
Путь в 2012 - похоже также как и в 2009
Указать:
1. Дата = позавчера
2. Просмотр в разрезе партий.
3. В фильтре указать не пустую партию по InventDim
Добавлено:
EVGL опередил)
Старый 30.04.2013, 12:07   #4  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
А как программно это сделать?
Старый 30.04.2013, 12:08   #5  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Вообще рекомендую
http://axapta.mazzy.ru/lib/inventsumdate/
Это по 3-ке, но для 2009 тоже актуально.
Старый 30.04.2013, 14:42   #7  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
В примере в качестве параметров используется _itemId (если не задан - то по всем номенклатурам), _dateFrom - дата, на которую нужны остатки, _inventLocationId - склад.


X++:
    while select
    sum(Qty), sum(costAmountPosted), sum(costAmountAdjustment) from InventTrans
    group by ItemId
    where
    (
        !_itemId || InventTrans.ItemId == _itemId
    )
    &&
    (
        InventTrans.DatePhysical < _dateFrom
    )
    &&
    (
        InventTrans.StatusReceipt == StatusReceipt::Purchased ||
        InventTrans.StatusReceipt == StatusReceipt::Received ||
        InventTrans.StatusIssue == StatusIssue::Sold ||
        InventTrans.StatusIssue == StatusIssue::Deducted
    )
    join inventDim group by InventBatchId
    where inventDim.inventDimId == inventTrans.inventDimId &&
    (!_inventLocationId || inventDim.InventLocationId == _inventLocationId)
    {
    }
За это сообщение автора поблагодарили: Eldar9x (5).
Старый 30.04.2013, 15:46   #8  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
to Ace of Database
Предложенный вами способ:
1. Будет работать значительно медленнее чем подход, который используется в стандартной функциональности.
2. Не учитывает, что дата корректировки себестоимости может (и обычно будет) отличаться от даты проводки, тем более физической даты.
3. Не учитывает статусы скомплектовано и зарегистрировано, которые влияют на остатки в наличии.
4. Опирается только на физическую дату, что не всегда верно.
Т.е. как одноразовая активность может быть и подойдет, в общем случае нет.

Я бы советовал автору все таки смотреть в сторону классов InventSumDate* в их реализации все эти нюансы учтены.
Старый 30.04.2013, 17:14   #9  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Сообщение от Starling Посмотреть сообщение
to Ace of Database
Предложенный вами способ:
1. Будет работать значительно медленнее чем подход, который используется в стандартной функциональности.
2. Не учитывает, что дата корректировки себестоимости может (и обычно будет) отличаться от даты проводки, тем более физической даты.
3. Не учитывает статусы скомплектовано и зарегистрировано, которые влияют на остатки в наличии.
4. Опирается только на физическую дату, что не всегда верно.
Т.е. как одноразовая активность может быть и подойдет, в общем случае нет.

Я бы советовал автору все таки смотреть в сторону классов InventSumDate* в их реализации все эти нюансы учтены.
Я бы с радостью, но как используя эти классы я могу получить список партий с остатками? Эти классы позволяют задавать это как входящий параметр, и получать остаток, но это ведь не совсем то
Старый 30.04.2013, 17:43   #10  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Как пример можно использовать код метода fetch() отчета InventDimPosted.
Все необходимые для вас параметры доступны в этом методе.
Вам необходимо изначально указать условия в query, согласно которым вы будете выбирать только те записи в InventSum для которых в InventDim заполнено поле "Партия".
Дальше дело техники.
Более того в отчете даже есть такой параметр как Показывать нулевые строки. Как раз он и отвечает за то, чтобы выводить только не нулевые остатки.

Сам отчет запускает в 2009 по пути УЗ \ Отчеты \ Статус \ Стоимость запасов \ Стоимость запасов по складской аналитике.
За это сообщение автора поблагодарили: Eldar9x (5).
Старый 03.05.2013, 08:31   #11  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от Starling Посмотреть сообщение
to Ace of Database
Предложенный вами способ:
1. Будет работать значительно медленнее чем подход, который используется в стандартной функциональности.
У нас отчет по движению товаров состоит из более чем 50 колонок, для вычисления каждой из которой применяется подобный запрос. Для 2500 номенклатур и 7 миллионов проводок отчет выполняется за 15 минут. Если же сделать так, как считает Аксапта в стандартных отчетах, то время выполнения отчета стремится к бесконечности.

По остальным замечаниям, все зависит от конкретной задачи.

Последний раз редактировалось Ace of Database; 03.05.2013 в 08:40.
Старый 03.05.2013, 08:39   #12  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от Starling Посмотреть сообщение
to Ace of Database.
Т.е. как одноразовая активность может быть и подойдет, в общем случае нет.

Я бы советовал автору все таки смотреть в сторону классов InventSumDate* в их реализации все эти нюансы учтены.
Вообще, данные отчеты лучше не делать для "общих случаев". Лучше всегда сделать отдельный отчет с минимумом возможных параметров. Если делать один универсальный отчет на все случаи жизни, то он будет тормозить.

По поводу статусов "скомплектовано" и "зарезервировано", то их бессмысленно учитывать в отчетах "на дату". Так как сегодня мы не можем знать сколько было скомплектовано, скажем, неделю назад.
Старый 06.05.2013, 18:47   #13  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
По поводу статусов "скомплектовано" и "зарезервировано", то их бессмысленно учитывать в отчетах "на дату". Так как сегодня мы не можем знать сколько было скомплектовано, скажем, неделю назад.
С некой условностью можно узнать сколько было скомплектовано на дату. Есть такое поле InventTrans.DateInvent, которое запоминает первую дату физической регистрации или комплектации складской проводки.
Если доля разукомлектации и хождения статусов из скомплектовано в физ. резерв не велика, то можно основываться с некоторой поправкой на это поле. Ограничение в том, что это поле обновляется только в момент первичного перехода в нужный статус и потом не сбрасывается.
Может кто использовал это поле, меня поправит...
Старый 06.05.2013, 19:21   #14  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Тогда придется писать хитрый запрос, в котором проверять, что если DatePhysical больше, чем DateInvent, то считать что в промежутке между DateInvent и DatePhysical проводка была скомплектована. Дело дойдет до того, что придется анализировать каждую проводку в цикле.
Старый 07.05.2013, 11:16   #15  
Evgeniy_R is offline
Evgeniy_R
Участник
 
27 / 17 (1) ++
Регистрация: 03.11.2010
Адрес: Moscow Region
Все зависит от задачи, которая стоит.
Если мы говорим про универсальность, то я полностью согласен с тем, что отчет будет тяжелым. По поводу легких "заточенных" отчетов под какие-то определенные задачи, то
рано или поздно они консолидируются во что-то тяжелое...

В остальном as you like)
Старый 07.05.2013, 13:45   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
У нас отчет по движению товаров состоит из более чем 50 колонок, для вычисления каждой из которой применяется подобный запрос. Для 2500 номенклатур и 7 миллионов проводок отчет выполняется за 15 минут. Если же сделать так, как считает Аксапта в стандартных отчетах, то время выполнения отчета стремится к бесконечности.

По остальным замечаниям, все зависит от конкретной задачи.
Интересно узнать, как вы объясняете своим пользователям, почему остатки по вашему отчёту отличаются от остатков по стандартным отчётам по складу.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.05.2013, 10:25   #17  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
У нас остатки не отличаются. И дело вообще не в отчетах и технических особенностях реализации. Важно правильно поставить управленческий учет. И договориться, что считать остатками на дату.

Последний раз редактировалось Ace of Database; 08.05.2013 в 10:28.
Старый 08.05.2013, 10:28   #18  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
У нас остатки не отличаются.
А себестоимость?
Старый 08.05.2013, 10:35   #19  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
В рамках принятой у нас практики, такой расчет себестоимости всех устраивает. Я не говорю, что это устроит всех. На двух предприятиях, на которых я работал, и в которых велся учет себестоимости в Аксапте, придумывали что-то свое и не пользовались стандартными отчетами по себестоимости. И это не я придумывал. Были большие команды внедренцев.
Наверное я зря включил поля CostAmountPosted и CostAmoutAdjustment в пример. Скорее всего, автора интересовали количественные остатки на дату.
Старый 08.05.2013, 10:44   #20  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
В ходе эволюции больших проектов, в которых я участвовал, большие команды разработчиков пытались применять универсальные механизмы. Но в итоге практика победила теорию.
Я бы сам был рад приспособить один универсальный отчет под нужды пользователей.
Но пользователям не нужны универсальные отчеты. Им нужны отчеты из 100 колонок в Экселе, с красивыми группировками. Каждый новый менеждер привносит в систему что-то свое.
При этом нанимать менеджеров со знанием Аксапты и с аксаптовским подходом к делу, видимо, не соответствует рыночным условиям.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Конвертировать некую дату в UTC-дату Vasiliusis DAX: Программирование 4 25.04.2013 09:59
номера партий soq DAX: Функционал 8 02.10.2008 11:16
Обработка накладной – функция изменить дату Sanya DAX: Функционал 2 05.08.2005 12:50
Цена на дату создания заказа/закупки George Nordic DAX: Функционал 2 29.06.2005 15:56
Остатки dog37 DAX: Программирование 6 02.06.2005 11:25

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:12.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.