Тема подсказана Андреем Бобковым.

Как создать перекрестные ссылки
Объекты по именам
Путь к объекту
Контекстное меню AOT
Показать определения
Чем используется метки
Visual MorphXplorer
Чего хочется

 

Перекрестные ссылки в Аксапте - это инструмент разработчика. Когда созданы перекрестные ссылки, то разработчик может посмотреть кем используется данный объект, кого использует данный объект, может задействовать Visual MorphXplorer, автоматически переходить к описанию функций и т.д. Пользователю-неразработчику перекрестные ссылки не очень то нужны.

Перекрестные ссылки хранятся в обычных таблицах в базе данных и занимают более 400Мб. Поэтому стоит хорошенько подумать нужны ли они вам, если вы не занимаетесь разработкой. Однако если вы занимаетесь программированием или просто изучаете как устроена Аксапта изнутри, то перекрестные ссылки безусловно будут полезны.

О перекрестных ссылках я буду рассказывать по Аксапте 2.5 (хотя бы потому, что перевод в Аксапте 3.0 еще не полностью завершен). В Аксапте 3.0 этот инструмент существенно не изменился, я буду отдельно указывать те места, где есть изменения.

 

Как создать перекрестные ссылки

Необходимо, используя пункт Сервис \ Разработка \ Перекрестные ссылки \ Периодические операции \ Выполнить обновление, запустить создание данных с перекрестными ссылками.

Диалог "Обновить перекрестные ссылки"

Галочки "Удалить все", "Обновить все" вроде в комментариях не нуждаются.

Галочка "Критерий". Вообще говоря, по-английски она звучит как Selective. В комментарии, в коде где эта галочка проверяется написано следующее: if any thing that can't be xRef'ed by them self - like utilElements different from methods with tables as parents - xRef the parent (- but only once!)

Не знаю как это понимать. И нигде не нашел точного описания. Буду рад, если вы пришлете ссылку на описание или подскажете что же это может означать.

Обновление перекрестных ссылок можно делать в пакете. Настоятельно рекомендую этот режим. Причем пакет лучше запускать ночью, поскольку обновление перекрестных ссылок может выполняться до 8 часов, сильно напрягает СУБД, а данные могут занимать до 400Мб в базе.

Можно обновлять не все перекрестные ссылки, а только те, которые удовлетворяют некоторым критериям. Нажмите на кнопку Выбор и укажите критерии. Если вы создаете свой модуль, то это будет хорошей идеей. Не забудьте убрать галочку "Удалить все", "Обновить все".

Галочки в группе "Другие перекрестные ссылки" позволяют обновить данные для Visual MorphXplorer'а.

 

Объекты по именам

Форму "Объекты по именам" можно найти в меню Сервис \ Разработка \ Перекрестные ссылки \ Объекты по именам.

Форма "Объекты по именам"

Форма показывает все объекты, по которым созданы перекрестные ссылки, названия этих объектов, а также тип этого объекта (если это extended data type, enum или метод). На форме также можно увидеть количество ссылок на данный объект. Так на скриншоте, метка @DIS100004 используется 3 раза, а @DIS10 - 7 раз.

Надо сказать, что данной формой удобно пользоваться тогда, когда включается фильтр по типу прикладного объекта и по имени. Т.е. если вы знаете название объекта, но не знаете что это за объект то найти информацию о нем быстрее при помощи данной формы, чем через AOT. Но такая ситуация бывает нечасто. Все же удобнее пользоваться AOT'ом.

Данная форма незаменима, если надо найти информацию о метках. Например, если вы хотите узнать где используется метка @SYS850. Заметим, что информацию о использовании меток можно получить и из редакторам меток (см. ниже).

В целом, форма "Объекты по именам" используется не очень часто. Чаще просмотр перекрестных ссылок осуществляется через контекстное меню AOT.

Форма "объекты по именам" также позволяет просмотреть какие объекты используют объект, выделенный курсором, можно посмотреть нажав на кнопку "Чем используется". Эта форма подробно будет обсуждаться ниже.

Кнопка "путь к объекту" открывает форму "Путь к объекту". Эта форма будет подробно будет обсуждаться ниже. Суть в следующем: выделенный курсором объект система принимает за корень дерева подобъектов и показывает все подобъекты внутри. Этой функцией вряд ли удобно пользоваться. Гораздо удобнее пользоваться деревом объектов AOT.

Сравните форму путь к объекту и AOT по тому же самому объекту.

Форма "Путь к объекту" и тот же самый объект в AOT

Форма "Путь к объекту" позволяет удобнее просмотреть кто и когда сделал и, может быть, увидеть неиспользуемые объекты. Подробнее о форме см. ниже.

 

Путь к объекту

Форму "Путь к объекту" можно найти в меню Сервис \ Разработка \ Перекрестные ссылки \ Путь к объекту.

Форма "Путь к объекту"

Форма показывает все пути к объектам в дереве, показывает дату и время модификации, а также кто выполнил модификацию. Галочка "действительно" включена, если объект не модифицировался со времени построения перекрестных ссылок.

Иконка в левом верхнем углу показывает состояние объекта также как и в AOT.

В последних версиях Аксапты гораздо удобнее пользоваться перекрестными ссылками через AOT.

