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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.05.2004, 12:47   #1  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
В форму InventOnhandItem нужно добавить поле ItemName из таблицы InventTable для фильтрации данных по названию номенклатуры. Добавлял DataSource в дизайн, пробовал изменять Query и настраивать связь с InventTable программно, ничего не помогает – поле в форме выводится пустым. Подскажите, пожалуйста, что делать?
Старый 21.05.2004, 12:54   #2  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Извиняюсь за "непрограммистский" ответ, но существует штатная возможность фильтрации по связанным таблицам, а именно: в поле фильтр нужно хлопнуть правой кнопкой мыши на названии исходной таблицы, и выведется список всех связанных - по ним можно тоже ставить фильтр.
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately.
Старый 21.05.2004, 12:58   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
не. тут дело не в этом.

Форма InventOnHand создает сложный запрос с group by. В стандартной аксапте названия номенклатуры в списке группировки нет.

Максим Горубнов неоднократно такую штуку делал. Когда освободиться, думаю, ответит.
__________________
полезное на axForum, github, vk, coub.
Старый 21.05.2004, 13:36   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Здесь дело в том, что по правилам SQL при использовании GROUP BY нельзя напрямую (в смысле, без использования агрегатной функции) выбирать в запросе поля, по которым не задана группировка. Форма InventOnHand генерирует достаточно большой запрос с кучей группировок по складским аналитикам. Когда Вы добавляете поле ItemName из InventTable Axapta сначала пытается добавить его в обычный список полей для SELECT'а, а потом, когда выясняется, что группировки по нему нет, выбрасывает его. Соответственно, запрос не возвращает значения ItemName.

Что делать. Самый простой способ - добавить в запрос агрегатную функцию по полю ItemName. Для этого в методе init() у DataSource InventTable после super() добавьте такую строчку:<div class='XPPtop'>X++</div><div class='XPP'>this.query().dataSourceTable(this.table()).addSelectionField([color=:blue]fieldnum[/color](InventTable, ItemName), SelectionField::Max);</div> Это приведет к тому, что в запросе к БД вместо SELECT ItemName появится SELECT MAX(ItemName).

Способ сложнее - исправить запрос на форме так, чтобы в нем появилась группировка по полю ItemName. Чтобы это сделать, смотрите класс InventDimCtrl_Frm_OnHand, а в нем метод modifyQuery(). Именно в этом методе в запрос, генерирующийся формой, добавляются различные группировки. Вызывается метод на форме из метода executeQuery() у DataSource InventSum.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.05.2004, 13:58   #5  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Большое спасибо, всё работает.
Старый 21.05.2004, 20:53   #6  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
В форме InventOnhandItem после изменения складской аналитики (например, добавили / убрали код палеты) теряется исходная группировка по InventSum и остаётся та, что была после добавления аналитики (по InventDim). Делал reread, research, refresh DataSource'ов, но группировка остаётся по InventDim. Подскажите, пожалуйста, можно ли (при снятии всех "галок" в аналитике) вернуть группировку по InventSum?
Старый 24.05.2004, 12:44   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а что значит добавили/убрали код паллеты?
это значит галочку включили? тогда правильно.
не понимаю вопроса.
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2004, 19:29   #8  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от mazzy
а что значит добавили/убрали код паллеты?
это значит галочку включили? тогда правильно.
не понимаю вопроса.
Да, галочку включили, группировка после этого поменялась, затем галочку выключили, а группировка не вернулась в первоначальное состояние, т.е. осталась такой же, как и с галочкой.
Старый 24.05.2004, 20:53   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Дык, это править класс надо, который за галочки отвечает.
__________________
полезное на axForum, github, vk, coub.
Старый 28.05.2004, 17:57   #10  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Оказалось, что класс править не нужно, после установки SP3 всё заработало само. После снятия всех галок в аналитике группировка восстанавливается по InventSum.
Большое спасибо всем за Ваши ответы.
 


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

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

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