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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2006, 07:36   #1  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Автозаполнение строк в журнале
Люди подскажите как это правильнее реализовать:

Стоит задача сделать автозаполнение строк в скласких журналах на основании выбранной складской аналитики (т.е. пользователь выбирает Склад и МОЛ жмет ОК и ему в журнал попадает все что висит на этой складской аналитике)! Причем наличие считать не на конкретную дату, а так как считает сама Аксапта (абстрагированно от дат, например как в LookUp-форме для контрола Склад на закладке Аналитика любого складского журнала).

реализовал запрос вида:
SELECT SUM(Qty), inventDimId, ItemId FROM InventTrans
GROUP BY InventTrans.ItemId, InventTrans.inventDimId
JOIN * FROM InventDim
WHERE InventTrans.inventDimId = InventDim.inventDimId
AND ((InventLocationId = X)) AND ((inventMOLId = Y))

однако данные разнятся с Аксаптой...

почему?
Старый 17.10.2006, 09:11   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А зачем ты используешь InventTrans, если текущие остатки лежат в InventSum, а для получения остатков в разрезе дат есть специальные классы, например:
http://axapta.mazzy.ru/lib/inventsumdate/
Старый 17.10.2006, 09:17   #3  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
ну вот пошел по пути складских проводок , что не правильный ход??
а что касается разреза дат, то мне как раз дату учитывать НЕ надо, надо так как рассчитывает наличие сама Аксапта.
Старый 17.10.2006, 09:40   #4  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
В вашем запросе нужно фильтровать только приходы и расходы, т.е должен быть еще такой фильтр:
X++:
inventTrans.packingSlipReturned   == 0                                          &&
(inventTrans.statusReceipt             == StatusReceipt::Purchased     || 
inventTrans.statusIssue                == StatusIssue::Sold);

Последний раз редактировалось Roman777; 17.10.2006 в 09:56. Причина: Исправил ошибку.
Старый 17.10.2006, 09:54   #5  
kvg6 is offline
kvg6
program-ёр
Аватар для kvg6
1C
 
160 / 81 (3) ++++
Регистрация: 27.09.2005
Адрес: Moscow forever
Цитата:
Сообщение от Roman777 Посмотреть сообщение
В вашем запросе нужно фильтровать только приходы и расходы, т.е должен быть еще такой фильтр:

X++:

inventTrans.packingSlipReturned == 0 &&
inventTrans.statusReceipt == StatusReceipt::Purchased &&
inventTrans.statusIssue == StatusIssue::Sold;



во второй строке || (или)
__________________
Становись лучше
За это сообщение автора поблагодарили: Roman777 (1).
Старый 17.10.2006, 09:54   #6  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Цитата:
Сообщение от kvg6 Посмотреть сообщение
во второй строке ||
Точно! проглядел.
За это сообщение автора поблагодарили: kvg6 (1).
Старый 17.10.2006, 10:19   #7  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
У меня такое же задание было.. использовал именно InventSum + #InventDimJoin ... Работает всё, как надо. По проводкам лучше не лазить.
Старый 17.10.2006, 10:23   #8  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от Delfins Посмотреть сообщение
У меня такое же задание было.. использовал именно InventSum + #InventDimJoin ... Работает всё, как надо. По проводкам лучше не лазить.
а поподробней можно плиз...?
Старый 17.10.2006, 10:56   #9  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Цитата:
Сообщение от sparur Посмотреть сообщение
а поподробней можно плиз...?
Смотрите метод InventSum::findSum() и его использование
ну например тут: \Classes\InventSumFinancial\setValueQty
Старый 17.10.2006, 12:07   #10  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
в классах все прекрасно, НО я так и не могу понять никак одну вещь. а именно...
Во всех классах этих используется ItemId, так вот где его брать??? мне что перебирать ВСЕ номенклатурные единицы и подставлять в этот класс??? БРЕД. Тогда получается надо делать while select... по таблице InventTrans или InventSum c ограничениями по складу и по МОЛу, и потом передавать в класс... НО какой тогда в этом смысл, если все сводится все равно к запросу по одной из таблиц?
Старый 17.10.2006, 12:11   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sparur Посмотреть сообщение
...я так и не могу понять никак одну вещь. а именно...
http://axapta.mazzy.ru/lib/inventsumdate/
__________________
полезное на axForum, github, vk, coub.
Старый 17.10.2006, 12:11   #12  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Цитата:
Сообщение от sparur Посмотреть сообщение
мне что перебирать ВСЕ номенклатурные единицы и подставлять в этот класс??? БРЕД.
Неужели трудно взять вышеназваную функцию, дублировать ее, и переделать для своих нужд - в вашем случае убрав в ней условие по ItemId?
Старый 17.10.2006, 12:13   #13  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Я же говорю, InventSum + #InventDimJoin работает прекрасно.

