02.09.2022, 02:52 | #1 |
Участник
|
Jumpref (DAX2012)
Добрый день!
Есть форма, на которой главный датасорс не привязан к компании, а подчиненный хранится в разрезе компаний. В главном датасорсе есть код компании, настроена связь таблиц через 2 поля. Однако при попытке провалиться в форму подчиненного датасорса, она открывается пустой. Перепробовал различные варианты реализации jumpref, но результат всегда один и тот же - в caption прописана нужная запись, при этом форма пустая. Что я упустил? |
|
02.09.2022, 09:22 | #2 |
Участник
|
Как-то очень абстрактно всё, примеры кода из jumpref хотя бы приведите, что ли
|
|
02.09.2022, 10:43 | #3 |
Участник
|
Встреча такое, но в 2009й версии.
В 3ке работало. Лечили просто - В коде метода писали ChangeCompany И внутри него переход делали. |
|
02.09.2022, 10:54 | #4 |
Участник
|
Да собственно в моей голове jumpref должен был отработать без перекрытий, так как есть настроенный relation.
После того как не отработал, подумал что проблема в разных компаниях и написал: X++: changeCompany(DataAreaId2) { super(); } Попытка через MenuFunction также провалилась. X++: changeCompany(DataAreaId2) { new MenuFunction(menuitemdisplaystr(ProdTable), MenuItemType::Display).run(args); } |
|
02.09.2022, 11:08 | #5 |
Участник
|
Цитата:
При этом в анализируемой строке ProdTable принадлежит к DataAreaId2 и прекрасно отображается на форме.
Он же, по идее, ядром должен компанию в запросе ограничивать. Там никаких шаманств на форме в запросах нет для этого? Временной таблицы и т.д.? |
|
02.09.2022, 11:28 | #6 |
Участник
|
Нет. Только свойства на форме setCompany == No и на датасорсах crossCompanyAutoQuery == Yes.
По такому же принципу и View работает. Если у главной таблицы savedatapercompany == No, а у подчиненной Yes, то при открытии таблицы отобразятся записи всех компаний подчиненной таблицы Последний раз редактировалось DesparioN; 02.09.2022 в 12:19. |
|
|
За это сообщение автора поблагодарили: Pandasama (2). |
02.09.2022, 12:00 | #7 |
Участник
|
О, не знал про такие свойства. Даже не сталкивался с такой необходимостью как-то.
А по теме - поставить точку останова на init/run открывающейся по jumpref формы и посмотреть, что там творится в Args, в запросе и т.д. - не пробовали? Может быть, как раз дело в том, что из-за setCompany = No у родительской формы в дочереней запрос как-то неправильно компании обрабатывает? |
|
02.09.2022, 12:03 | #8 |
Участник
|
Посмотрите, что вас в ограничениях по запросу, в том числе dynalink в открывающей форме, стандартными средствами.
args не видно где у вас заполняются, если в текущей компании, то работать и не будет, при переключениях между компаниями надо обнулять данные в курсорах (=null), иначе он помнит код старой компании. Попробуйте такой код X++: ProdTable prodTableAreaId2; changeCompany(DataAreaId2) { prodTableAreaId2 = ProdTable::find(ProdTable.ProdId); args = new Args(); args.record(prodTableAreaId2); new MenuFunction(menuitemdisplaystr(ProdTable), MenuItemType::Display).run(args); }
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: DesparioN (1). |
02.09.2022, 12:18 | #9 |
Участник
|
Не все скопировал. Как раз так и было написано.
|
|
02.09.2022, 14:47 | #10 |
Участник
|
Благодарю)
Проблема была именно в dynalink |
|
14.10.2022, 02:49 | #11 |
Участник
|
Не понял за dynalink. Туплю наверное.
Альтернативное решение для FnO X++: public void jumpRef() { CTSGLImportTableView glImportTableView; glImportTableView = element.dataSource().cursor(); if (glImportTableView.LedgerJournalId) { // gets the deep links generator instance var generator = new Microsoft.Dynamics.AX.Framework.Utilities.UrlHelper.UrlGenerator(); var currentHost = new System.Uri(UrlUtility::getUrl()); generator.HostUrl = currentHost.GetLeftPart(System.UriPartial::Authority); generator.Company = glImportTableView.CompanyCode; // curext(); generator.MenuItemName = menuItemDisplayStr(LedgerJournalTableDailyGlobal); generator.Partition = getCurrentPartition(); // repeat this segment for each datasource to filter var requestQueryParameterCollection = generator.RequestQueryParameterCollection; requestQueryParameterCollection.AddRequestQueryParameter( formDataSourceStr(LedgerJournalTable,LedgerJournalTable), fieldStr(LedgerJournalTable, JournalNum), glImportTableView.LedgerJournalId ); System.Uri fullURI = generator.GenerateFullUrl(); // to get the encoded URI, use the following code new Browser().navigate(fullURI.AbsoluteUri); //ISSUE: it will not open posted General Journals. Well, it opens form, but user should change filter to show All super(); } } |
|
|
Похожие темы | ||||
Тема | Ответов | |||
kurthatlevik: DAX2012 R3 – Playing with Retail CRT | 0 | |||
DAX2012 - перепоставки по закупкам | 2 | |||
Dynamics AXBR: Usando o jumpRef() | 0 | |||
Обработка jumpRef в Dialog | 13 |
|