Инструменты пользователя

Инструменты сайта


mazzymazzy:сделатьсписоклицензийдляметки

include_page_правилаоформления

Сделать список лицензий для Метки

toc

Требуется реализовать алгоритм, который принимает список меток и выдает список модулей, к которым принадлежит каждая метка.

Входные параметры

Код метки. Например, «@SYS25058»

Ожидаемый результат

Структура, которая содержит коды модулей, к которым принадлежит каждая метка.

Структура результата

Выбранная программистом структура должна предоставлять удобный поиск и перебор по меткам.

В качестве структуры может использоваться:

  • текстовый файл,
  • записи в таблице,
  • контейнер,
  • map,
  • list
  • или любая другая структура на выбор исполнителя.

В каждой записи структуры должны присутствовать:

  • код метки
  • код модуля, к которому принадлежит метка
  • код конфигурационного ключа верхнего уровня (ConfigurationKey)
  • код лицензионного ключа (LicenseKey)
  • код ключа безопасности (SecurityKey) (опционально)

Метка принадлежит

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

Например, метка «@SYS25058» используется в нескольких местах. Среди прочего эту метку используют следующие объекты

1.\Data Dictionary\Tables\XBRLTaxonomyLabelElement\Field Groups\Label
2.\Data Dictionary\Extended Data Types\SRSEnumLabel
3.\Data Dictionary\Extended Data Types\COSEditDesc
4.\Classes\SysCodeExplorer\writeLabel

Разберем эти записи:

1.\Data Dictionary\Tables\XBRLTaxonomyLabelElement\Field Groups\Label
  1.Первая запись указывает на группу полей в таблице.  Если бы у группы полей были бы свойства конфигурационный и лицензионный ключ, то мы бы добавили их в список результатов для модуля XBRL. По перекрестным ссылкам видно, что группа полей ничем не используется.
  1.Поднимаемся на уровень вверх по AOT. Field Groups не имеет свойств и ничем не используется.
  1.Поднимаемся на уровень вверх по AOT. Таблица XBRLTaxonomyLabelElement - верхних значимый объект в AOT. Модуль определяется по префиксу названия таблицы. XBRL - код модуля. Конфигурационный ключ LedgerAdvanced. Лицензионный ключ LedgerAdvanced.
2.\Data Dictionary\Extended Data Types\SRSEnumLabel
  1.Название модуля - SRS
  1.Этот расширенный тип не содержит конфигурационного ключа
  2.Этот расширенный тип используется только в одном поле одной таблицы
  3.Поле не содержит конфигурационного ключа
  4.Поднимаемся по AOT. Название модуля SRS. Конфигурационный ключ от таблицы ReportingServices. Лицензионный ключ SysUsers
3.\Data Dictionary\Extended Data Types\COSEditDesc
  1.Название модуля - COS
  2.Этот расширенный тип не содержит конфигурационного ключа
  3.Этот расширенный тип используется в элементах 7ми форм. Разбираем каждую и также получаем модуль COS. В элементах этих форм не указаны ни лицензионные, ни конфигурационные ключи
  4.Находим menuItem для каждой формы (в перекрестных ссылках информации для этого поиска нет)
  5.Находим конфигурационные и лицензионные ключи из menuItem
4.\Classes\SysCodeExplorer\writeLabel
  1.Название модуля Sys
  2.класс не содержит метода main (если бы содердал, то нужно было бы искать menuItem и вызов этого класса в элементах форм)
  3.класс испольузется в нескольких методах, в том числе в классе SysHelpBookAOHierarchy, который содержит метод main
  4.метод main класса SysHelpBookAOHierarchy вызывается из display menuItem: SysTreeHierarchyBrowser. А этот menuItem привязан к конфигурационному ключу SysDevelopmentMorphX, который привязан к лицензионному ключу SysMorphX.

Таким образом, для метки «@SYS25058» в списке результатов должны присутствовать следующие записи: «@SYS25058»,«XBRL»,«LedgerAdvanced»,«LedgerAdvanced» «@SYS25058»,«SRS»,«…»,«…» «@SYS25058»,«COS»,«….»,«…» «@SYS25058»,«Sys»,«SysDevelopmentMorphX»,«SysMorphX»