В чем действительно бывает удобна эта форма - так это в анализе кто что и когда сделал. Список объектов форма выводит гораздо быстрее, чем "Администрирование объектов". Да и поиск выполняется поживее. Однако будьте внимательны! Здесь показывается дата и время, которое было запомнено в момент последнего построения перекрестных ссылок! Либо обновляйте перекрестные ссылки почаще, либо включите генерацию перекрестных ссылок в момент записи объекта.

Кнопка "Редактировать" позволяет сразу открыть текст метода для редактирования.

Кнопка утилиты совпадает с подменю "дополнительно" в контекстном меню AOT. Чаще всего эта кнопка используется, чтобы открыть объект, объект родитель в новом окне.

Совет: формы "Объекты по именам" и "Путь к объекту" удобно использовать, если вы знаете не точное наименование объекта, а частичное. Например, если вы хотите посмотреть все объекты на заданную тему. Например, с суффиксом "*_RU".

 

Контекстное меню AOT

Для любого объекта или подобъекта в AOT можно открыть контекстное меню. В контекстном меню, если сгенерированы перекрестные ссылки появляются новые пункты.

Контекстное меню AOT

Из контекстного меню открываются формы, которые показывают какими объектами используется данный элемент (Чем используется), а также какие объекты данный элемент сам использует (Что использует).

Форма "Чем используется"

На самом то деле это те же формы, что рассматривались выше. Только достучаться до них удобнее.

Обратите внимание на колонку ссылка! Эта колонка показывает что делается с данным элементом в указанном объекте. Здесь может быть:

Часто бывает удобно задать фильтр Write и оставить только те объекты, которые изменяют данный элемент.

Так на скриншоте выше показаны объекты, которые используют поле addrTableId таблицы Address. Как видно, значение поля читается в методах, поле используется в группах и индексах таблицы и т.д.

Если наложить фильтр Write на колонку Ссылка, то получим.

Форма "Чем используется" с наложенным фильтром Write на колонку Ссылка

Получим, что изменяют значения этого поля только 4 объекта. Я нажал на кнопку редактировать и открыл текст метода. При помощи кнопки Утилиты \ Перекрестные ссылки можно быстро достучаться до "Чем используется" или "Что использует" уже для нового объекта.

Меню в форме "Чем используется" поможет продвинуться в поиске

Совет: Если в некоторой таблице некоторое поле принимает странные значения и вы не понимаете что происходит, то откройте чем используется данное поле и оставьте только те методы, которые изменяют значение интересующего вас поля. Как правило, останется немного методов. Как правило, большинство оставшихся методов находятся в модулях, которые вы не закупили или не используете. Сосредоточьтесь на тех методах, которые вам кажутся "подозрительными". И попробуйте выяснить что же у вас происходит. Как правило, при помощи перекрестных ссылок подозрительные места находятся очень быстро.

 

Показать определения

Показать определения открывает новое окно, в котором дается текст с телом функции.

Показать определения

Так на скриншоте показано, что курсор установлен на функцию и вызывается команда "Показать определения". После выполнения команды Аксапта откроет окно, где эта функция определена.

Результат выполнения команды "показать определения" - тело используемой функции

 

Чем используется метки

После генерации перекрестных ссылок, в редакторе меток начинает работать кнопка "чем используется".

Примечание: Выше я приводил пример, где появилось желание узнать где используется метка с некоторым номером. Таким образом сформулированное желание редко возникает у нормальных разработчиков. Номер метки чаще проверяют переводчики и системные программисты.

Чаще всего разработчик хочет узнать используется ли в каких либо метках заданный текст. И в каких именно объектах используются данные метки.

Например, разработчик хочет изменить во всей системе текст "Отдел" на "Подразделение". В редакторе меток можно узнать в каких метках используется данный текст. На скриншоте показано, как мы нашли список меток, которые начинаются с текста "Отдел".

Редактор меток

Кнопка "Чем используется" поможет выяснить какие объекты используют данную метку.

Чем используется метка

Как видно, это так же форма "Чем используется", при помощи которой можно рыть дальше.

 

Visual MorphXplorer

После генерации перекрестных ссылок Visual MorphXplorer становится удобным инструментом.

Visual MorphXplorer можно открыть при помощи меню Сервис \ Разработка \ Визуальное моделирование с MorphXplorer.

Visual MorphXplorer с перекрестными сслыками

Когда есть перекрестные ссылки, то можно строить диаграммы наследования классов и использования таблиц через связи. Диаграммы бывают чрезвычайно полезны для понимания сложных процессов.

 

Чего хочется

Ну и напоследок, чего нет в перекрестных ссылках, но очень хочется.

Легко можно найти ближайший объект - используемый или использующий. Но понять что происходит через две-три ступени уже сложно. А такая задача стоит часто. Так форма вызывает пункт меню, пункт меню - класс, класс - отчет, а отчет использует таблицу, которая закрыта функциональным ключом. Вот если бы был инструмент, который показывает граф взаимосвязей выбранных объектов. Например, граф взаимосвязей объектов, названия которых начинаются с Ledger.

MorphXplorer удобная штука. Но инструмент недостаточно эргономичный. А самое главное я нигде не нашел уже подготовленных схем. Вот если бы такие схемы были для стандартных объектов. То цены бы ему не было. Может кто видел? Подскажите где.

 

Буду рад Вашим замечаниям и предложениям.
E-Mail: mazzy@mazzy.ru, Мазуркин Сергей