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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2018, 12:58   #1  
AzatGDC is offline
AzatGDC
Участник
 
27 / 14 (1) ++
Регистрация: 08.11.2018
создание view для отображения поля на форме
Добрый день,

Подскажите пожалуйста. Есть форма. Во вложении. Есть поле - Наименование продукта которое смотрит на display метод itemName таблицы InventSum. Фильтрация по нему не происходит. Мне необходимо с помощью view куда нужно добавить все связанные таблицы создать свое поле но по нему возможна будет фильтрация, что мне и необходимо. Проследив связи через череду методов из исходного метода itemName таблицы InventSum я выделил связи между таблицами:
inventsum - inventtable по ItemId
inventtable.product = EcoResProduct.recid
ecoresproducttranslation.product == ecoresproduct.recid
ecoresproducttranslation.name - поле соодержащее нужную мне информацию.

Затем я создаю view добавив все эти таблицы и определив связи но на выходе как видно на скриншоте получаю некорректную выборку. Подскажите пожалуйста куда мне посмотреть?

Заранее спасибо.
Миниатюры
Нажмите на изображение для увеличения
Название: InventOnhandItem.jpg
Просмотров: 206
Размер:	190.6 Кб
ID:	12168   Нажмите на изображение для увеличения
Название: view.JPG
Просмотров: 202
Размер:	85.1 Кб
ID:	12169  

Старый 27.12.2018, 14:45   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
из цепочки связей можно исключить EcoResProduct и наложить ограничение по языку на ecoresproducttranslation
За это сообщение автора поблагодарили: AzatGDC (1).
Старый 30.12.2018, 10:20   #3  
AzatGDC is offline
AzatGDC
Участник
 
27 / 14 (1) ++
Регистрация: 08.11.2018
Спасибо за ответ. Я создал view котрое возвращает поля itemId из inventTable и необходимое мне поле Name из EcoResProductTranslation. То есть у меня есть поле itemId из таблицы inventSum котрое присутствует на форме (видно из скриншотов выше) плюс поле itemId из моего view. Если их связать то можно получить искомую выборку которую можно фильтровать. Не понима. как это сделать. Прочитал что нужно отразить это в методе init. Написал следующий код в методе init:
X++:
   itemNameAzat_ds.query().dataSourceTable(tableNum(itemNameAzat)).relations(false);
   itemNameAzat_ds.query().dataSourceTable(tableNum(itemNameAzat)).addDataSource(tableNum(InventSum)).addLink(fieldNum(InventSum, ItemId),fieldNum(itemNameAzat,ItemId));
   info(itemNameAzat_ds.query().dataSourceNo(1).toString());
но выборка получается вновь неверной и это логично. Потому что берется поле itemid которое повторяется в таблице inventSum. След-но записи извлпекаются повторяющиеся. Непонятно так же почему на форме itemId из inventSum извлекаются только уникальные значения? где это прописывается? Помогите пожалуйста разобраться.

Заранее спасибо.
Миниатюры
Нажмите на изображение для увеличения
Название: itemNameAzat.JPG
Просмотров: 293
Размер:	79.0 Кб
ID:	12171   Нажмите на изображение для увеличения
Название: 114.JPG
Просмотров: 179
Размер:	98.9 Кб
ID:	12173  

Изображения
 
Старый 30.12.2018, 14:14   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
InventSum имеет ключ по 2 полям: ItemId + InventDimId

Другими словами - это запасы товара (ItemId) в разрезе складских аналитик (InventDimId)

Я так понимаю, речь идет о форме "В наличии". Там группировка идет по складским аналитикам. Если ты выберешь для отображения все аналитики, то и на форме "В наличии" могут появиться "дубли" по номенклатуре

Это пункт меню в шапке формы "Отображение аналитики"
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 30.12.2018 в 14:17.
Старый 30.12.2018, 22:17   #5  
skycap is offline
skycap
Участник
 
43 / 14 (1) ++
Регистрация: 04.09.2008
Адрес: Москва
Добрый день.

В executeQuery источника данных InventSum попробуйте дописать:

ItemNameView_ds.queryBuildDataSource().addGroupByField(fieldNum(ItemNameView, ItemId));
ItemNameView_ds.queryBuildDataSource().addSelectionField(fieldNum(ItemNameView, Name), SelectionField::Max);
Старый 01.01.2019, 09:49   #6  
AzatGDC is offline
AzatGDC
Участник
 
27 / 14 (1) ++
Регистрация: 08.11.2018
Добрый день. С новым годом Вас) спасибо за ваши ответы.
я прописал код который вы посоветовали.

Цитата:
Сообщение от skycap Посмотреть сообщение

В executeQuery источника данных InventSum попробуйте дописать:

