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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2009, 16:56   #1  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Фильтр на форме InventClassifierItemSelection
Добрый день. Простите, если повторяюсь, но не нашел на форуме ничего конкретного.... Вообщем, имеется форма InventClassifierItemSelection (Заказ на продажу/Добавить/Из классификатора). В ней отображается номенклатура и текущие остатки по ней. Хочу сделать фильтр "Только остатки", при установке которого в форме отображалась бы только номенклатура, по которой есть физический остаток по складу. Делал такое несколько раз (в формах Наличие на складах (InventOnHandItem)), в этой форме не получается.... Может кто делал такое? Подскажите пожалуйста

Последний раз редактировалось Andrux; 04.05.2009 в 16:59.
Старый 04.05.2009, 17:00   #2  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
InventClassifierItemSelection - это в какой аксапте?
Старый 04.05.2009, 17:01   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Похоже это решение какого то партнера (возможно AxRetail), или это ваши местные доработки...
в стандарте (Ах 3.0) нет такой формы, смотрите инит формы, скорее всего там какой то замут с query
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 04.05.2009, 17:06   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Возможно остатки отображаются через дисплейный метод.
Тогда нужно в случае выбора "показывать только с остатками" делать exist join к InventSum с соответствующими условиями (т.е. модифицировать query соответствующим образом).
Старый 04.05.2009, 17:27   #5  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Axapta 4.0. Возможно, что форма нестандартная.. я так думаю AxRetail. Дело в том, что на ней куча источников данных и таблица InventSum приджойнена к InventTable как Delayed, поэтому моя фильтрация не срабатывает. Ставлю InnerJoing запрос вообще умирает...
Старый 04.05.2009, 17:34   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Andrux Посмотреть сообщение
Axapta 4.0. Возможно, что форма нестандартная.. я так думаю AxRetail. Дело в том, что на ней куча источников данных и таблица InventSum приджойнена к InventTable как Delayed, поэтому моя фильтрация не срабатывает. Ставлю InnerJoing запрос вообще умирает...
Мне кажется, что какие то проблемы в связях между таблицами...
Хорошо бы увидеть запрос который отправляется в БД.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 04.05.2009, 17:48   #7  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
В InventTable_ds.executeQuery()

SELECT * FROM InventTable USING INDEX ItemIdx WHERE ((ItemType = 0) OR (ItemType = 1) OR (ItemType = 100) OR (ItemType = 2)) EXISTS JOIN * FROM InventItemRangeRef WHERE InventTable.ItemRangeIdRef = InventItemRangeRef.RangeIdRef JOIN * FROM InventItemRangeRef_Retail WHERE InventTable.ItemRangeIdRef_Retail = InventItemRangeRef_Retail.RangeIdRef

В InventSum_ds.executeQuery()

SELECT WITH FORCE_PLACEHOLDERS INDEXISHINT SUM(PostedQty), SUM(PostedValue), SUM(PhysicalValue), SUM(Deducted), SUM(Registered), SUM(Received), SUM(Picked), SUM(ReservPhysical), SUM(ReservOrdered), SUM(OnOrder), SUM(Ordered), SUM(Arrived), SUM(QuotationReceipt), SUM(QuotationIssue), SUM(PhysicalInvent), SUM(PostedValueSecCur_RU), SUM(PhysicalValueSecCur_RU), SUM(AvailPhysical), SUM(AvailOrdered) FROM InventSum GROUP BY InventSum.ItemId ASC USING INDEX ClosedItemDimIdx WHERE ((Closed = 0)) AND ((NOT (AvailPhysical = 0))) AND InventTable.ItemId=InventSum.ItemId JOIN INDEXISHINT * FROM InventDim GROUP BY InventDim.configId ASC, InventDim.InventSizeId ASC, InventDim.InventColorId ASC USING INDEX DimIdIdx WHERE InventSum.InventDimId = InventDim.inventDimId EXISTS JOIN * FROM InventLocation WHERE InventDim.InventLocationId = InventLocation.InventLocationId AND ((InventLocationType = 0) OR (InventLocationType = 101)) AND ((InventLocationId = N'Ц_СБ_ОСН'))


