Цитата:
как можно программно определить имеется-ли лицензия на опрделенный объект в AOT (принадлежность к модулю, на который имеется лицензия).
Почти каждый объект имеет конфигурационный ключ. Если не имеет, то считается, что лицензия есть.
Если конфигурационный ключ не имеет лиц. кода, то считается, что лицензия есть.
Таким образом, чтобы посмотреть имеет ли лицензия на объект, надо рекурсивно пробежаться по конф. ключам, и у родительского посмотреть, есть ли лицензия. Пример для таблиц (для другого типа, просто меняем первую строку на нужный тип объекта):
X++:
DictTable dictObject = new DictTable(tablenum(SmmBusRelTable));
SysDictLicenseCode SysDictLicenseCode;
ConfigurationKeyId getParentCKId(ConfigurationKeyId _keyid)
{
ConfigurationKeyId ret;
DictConfigurationKey key;
;
key = new DictConfigurationKey(_keyId);
if (key.parentConfigurationKeyId())
ret = getParentCKId(key.parentConfigurationKeyId());
else
ret = _keyId;
return ret;
}
;
if (dictObject.configurationKeyId())
{
sysdictLicenseCode = new SysDictLicenseCode( new DictConfigurationKey(getParentCKId(dictObject.configurationKeyId())).licenseCode());
info(strfmt("%1", sysDictLicenseCode.isEntered()));
}
else
info("true");
Простой способ (но не достоверный):
смотрим включен ли конфигурационный ключ. Для конфигурационных ключей с выключенными лицензионнами кодами конф. ключ будет выключен, причем независимо от соответствующего свойства, выставленного для него в АОТе.