Объект родитель и Чем используется

  • ОбъектРодитель - это объект, который открывается в АОТ по правой кнопке мыши \ Надстройки \ Открыть новое окно \ Открыть родительский элемент в окне
  • Список элементов ЧемИспользуется - это список, который открывается в АОТ по правой кнопке мыши \ Надстройки \ Перекрестные ссылки \ Чем используется

Примечание: К сожалению, стандартные перекрестные ссылки показывает не все зависимости. Возможно, придется делать дополнительный анализ и пополнять список ЧемИспользуется

Код модуля

Это повторяющийся префикс в значимых объектах верхнего уровня в AOT.

Как получить код модуля?

  • Открыть Имена в перекрестных ссылках.
  • Наложить фильтр на два поля
  • Проанализировать получившися список объектов верхнего уровня на префиксы.

Получившаяся таблица приложена файлом.

Обратите внимание, что типы и enum'ы не участвуют в анализе - для них слишком часто не используются префиксы

Таблица префиксов модулей

Таблица упорядочена по убыванию количества объектов в модуле. Знак <…> отображает прочие модули

#|

prefixОбъектовLicenseConfSecurityИспользовано раз
Sys13701715430100
Ledger916220946820
Cust89208965020
Proj869214940752
Invent86606955599
HRM787482622612
Vend72604934998
RPay5851126814380
Sales56407030548
KM554683113888
Tax55302021806
smm52846818029
<…>4781755852132
Jmg453041114572
Asset40814015470
RAsset3831197603
Prod37933915786
COS378410914479
PBA34855713760
Purch34700013779
WMS2662306731
Bank25614710285
RHRM2521184179
Tmp25000017382
DEL23700011517
SMA2330689025
Rtax2320003267
Pl20501313237
Req1871296088
AX1750002155
Intrastat1670104523
AIF1662205387
BOM1530303926
DSO1380001590
RCash13401132917
Form12600010897
Empl12302821117
OLAP1230103189
Cz1070603203
EP10032441961
Forecast952202335
Address930009013
RFID931301284
Lv920401178
Facture880001903
Wrk871102330
RDeferrals790101711
Web780001909
NumberSeq770003727
Xml730001796
BAS701182661
Price680103190
Route680202530
Eu680001042
CC63000784
InterCompany620001280
Event611101402
SRS600002010
Image550001367
Paym520201369
Dimension511104011
Docu500003064
Tutorial50000650
RTSL490001112
Batch47000692
RLedgerSheet45000147
SQL420001628
Markup390101802
Gantt39000461
Lt38030763
Config37010787
Xbrl350001997
x330001941
Trade322601125
Work30000681
Sk29000492
Journal280002361
Rcontract28000701
Commission28010505
xRef27000911
Report260101243
Book26000702
Supp24010525
RunBase230002379
Output23000102
CAC2100068
Currency190303572
Unit18000808
Ee1802078
TransactionReversal17030249
ECP16000809
Budget150001202
BarCode15000218
Dialog140006430
Dict140005552
Conv1400029
Cheque1400023
Map130005751
Company130005580
Query800013404
BusinessStatistics8000174
Graphics8000105
Object50009166
Win40001316
List30001732

Дополнительные требования и предположения

  • Реализовать на X++ отдельным проектом (ax40, ax50 или, в крайнем случае, ax30)
  • Предполагается, что в Аксапте перекрестные ссылки построены
  • Не все зависимости можно найти в перекрестных ссылках
  • Для работы алгоритма можно использовать (создать) вспомогательные структуры, которые могут долго строится (свои аналоги перекрестных ссылок)
  • Алгоритм должен выдавать результаты за приемлемое время.
  • Алгоритм должен работать при большом количестве входящих аргументов. В частности, программист должен предусмотреть способ, когда в качестве аргумента в алгоритм передаются все 90тыс. меток.
mazzymazzy/сделатьсписоклицензийдляметки.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)