ItemNameView_ds.queryBuildDataSource().addGroupByField(fieldNum(ItemNameView, ItemId));
ItemNameView_ds.queryBuildDataSource().addSelectionField(fieldNum(ItemNameView, Name), SelectionField::Max);
вначале значения в полях "Наименование продукта" совпадают как мне и нужно. но потом перестают совпадать.это видно во вложении.
также я переписал запрос в методе init формы "В начличии". теперь он выглядит так:
X++:
   query = itemNameAzat_ds.query();
    qbds = query.datasourcetable(tableNum(itemNameAzat));
    qbds1 = qbds.addDataSource(tableNum(InventSum));
    qbds1.joinMode(JoinMode::ExistsJoin);
    qbds1.fetchMode(QueryFetchMode::One2One);
    qbds1.relations(false);
    qbds1.addLink(fieldNum(itemNameAzat, ItemId),fieldNum(InventSum,ItemId));
    info(itemNameAzat_ds.query().dataSourceNo(1).toString());
Цитата:
InventSum имеет ключ по 2 полям: ItemId + InventDimId

Другими словами - это запасы товара (ItemId) в разрезе складских аналитик (InventDimId)

Я так понимаю, речь идет о форме "В наличии". Там группировка идет по складским аналитикам. Если ты выберешь для отображения все аналитики, то и на форме "В наличии" могут появиться "дубли" по номенклатуре

Это пункт меню в шапке формы "Отображение аналитики"
да вы правы. форма "В наличии" и когда я выбираю в "Отображение аналитики" другие пункты появляются дубли по коду номенклатуры. Сейчас там выбран только "код номенклатуры". это какой вид фильтра на самой форме получается?

плюс когда я фильтрую свое поле из моего view. то остальные записи не подтягиваются. например поле "краткое наименование" которое берется из таблицы inventTable когда я по нему фильтрую остальные записи тоже подтягиваются. как я понял потому что указана LinkType с источником данных inventSum - InnerJoin. я связывал itemNameAzatView по itemId с InventSum, то есть создавал relation и прописывал в своействах ичтоника данных itemNameAzat joinsource - InventSum и Link type - InnerJoin. Но в таком случае мое поле "Наименование продукта" становится вообще пустым. Нет никакой выборки.

Подытоживая вижу две проблемы:
1) Мне необходимо чтобы значения из оргинилаьного поля "Наименование продукта" формы "В наличии" совпадали со значениями поля "Наименование продукта" из моего View itemNameAzat котроое я создал.
2) фильрация по моему кастомному полю должна подтягивать остальные поля в форме. Пытался связывать itemNameAzat c InventSum по полю itemId и затем выбирал в свойствах источника данных itemNameAzat JoinSource - InventSum и LinkType - InnerJoin. в итоге в моем поле "Наименование продукта получается пустая выборка"

Извините за сумбур. Спасибо.
Миниатюры
Нажмите на изображение для увеличения
Название: 112.JPG
Просмотров: 180
Размер:	141.5 Кб
ID:	12174   Нажмите на изображение для увеличения
Название: 113.JPG
Просмотров: 260
Размер:	109.2 Кб
ID:	12175  

Изображения
 

Последний раз редактировалось AzatGDC; 01.01.2019 в 09:56.
Старый 01.01.2019, 09:55   #7  
AzatGDC is offline
AzatGDC
Участник
 
27 / 14 (1) ++
Регистрация: 08.11.2018
то есть мой запрос который я прописал в методе init формы в наличии:
X++:
    query = itemNameAzat_ds.query();
    qbds = query.datasourcetable(tableNum(itemNameAzat));
    qbds1 = qbds.addDataSource(tableNum(InventSum));
    qbds1.joinMode(JoinMode::ExistsJoin);
    qbds1.fetchMode(QueryFetchMode::One2One);
    qbds1.relations(false);
    qbds1.addLink(fieldNum(itemNameAzat, ItemId),fieldNum(InventSum,ItemId));
    info(itemNameAzat_ds.query().dataSourceNo(1).toString());
отрабатывает верно. то есть он возвращает нужные мне значения в поле на форме, но они не связаны с полем "код номенклатуры" на форме и с дургими полями на форме.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не работает поиск в форме MCRCustSearch для нового поля Aquarius DAX: Программирование 1 12.11.2016 00:54
Изменения Свойств поля из кода, при создание отчета АртемМелихов DAX: Программирование 2 04.02.2014 20:34
Управление на форме атрибутами поля из табличной группы программно VBF DAX: Программирование 8 20.01.2014 13:56
Как сделать доступными для редатирования поля на форме CustInvoiceJournal? rusalaudinov DAX: Программирование 11 08.12.2009 11:07
Reread() на форме c View KpecT DAX: Программирование 8 11.11.2008 13:00

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

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

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