Записи в InventSum фильтруются, а связанная с ней по Delayed
запись InventTable не фильтруется
Старый 04.05.2009, 17:55   #8  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Andrux Посмотреть сообщение
Добрый день. Простите, если повторяюсь, но не нашел на форуме ничего конкретного.... Вообщем, имеется форма InventClassifierItemSelection (Заказ на продажу/Добавить/Из классификатора). В ней отображается номенклатура и текущие остатки по ней. Хочу сделать фильтр "Только остатки", при установке которого в форме отображалась бы только номенклатура, по которой есть физический остаток по складу. Делал такое несколько раз (в формах Наличие на складах (InventOnHandItem)), в этой форме не получается.... Может кто делал такое? Подскажите пожалуйста
(1) У Вас, как и у меня, отраслевая версия Korus Axapta Retail & Distribution. Посмотрите в верхнем меню пункт "Справка" -> "О программе Microsoft Dynamics Ax": если среди перечисления номеров версий у вас есть строчка "Retail version", то это оно и есть.

(2) форму завтра посмотрю. На ней есть датасорс InventSum, копайте в эту сторону.
Старый 04.05.2009, 17:58   #9  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
ага, Retail Version. Axapta нам Korus внедрял

Да есть датасорс, но я с ним справиться не могу ))))
Старый 05.05.2009, 07:43   #10  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
Andrux, стояла такая же задача. Столкнулись с тем, что если просто делать запрос и фильтрацию по inventSum, то форма медленно умирает - слишком тяжелый запрос для нее получается. Конечно все зависит от кол-ва зависей в inventSum и inventDim, но мы пошли другим путем - добавили в inventTable поля со значением остатков по нужным нам складам и соответсвенно фильтруем уже inventTable.

И еще - вступите в группу Axapta Retail, так людям на форуме будет проще понимать о какой Axapte идет речь.
Старый 06.05.2009, 10:11   #11  
Andrux is offline
Andrux
Участник
Axapta Retail User
 
263 / 17 (1) ++
Регистрация: 29.05.2007
Цитата:
Сообщение от ViV Посмотреть сообщение
Andrux, стояла такая же задача. Столкнулись с тем, что если просто делать запрос и фильтрацию по inventSum, то форма медленно умирает - слишком тяжелый запрос для нее получается. Конечно все зависит от кол-ва зависей в inventSum и inventDim, но мы пошли другим путем - добавили в inventTable поля со значением остатков по нужным нам складам и соответсвенно фильтруем уже inventTable.
А Вы не могли бы рассказать, что делали, может я что-то не так делаю, потому-что у меня записи не фильтруются вообще
Старый 06.05.2009, 10:48   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А вы попробуйте, для начала, воспользоваться расширенным фильтром.

Добавьте InventSum (Запасы в наличии) к "Картотеке номенклатуры", добавьте InventDim (Складская аналитика) к InventSum. Добавьте ограничение на Складскую аналитику - нужный склад. Добавьте ограничение на Запасы в наличии - Физ. доступно > 0.
Так вы увидите, насколько быстро будет работать форма при наличии фильтров.

Что касается переделки формы - использовать уже существующие InventSum и InventDim нельзя - на них навешено много логики, не учитывающей привязку через InnerJoin или ExistsJoin к InventTable. Надо добавлять свои собственные и уже для них делать фильтрацию
__________________
Axapta v.3.0 sp5 kr2
Теги
axapta retail, форма, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтр строк подчиненной таблицы на форме demon46 DAX: Программирование 4 15.07.2008 15:41
Фильтр на форме в гриде vale15 DAX: Программирование 1 18.09.2007 11:50
Фильтр на Веб форме egorych DAX: Программирование 3 21.06.2007 18:32
Фильтр на форме sah DAX: Программирование 5 10.11.2005 11:31
Не работает стандартный фильтр на форме Julietta DAX: Прочие вопросы 4 06.12.2004 13:30

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

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

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