Показать сообщение отдельно
Старый 09.07.2020, 10:44   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вам не требуется эта информация. Просто удаляете индекс в базе SQL, а потом запускаете синхронизацию в Axapta. А дальше Axapta сама найдет все нужные реквизиты и создаст индекс в SQL

Однако получить имена индексов можно через классы DictXXX

X++:
static void job_Test(Args _args)
{
    DictTable       dictTable;
    DictIndex       dictIndex;
    int             idx;
    ;

    dictTable = new dictTable(tablenum(CustTable));
    for (idx = 1; idx <= dictTable.indexCnt(); idx++)
    {
        dictIndex = dictTable.indexObject(dictTable.indexCnt2Id(idx));
        info(strFmt('Axapta = %1, SQL = %2', dictIndex.name(DbBackend::Native), dictIndex.name(DbBackend::Sql)));
    }
    
    info('End');
}
Параметр DbBackend::Sql для метода name() заставит вывести имя SQL. Если имени SQL нет, значит, соответствующий индекс в SQL не создается. Либо не активен, либо закрыт конфигурационным ключем


Если Вы не в курсе, то имя индекса SQL формируется следующим образом

"I_" + id-таблицы + "Имя в Axapta"

Так что, вполне можно "вычислить" нужное имя "вручную"
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...