Код:
while select InventSum
              where InventSum.AvailPhysical       > 0
/* dimension criteria */
#InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
{
}
За это сообщение автора поблагодарили: sparur (1).
Старый 17.10.2006, 12:23   #14  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от mazzy Посмотреть сообщение
видел, спасибо... я же говорю все сводится к запросу по таблице для перебора ItemId... То же самое можно сделать и на таблице складских проводок... Не вижу смысла и выигрыша в производительности...
Старый 17.10.2006, 12:24   #15  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от Roman777 Посмотреть сообщение
Неужели трудно взять вышеназваную функцию, дублировать ее, и переделать для своих нужд - в вашем случае убрав в ней условие по ItemId?
да нет конечно... но что-то мне подсказывает что есть более конструктивный способ решения
Старый 17.10.2006, 12:39   #16  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от sparur
...
мне что перебирать ВСЕ номенклатурные единицы и подставлять в этот класс???
...
Не все, а те, которые есть в InventSum.

Если нужны текущие остатки, то брать только не закрытые физически. Если остатки на дату, то все.
__________________
С уважением,
glibs®
Старый 17.10.2006, 12:39   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sparur Посмотреть сообщение
видел, спасибо... я же говорю все сводится к запросу по таблице для перебора ItemId... То же самое можно сделать и на таблице складских проводок... Не вижу смысла и выигрыша в производительности...
Э-э-э-э.
Не видите вигрыша в производительности между перебором
в таблице номенклатур и в таблице проводок?

Ну, как скажете.

Согласен с glibs.
__________________
полезное на axForum, github, vk, coub.
Старый 17.10.2006, 12:40   #18  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Код:
static void Job10(Args _args)
{
    InventSum       InventSum;
    inventDim       inventDimSum;
    inventDim       inventDimCriteria;
    InventDimParm   InventDimParm;
    ;

    inventDimCriteria.clear();
    inventDimCriteria.InventLocationId = 'VN';

    InventDimParm.initFromInventDim(inventDimCriteria);

    while select InventSum
    where InventSum.AvailPhysical > 0
    /* dimension criteria */
    #InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
    {
        trace("%1 - %2 (%3)",InventSum.ItemId,InventSum.AvailPhysical,InventSum.InventDimId);
    }
}
Старый 17.10.2006, 12:45   #19  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от mazzy Посмотреть сообщение
Э-э-э-э.
Не видите вигрыша в производительности между перебором
в таблице номенклатур и в таблице проводок?

Ну, как скажете.

Согласен с glibs.
эээ, не совсем так поняли я не вижу смысла особого в использовании классов когда скажем дата достаточно поздняя, получается тоже самое (если не хуже) что и ограниченный запрос по складским проводкам, хотя... конечно спорно все это... эмпирика нужна ...
Старый 17.10.2006, 12:47   #20  
sparur is offline
sparur
Участник
 
334 / 25 (1) +++
Регистрация: 19.05.2006
Цитата:
Сообщение от Delfins Посмотреть сообщение
Код:
static void Job10(Args _args)
{
    InventSum       InventSum;
    inventDim       inventDimSum;
    inventDim       inventDimCriteria;
    InventDimParm   InventDimParm;
    ;

    inventDimCriteria.clear();
    inventDimCriteria.InventLocationId = 'VN';

    InventDimParm.initFromInventDim(inventDimCriteria);

    while select InventSum
    where InventSum.AvailPhysical > 0
    /* dimension criteria */
    #InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
    {
        trace("%1 - %2 (%3)",InventSum.ItemId,InventSum.AvailPhysical,InventSum.InventDimId);
    }
}
уже реализовано, сенкс но теперь просто зацепило и хочется все таки через классы реализовать
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Количество строк в Query Владимир Максимов DAX: Программирование 19 11.08.2014 18:27
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Пользовательский генератор строк-перечислений...- 2: Доп.вкладка для SysQueryForm Gustav DAX: База знаний и проекты 1 04.05.2007 18:04
БАГ: копирование строк накладных в новый заказ Антон Солдатов DAX: Функционал 2 03.12.2004 09:02
Как включить контроль изменений в журнале накладных ? NEO DAX: Функционал 0 17.06.2004 12:30

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

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

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