27.12.2018, 12:58 | #1 |
Участник
|
создание view для отображения поля на форме
Добрый день,
Подскажите пожалуйста. Есть форма. Во вложении. Есть поле - Наименование продукта которое смотрит на display метод itemName таблицы InventSum. Фильтрация по нему не происходит. Мне необходимо с помощью view куда нужно добавить все связанные таблицы создать свое поле но по нему возможна будет фильтрация, что мне и необходимо. Проследив связи через череду методов из исходного метода itemName таблицы InventSum я выделил связи между таблицами: inventsum - inventtable по ItemId inventtable.product = EcoResProduct.recid ecoresproducttranslation.product == ecoresproduct.recid ecoresproducttranslation.name - поле соодержащее нужную мне информацию. Затем я создаю view добавив все эти таблицы и определив связи но на выходе как видно на скриншоте получаю некорректную выборку. Подскажите пожалуйста куда мне посмотреть? Заранее спасибо. |
|
27.12.2018, 14:45 | #2 |
Участник
|
из цепочки связей можно исключить EcoResProduct и наложить ограничение по языку на ecoresproducttranslation
|
|
|
За это сообщение автора поблагодарили: AzatGDC (1). |
30.12.2018, 10:20 | #3 |
Участник
|
Спасибо за ответ. Я создал 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()); Заранее спасибо. |
|
30.12.2018, 14:14 | #4 |
Участник
|
InventSum имеет ключ по 2 полям: ItemId + InventDimId
Другими словами - это запасы товара (ItemId) в разрезе складских аналитик (InventDimId) Я так понимаю, речь идет о форме "В наличии". Там группировка идет по складским аналитикам. Если ты выберешь для отображения все аналитики, то и на форме "В наличии" могут появиться "дубли" по номенклатуре Это пункт меню в шапке формы "Отображение аналитики"
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 30.12.2018 в 14:17. |
|
30.12.2018, 22:17 | #5 |
Участник
|
Добрый день.
В executeQuery источника данных InventSum попробуйте дописать: ItemNameView_ds.queryBuildDataSource().addGroupByField(fieldNum(ItemNameView, ItemId)); ItemNameView_ds.queryBuildDataSource().addSelectionField(fieldNum(ItemNameView, Name), SelectionField::Max); |
|
01.01.2019, 09:49 | #6 |
Участник
|
Добрый день. С новым годом Вас) спасибо за ваши ответы.
я прописал код который вы посоветовали. Цитата:
также я переписал запрос в методе 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. в итоге в моем поле "Наименование продукта получается пустая выборка" Извините за сумбур. Спасибо. Последний раз редактировалось AzatGDC; 01.01.2019 в 09:56. |
|
01.01.2019, 09:55 | #7 |
Участник
|
то есть мой запрос который я прописал в методе 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()); |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|