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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.03.2008, 11:50   #1  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Два InventDim на форме
Такой вопрос.
Создаю на форме два датасорса (VendInvioceTrans), привязываю к нему датасорсы согласно рекомендациям уважаемого Mazzy. В ините одного прописываю запрос:
X++:
Query q=new query();
QueryBuildDataSource ds;



    ds=q.addDataSource(tablenum(VendInvoiceTrans));
    ds.orderMode(ordermode::GroupBy);
    ds.addRange(fieldnum(VendInvoiceTrans,InvoiceDate)).value(strfmt('%1..%2',d1,d2));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,ItemId));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,PurchPrice));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,PurchUnit));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,PriceUnit));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,currencyCode));
    ds.addSelectionField(fieldnum(VendInvoiceTrans,InventDimId));

    ds.addSelectionField(fieldnum(VendInvoiceTrans,Qty),selectionfield::Sum);
    ds.addSelectionField(fieldnum(VendInvoiceTrans,LineAmount),selectionfield::Sum);
    ds.addSelectionField(fieldnum(VendInvoiceTrans,LineAmountTax),selectionfield::Sum);
    ds.addSelectionField(fieldnum(VendInvoiceTrans,RecId),selectionfield::Count);

    ds.addSortField(fieldnum(VendInvoiceTrans,ItemId));
    ds.addSortField(fieldnum(VendInvoiceTrans,currencyCode));
    ds.addSortField(fieldnum(VendInvoiceTrans,PurchPrice));
    ds.addSortField(fieldnum(VendInvoiceTrans,PurchUnit));
    ds.addSortField(fieldnum(VendInvoiceTrans,PriceUnit));
    ds.addSortField(fieldnum(VendInvoiceTrans,InventDimId));

    this.query(q);
Другой фильтрую по первому в соответствии со всеми выводимыми полями.
Также (для проверки) вывожу значения InventDim не в гриде, а рядом.
В результате на проверочных полях инфа есть, на обычном (втором) датасорсе в гриде тоже есть, а на в гриде по первому датасорсу инфа появляется только после позицонирования на конкретное поле/конкретую запись. Никто не подскажет, что не так?

Последний раз редактировалось gefr; 19.03.2008 в 12:30.
Старый 19.03.2008, 12:16   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
А для Grid-oв правильные датасорсы указаны.
И можно ещё посотреть что в запросе info(this.query().datasourceName("..").toString()).
Причём здесь PurchLine не понял в коде то его нет, а query вы новый кодом создаёте убивая старый. Вообщем не понятно причём здесь PurchLine
Старый 19.03.2008, 12:17   #3  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
сделал-проверил - все правильно настроено, но не работает

Последний раз редактировалось gefr; 19.03.2008 в 12:29.
Старый 19.03.2008, 12:21   #4  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Вот проект. Только у нас есть свои аналитики, при перекомпиляции формы должны исчезнуть
Вложения
Тип файла: rar PurchPrices.rar (5.2 Кб, 83 просмотров)

Последний раз редактировалось gefr; 19.03.2008 в 12:35.
Старый 19.03.2008, 12:59   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
А что вы хотите сделать?
В каком гриде какая информация вам нужна?
На в скидку смутило, что InventDim приджойнены active-ом.
И то что в executeQuery после того как вы подменили запрос используете super().
Знать бы поподробнее что вы хотите увидеть в итоге.
Старый 19.03.2008, 13:05   #6  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
запрос Active - этоя уже экспериментировал - искал, может, в этом проблема.
Суть запроса простая - вывести сгруппированные строки из накладных, чтобы их можно было бы сравнить, на допзакладке посмотреть развертку сгруппированной строки.
Решаемая задача - контроль закупочных цен. Если цены разные на одну позицию с одинаковой номенклатурой - выяснять почему. не всегда у номенклатуры есть аналитии, не всегда эти аналитики имеют значение (напр. партия) поэтому включена возможность их отключения для уменьшения списка.
Старый 19.03.2008, 13:08   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
По-моему, тупое дублирование всего, что связано с аналитиками с TransferJournal никому не вредило
Старый 19.03.2008, 13:08   #8  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
а без супера в executequery он возвращает пустой набор данных
Старый 19.03.2008, 13:11   #9  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Цитата:
Сообщение от kashperuk Посмотреть сообщение
По-моему, тупое дублирование всего, что связано с аналитиками с TransferJournal никому не вредило
так вроде продублировал все. а выбирать надо сразу для обоих inventdim - иначе нет смысла в детализации группировки. В принципе, подобная проблема иногда возникает и при соединении на форме любых других таблиц, даже если нет суммирования
Старый 19.03.2008, 13:17   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Таак.
А если разбить задачу на 2.
Сперва сделать сгруппированное отображение, а уж потом только допиливать туда детализацию.
Это должно нормально работать, поэтому ошибка явно где-то есть.

Попробуйте еще fetchMode установить в значение QueryFetchMode::OneToOne
Старый 19.03.2008, 13:41   #11  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
1) всё таки Innerjoin.
2) super() в запросе на верх. А потом из него берём наш датасорс
q=this.query();
ds=q.DataSourceTable(tablenum(VendInvoiceTrans));
3) Что то я не понял логику работы с InventDim.
Определитесь с тем учавствуют у вас в группировке аналитики или нет.
Если нет, то у вас InventDimId будет всегда пустой соответственно и джойнить InventDim нет смысла.
Если да, то по каким именно аналитикам. Т.е. если по партии то у вас партия будет заполнена остальные пустые.
Вам нужно посмотреть как работает форма SalesQuickQuote (в заказе ->функции ->создать строки).
Там специальным механизмом отображения аналитики добиваются группиривки по нужным аналитикам.
А если вы будете группировать без учёта аналитик то у вас аналитики и не будет.
Группировать надо не InventDimId, а конкретную складскую аналитику.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15
Восемь датасоурсов на форме radya DAX: Программирование 1 20.08.2007 15:39
inventUpd_reservation использование inventDim SHiSHok DAX: Программирование 2 31.03.2007 21:32
Как подключить датасоурсы на два вторичных ключа одинакового типа на форме Damn DAX: Программирование 6 25.09.2003 10:26
Про два грида на одной форме YVAS DAX: Программирование 4 01.08.2003 10:53

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

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

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