Показать сообщение отдельно
Старый 03.04.2009, 12:01   #8  
Dima_Dima is offline
Dima_Dima
Участник
 
144 / 11 (1) +
Регистрация: 09.10.2008
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Почти каждый объект имеет конфигурационный ключ. Если не имеет, то считается, что лицензия есть.
Если конфигурационный ключ не имеет лиц. кода, то считается, что лицензия есть.
Таким образом, чтобы посмотреть имеет ли лицензия на объект, надо рекурсивно пробежаться по конф. ключам, и у родительского посмотреть, есть ли лицензия. Пример для таблиц (для другого типа, просто меняем первую строку на нужный тип объекта):
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");
Простой способ (но не достоверный):
смотрим включен ли конфигурационный ключ. Для конфигурационных ключей с выключенными лицензионнами кодами конф. ключ будет выключен, причем независимо от соответствующего свойства, выставленного для него в АОТе.

Просто класс !!!

Спасибо за помощь.