Показать сообщение отдельно
Старый 03.04.2009, 08:37   #7  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
как можно программно определить имеется-ли лицензия на опрделенный объект в 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");
Простой способ (но не достоверный):
смотрим включен ли конфигурационный ключ. Для конфигурационных ключей с выключенными лицензионнами кодами конф. ключ будет выключен, причем независимо от соответствующего свойства, выставленного для него в АОТе.

Последний раз редактировалось Eldar9x; 03.04.2009 в 09:33.
За это сообщение автора поблагодарили: Dima_Dima (1).