Con questo job è possibile recuperare le informazioni sugli indici e sulla tabelle a cui appartengono.
Questo link è stato molto utile:
https://gist.github.com/mazzy-ax/4d4d06ec2fddd885b67527623467aee8
internal final class LIL_getIndexInfo
{
public static void main(Args _args)
{
str60 packageName,tableName;
CLRObject packages, models,tables;
CLRObject packagesEnumerator, modelsEnumerator,tablesEnumerator;
str60 moduleVersion;
DictTable dictTable;
DictIndex dictIndex;
int i;
FieldId fieldId;
TableId tableId;
DictField dictField;
boolean isUnique;
str packageDir;
Microsoft.Dynamics.AX.Metadata.MetaModel.ModelInfo modelInfo;
// Recupera i package
packages = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetInstalledModuleNames();
packagesEnumerator = packages.GetEnumerator();
// Recupera la directory dei package
var environment = Microsoft.Dynamics.ApplicationPlatform.Environment.EnvironmentFactory::GetApplicationEnvironment();
packageDir = environment.get_Aos().get_PackageDirectory();
// Configurazione provider metadati
var runtimeProviderConfiguration = New Microsoft.Dynamics.AX.Metadata.Storage.Runtime.RuntimeProviderConfiguration(packageDir);
var metadataProviderFactory = New Microsoft.Dynamics.AX.Metadata.Storage.MetadataProviderFactory();
Microsoft.Dynamics.AX.Metadata.Providers.IMetadataProvider provider = metadataProviderFactory.CreateRuntimeProvider(runtimeProviderConfiguration);
;
//loop packages
while (packagesEnumerator.moveNext())
{
packageName = packagesEnumerator.get_Current();
models = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetModelsInModuleSortedByDisplayName(packageName);
modelsEnumerator = models.GetEnumerator();
//loop models in the package
while(modelsEnumerator.MoveNext())
{
modelInfo = modelsEnumerator.get_Current();
tables = provider.Tables.ListObjectsForModel(modelInfo.Name);
tablesEnumerator = tables.GetEnumerator();
while(tablesEnumerator.moveNext())
{
tableName = tablesEnumerator.get_Current();
if(tableName)
{
dictTable = new DictTable(tableName2Id(tableName));
if(dictTable)
{
for (i = 1; i <= dictTable.indexCnt(); i++)
{
dictIndex = new DictIndex(dictTable.id(), dictTable.indexCnt2Id(i));
isUnique = !dictIndex.allowDuplicates();
//print table and index info
info(strFmt("Table = %1 | Indice: %2 | Model = %3 | Package = %4 | Modules = %5 | Unique: %6",
tableName,
dictIndex.name(),
modelInfo.Name,
packageName,
dictTable.modules(),
isUnique ? "Yes" : "No"
));
}
}
}
}
}
}
}
}
Nessun commento:
Posta un commento