|
04.05.2009, 16:56 | #1 |
Участник
|
Фильтр на форме InventClassifierItemSelection
Добрый день. Простите, если повторяюсь, но не нашел на форуме ничего конкретного.... Вообщем, имеется форма InventClassifierItemSelection (Заказ на продажу/Добавить/Из классификатора). В ней отображается номенклатура и текущие остатки по ней. Хочу сделать фильтр "Только остатки", при установке которого в форме отображалась бы только номенклатура, по которой есть физический остаток по складу. Делал такое несколько раз (в формах Наличие на складах (InventOnHandItem)), в этой форме не получается.... Может кто делал такое? Подскажите пожалуйста
Последний раз редактировалось Andrux; 04.05.2009 в 16:59. |
|
04.05.2009, 17:00 | #2 |
NavAx
|
InventClassifierItemSelection - это в какой аксапте?
|
|
04.05.2009, 17:01 | #3 |
Ищущий знания...
|
Похоже это решение какого то партнера (возможно AxRetail), или это ваши местные доработки...
в стандарте (Ах 3.0) нет такой формы, смотрите инит формы, скорее всего там какой то замут с query
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
04.05.2009, 17:06 | #4 |
NavAx
|
Возможно остатки отображаются через дисплейный метод.
Тогда нужно в случае выбора "показывать только с остатками" делать exist join к InventSum с соответствующими условиями (т.е. модифицировать query соответствующим образом). |
|
04.05.2009, 17:27 | #5 |
Участник
|
Axapta 4.0. Возможно, что форма нестандартная.. я так думаю AxRetail. Дело в том, что на ней куча источников данных и таблица InventSum приджойнена к InventTable как Delayed, поэтому моя фильтрация не срабатывает. Ставлю InnerJoing запрос вообще умирает...
|
|
04.05.2009, 17:34 | #6 |
Ищущий знания...
|
Цитата:
Хорошо бы увидеть запрос который отправляется в БД.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
04.05.2009, 17:48 | #7 |
Участник
|
В 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 |
Участник
|
Цитата:
Сообщение от Andrux
Добрый день. Простите, если повторяюсь, но не нашел на форуме ничего конкретного.... Вообщем, имеется форма InventClassifierItemSelection (Заказ на продажу/Добавить/Из классификатора). В ней отображается номенклатура и текущие остатки по ней. Хочу сделать фильтр "Только остатки", при установке которого в форме отображалась бы только номенклатура, по которой есть физический остаток по складу. Делал такое несколько раз (в формах Наличие на складах (InventOnHandItem)), в этой форме не получается.... Может кто делал такое? Подскажите пожалуйста
(2) форму завтра посмотрю. На ней есть датасорс InventSum, копайте в эту сторону. |
|
04.05.2009, 17:58 | #9 |
Участник
|
ага, Retail Version. Axapta нам Korus внедрял
Да есть датасорс, но я с ним справиться не могу )))) |
|
05.05.2009, 07:43 | #10 |
Axapta Retail User
|
Andrux, стояла такая же задача. Столкнулись с тем, что если просто делать запрос и фильтрацию по inventSum, то форма медленно умирает - слишком тяжелый запрос для нее получается. Конечно все зависит от кол-ва зависей в inventSum и inventDim, но мы пошли другим путем - добавили в inventTable поля со значением остатков по нужным нам складам и соответсвенно фильтруем уже inventTable.
И еще - вступите в группу Axapta Retail, так людям на форуме будет проще понимать о какой Axapte идет речь. |
|
06.05.2009, 10:11 | #11 |
Участник
|
Цитата:
Сообщение от ViV
Andrux, стояла такая же задача. Столкнулись с тем, что если просто делать запрос и фильтрацию по inventSum, то форма медленно умирает - слишком тяжелый запрос для нее получается. Конечно все зависит от кол-ва зависей в inventSum и inventDim, но мы пошли другим путем - добавили в inventTable поля со значением остатков по нужным нам складам и соответсвенно фильтруем уже inventTable.
|
|
06.05.2009, 10:48 | #12 |
Участник
|
А вы попробуйте, для начала, воспользоваться расширенным фильтром.
Добавьте InventSum (Запасы в наличии) к "Картотеке номенклатуры", добавьте InventDim (Складская аналитика) к InventSum. Добавьте ограничение на Складскую аналитику - нужный склад. Добавьте ограничение на Запасы в наличии - Физ. доступно > 0. Так вы увидите, насколько быстро будет работать форма при наличии фильтров. Что касается переделки формы - использовать уже существующие InventSum и InventDim нельзя - на них навешено много логики, не учитывающей привязку через InnerJoin или ExistsJoin к InventTable. Надо добавлять свои собственные и уже для них делать фильтрацию
__________________
Axapta v.3.0 sp5 kr2 |
|
Теги |
axapta retail, форма, ax4.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Фильтр строк подчиненной таблицы на форме | 4 | |||
Фильтр на форме в гриде | 1 | |||
Фильтр на Веб форме | 3 | |||
Фильтр на форме | 5 | |||
Не работает стандартный фильтр на форме | 4 |
|