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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2021, 17:52   #1  
FrolovAndy is offline
FrolovAndy
Участник
 
71 / 45 (2) +++
Регистрация: 13.09.2007
Странный код в построении перекрестных ссылок
Всем привет!

Когда стал в выборочном режиме строить перекрестные ссылки, полезли ошибки. Поиск корней ошибок привел к такому вот коду, в классе xRefUpdate метод utilElementsToBexRefedInsert. А конкретно sysDictTable = new SysDictTable(tablename2id(_utilElements.Name))

X++:
        case UtilElementType::TableInstanceMethod,          // table method can be xreffed individually; but skip it, if the complete table are xreffed.
             UtilElementType::TableStaticMethod:

            sysDictTable = new SysDictTable(tablename2id(_utilElements.Name));

            if (sysDictTable)
            {
                select utilElementsToBexRefed
                    where utilElementsToBexRefed.RecordType == sysDictTable.utilElementType() &&
                          utilElementsToBexRefed.Id         == tablename2id(_utilElements.Name);

                if (!utilElementsToBexRefed)
                {
                    utilElementsToBexRefed.clear();
                    utilElementsToBexRefed.RecordType = sysDictTable.utilElementType();
                    utilElementsToBexRefed.ParentId   = _utilElements.ParentId;
                    utilElementsToBexRefed.Name       = _utilElements.Name;
                    utilElementsToBexRefed.insert();
                }
                break;
            }

Кто-то сталкивался с этим? Непонятно, или это ошибка, или какая-то неведомая задумка.
Ведь при таком типе элемента, в поле _utilElements.Name будет имя метода. И тогда теряется какой-либо смысл в выражении tablename2id(_utilElements.Name). Т.е. это поиск кода таблицы через имя ее метода.
Ну ладно когда это не сработало, тогда код просто пропускается. Но хуже когда имя метода совпадает с какой-то таблицей. Например, у меня было так - таблица CustSettlement имеет метод custVendTrans. При обработке в этом участке кода по имени custVendTrans, SysDictTable замечательным образом инициализируется по мапу CustVendTrans. В итоге дальше в utilElementsToBexRefed пишется полная ересь - имя custVendTrans, parentId - от CustSettlement, но тип записи - TableMap.
Пока склоняюсь что это ошибка. Возможно, по логике следовало бы записать: sysDictTable = new SysDictTable(_utilElements.ParentId));
Подскажите, было ли что-то на эту тему? Код давний очень, аж на 4-ке есть. Наверняка за долгое время у кого-то тоже должно было проявиться
За это сообщение автора поблагодарили: S.Kuskov (5).
Теги
перекрестные ссылки

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Задержка при открытии клиента после обновления перекрёстных ссылок MazZzDaI DAX: Администрирование 4 27.05.2015 07:53
Сколько времени у вас занимает сбор перекрестных ссылок по вашему приложению AX 4.0/2009? gl00mie DAX: Программирование 25 16.04.2012 10:39
ax2009: кто юзал Startup command: CompileAll_+ для периодического обновления перекрестных ссылок? mazzy DAX: Администрирование 11 25.08.2010 08:50
ax2009: почему обновление перекрестных ссылок перестало быть пакетным заданием? mazzy DAX: Программирование 9 21.08.2010 22:08
Обновление перекрестных ссылок ест память Sada DAX: Программирование 22 11.10.2006 18:22

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

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

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