Показать сообщение отдельно
Старый 04.05.2023, 15:17   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Достать информацию об иерархии X++ табличек из базы модели
Привет всем.

Понадобилось в Transact-SQL понять по базе модели и имени конкретной X++ таблицы, есть у нее родительская или нет.

Можно как-то это понять ?

Пока нашел только, что имя родительской таблички хранится в [ModelElementData].[Properties]
X++:
static void _upg003_Table(Args _args)
{
    void aa(boolean    _short, str s)
    {
        int         imax;
        int         i;
        str         sout;
        ;

        imax = strLen(s);

        for (i = 1; i <= imax; i += 2)
        {
            sout += num2char(hex2Int(subStr(s, i, 2)));
        }
        info(sout);

        if (_short)
        {
            return;
        }

        for (i = 1; i <= imax; i += 2)
        {
            info(con2Str([i, subStr(s, i, 2), "   ", num2char(hex2Int(subStr(s, i, 2)))]));
        }
    }
    ;
    
    // пример  сделан для CompanyInfo
    // aa(1, "100008400053005900530031003200390031003000300000004F004D004C006500670061006C0045006E00740069007400690065007300000000004C006500670061006C00200065006E00740069007400790000000000000040005300590053003100320035003000340031000000F6DD0B8C4F004D0049006E007400650072006E0061006C004F007200670061006E0069007A006100740069006F006E00000003004400610074006100410072006500610000000202800001032A0053007500720072006F0067006100740065004B006500790000004B006500790000000203420061007300690063005400610062006C0065007300000000000043006F006D00700061006E00790049006E0066006F0045007800740065006E00730069006F006E005F0043004E0000000143006F006D00700061006E00790049006E0066006F00000054006100780049006E0066006F0072006D006100740069006F006E004C006500670061006C0045006E0074006900740079005F0049004E0000000143006F006D00700061006E00790049006E0066006F0000004C00650064006700650072000000015000720069006D0061007200790046006F0072004C006500670061006C0045006E00740069007400790000004B006500790000004800000000000000");
    aa(0, "100008400053005900530031003200390031003000300000004F004D004C006500670061006C0045006E00740069007400690065007300000000004C006500670061006C00200065006E00740069007400790000000000000040005300590053003100320035003000340031000000F6DD0B8C4F004D0049006E007400650072006E0061006C004F007200670061006E0069007A006100740069006F006E00000003004400610074006100410072006500610000000202800001032A0053007500720072006F0067006100740065004B006500790000004B006500790000000203420061007300690063005400610062006C0065007300000000000043006F006D00700061006E00790049006E0066006F0045007800740065006E00730069006F006E005F0043004E0000000143006F006D00700061006E00790049006E0066006F00000054006100780049006E0066006F0072006D006100740069006F006E004C006500670061006C0045006E0074006900740079005F0049004E0000000143006F006D00700061006E00790049006E0066006F0000004C00650064006700650072000000015000720069006D0061007200790046006F0072004C006500670061006C0045006E00740069007400790000004B006500790000004800000000000000");
}
выводит
Цитата:
@SYS129100OMLegalEntitiesLegal entity@SYS125041ö݌OMInternalOrganizationDataArea€*SurrogateKeyKeyBasicTablesCompanyInfoExtension_CNCompanyInfoTaxInformationLegalEntity_INCompanyInfoLedgerPrimaryForLegalEntityKeyH
т.е. можно оттуда достать, но на Transact-SQL это неудобно разбирать.

Есть способ попроще ?

Ax2012 R3