24.10.2018, 14:29 | #1 |
Участник
|
D365 Custom datasource EventHandler on ListPage
Необходимо написать EventHandler для кастомной таблицы, которая была добавлена на ProjProjectsListPage через Query. При копировании хендлера VS ругается что такой датасорц не найден. Как решить проблему?
|
|
24.10.2018, 16:21 | #2 |
Участник
|
Цитата:
сделай пару скриншотов, что ли: что куда добавил, модели, расширение это или перекрытие - короч, больше деталей.
__________________
Felix nihil admirari |
|
24.10.2018, 16:26 | #3 |
Участник
|
Сама таблица была добавлена в Query "ProjTable_NoFilter", в редакторе формы отображается в списке DataSources
Код EventHandler скопированного из редактора форм, метод OnInitialized. X++: [FormDataSourceEventHandler(formDataSourceStr(ProjProjectsListPage, ProjTableLink), FormDataSourceEventType::Initialized)] public static void ProjTableLink_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e) |
|
24.10.2018, 17:08 | #4 |
Участник
|
а на другие таблицы из того же квери тоже ругается?
боюсь, придётся цеплятся к событию инициализации формы и там уже программно добираться до твоей новой таблицы
__________________
Felix nihil admirari |
|
24.10.2018, 17:20 | #5 |
Участник
|
На те таблицы что были в Query изначально не ругается. Кроме того, метод formDataSourceStr видит больше таблиц чем перечислено в дизайне формы или той же Query.
Добраться до моего датасорца из ProjProjectsListPageInteraction тоже пытался, ничего не выходит: this.listPage().formRun().dataSource(tableStr(ProjTableLink) возвращает null не могу никак понять где ListPage ищет доступные источники, и можно ли это вообще решить в extensions |
|
24.10.2018, 17:46 | #6 |
Участник
|
я тебе больше скажу: я и таблицы-то такой найти не могу ProjTableLink - это что за зверь такой?
__________________
Felix nihil admirari |
|
24.10.2018, 17:58 | #7 |
Участник
|
да, похоже, нашли подводный камень: прицепиться нельзя. по крайней мере, привычными нам способами. ищи, стало быть, необычный. через method overloading, например.
__________________
Felix nihil admirari |
|
24.10.2018, 18:00 | #8 |
Участник
|
ProjTableLink - это кастомная таблица. Я ее добавил в Query рядом с CustGroup. То что прицепиться нельзя не самое страшное, я ее даже не могу в коде формы получить как ссылку на DataSource
|
|
24.10.2018, 18:02 | #9 |
Участник
|
CustGroup - это я добавил таблицу для эксперимента, её в оригинальном квери нет.
поясни, что такое "я ее даже не могу в коде формы получить как ссылку на DataSource" подсказка: посмотри, как я оформил информацию в предыдущем ответе; так сразу всем всё понятно станет
__________________
Felix nihil admirari |
|
24.10.2018, 18:41 | #10 |
Участник
|
X++: public void initialized() { FormDataSource ds; next initialized(); ds = this.listPage().formRun().dataSource(tableStr(ProjTableLink)); //= null } |
|
24.10.2018, 19:51 | #11 |
Участник
|
tableStr того же поля ягода. попробуй искать по коду таблицы, без использования подобных функций.
__________________
Felix nihil admirari |
|
26.10.2018, 11:42 | #12 |
Участник
|
пробовал tableNum тоже самое. Оно в списке датасорцов такой таблицы просто не видит. Список датасорцов можно в дебаггере просмотреть, он немного странный в данном случае, я не могу понять откуда там взялись некоторые таблицы
|
|
26.10.2018, 18:11 | #13 |
Banned
|
Цитата:
Сообщение от syl
На те таблицы что были в Query изначально не ругается. Кроме того, метод formDataSourceStr видит больше таблиц чем перечислено в дизайне формы или той же Query.
Добраться до моего датасорца из ProjProjectsListPageInteraction тоже пытался, ничего не выходит: this.listPage().formRun().dataSource(tableStr(ProjTableLink) возвращает null не могу никак понять где ListPage ищет доступные источники, и можно ли это вообще решить в extensions this.listPage().formRun().dataSource(tableStr(ProjTableLink) рабочий и не нужно обращаться через что-то типа queryRun(),query(). Попробывал бы из run то же самое. Мало ли какое там связывание. Ну и чуть оффтопа, как со сроками? |
|
29.10.2018, 17:29 | #14 |
Участник
|
Try this:
X++: [ExtensionOf(classStr(ProjProjectsListPageInteraction))] final public class ProjProjectsListPageInteraction_Extension { public void initializeQuery(Query _query) { next initializeQuery(_query); //your new datasource will be in _query } } |
|
|
|