07.03.2020, 13:21 | #1 |
Участник
|
Создание relation на на таблице DAX2012 можно ли расширить?
Добрый день.
В DAX2012 есть замечательная возможность - создать relation, указать там таблицу, настроить свойства relation и вызывать в контекстном меню "Создать \ ForeignKey \ ...". При этом создается сама запись в relation, создается поле. Все бы хорошо, но хотелось бы, поле создавалось с учетом настроек relation:
|
|
07.03.2020, 14:54 | #2 |
Участник
|
Не исследовал этот вопрос, но можно проверить несколько вещей:
1. Поковырять контекстное меню \Menus\SysContextMenu, там все доступные функции обычно заведены, а класс написанный на X++ рулит видимостью. Если найдется что-то полезное то кастомизировать. Если ничего не нашлось, то написать свое. 2. Поставить breakpoint в методах \Classes\ClassFactory\createClass \Classes\ClassFactory\formRunClass \Classes\ClassFactory\formRunClassOnClient \Classes\ClassFactory\makeObjectOnClient \Classes\ClassFactory\makeObjectOnServer подергать обсуждаемый функционал. Если остановится на точке останова, то видно какой X++ класс работает. 3. Поискать по перекрестным ссылкам обращение к соответствующим свойствам. Возможно найдется нужный класс или что-то аналогичное позволяющее написать свое. 4. Поскольку перекрестные ссылки могут проиндексировать не все из-за новомодного стиля кодирования, то можно просто поискать по подстроке по всему аот. Вот этим инструментом, это делается за 1-2 минуты Ax 2012 быстрый поиск по исходным текстам прямым SQL запросом Даже быстрее чем сканирование AOD в 2009-й |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2), S.Kuskov (2). |
07.03.2020, 22:13 | #3 |
северный Будда
|
вроде как теперь по феншую писать reference а не relation
__________________
С уважением, Вячеслав |
|
07.03.2020, 22:48 | #4 |
Administrator
|
Какой-то странный феншуй. Relation как был так и остался - он никуда не делся. Я безусловно имею в виду Relation на таблице. А relation на EDT действительно умер и возродился в виде Reference, но на нем нет тех свойств, про которые говорит топикстартер.
__________________
Возможно сделать все. Вопрос времени |
|
08.03.2020, 16:27 | #5 |
Участник
|
Я делал подобное для D365FO, но функция там запускается именно при клике на поле. При этом создается релейшн с уже заполненными сво-вами
https://github.com/TrudAX/TRUDUtilsD...table-relation В целом это несложно переписать для АХ2012, но у вас конечно более расширенные требования |
|
|
За это сообщение автора поблагодарили: sukhanchik (6), Raven Melancholic (5). |
09.03.2020, 17:54 | #6 |
Участник
|
Цитата:
Хотя в DAX2012 при заполнении EDT поля или при переносе EDT на узел полей таблицы и так предлагается создать релейшен, если в EDT настроено свойство Reference, но при этом свойства relation не заполняются. Можно попробовать взять на себя более интеллектуальное поведение, проигнорировав стандартное поведение. Пока не знаю буду ли реализовывать такое, но направление интересное. |
|
09.03.2020, 18:00 | #7 |
Участник
|
Цитата:
Ну и перекрестные ссылки, точки останова, поиск текстов ничего не дали. Создание релейшенов, если понадобится, явно делается при помощи TreeNode, но при этом какое-то получение свойств релейшенов, скорее всего, должно опираться на классы DictRelation (SysDictRelation) , но в AOT ссылок на эти классы в предполагаемом контексте просто нет. |
|
09.03.2020, 19:06 | #8 |
Участник
|
Хотя написать что-то совсем сбоку, не вписываясь в текущие возможности - типа вызывал на таблице контекстное меню "Создать Relation" в котором можно указать таблицу для ссылки, что-то там еще и создать поле, релейшен и настроить свойства и того и другого тоже вариант.
Почему бы и нет? |
|
09.03.2020, 19:19 | #9 |
Участник
|
Мне кажется это самый комфортный вариант.
Кодировать просто и быстро. Можно заточить инструмент под себя, что душа пожелает. |
|