Показать сообщение отдельно
Старый 29.03.2006, 18:54   #13  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Maxim Gorbunov
X++:
select firstonly DataArea
  where DataArea.id == new DictTable(tableId).makeRecord().dataAreaId;
А можно поподробней относительно смысловой нагрузки этого выражения с DictTable? А то я такой класс в AOT не нашел... Там делается какая-то запись в таблицу tableId? Я просто пока что написал вспомогательный класс для определения, через какую компанию таблица "виртуализируется", он выглядит, конечно, коряво в сравнении с этим select'ом, правда, по идее позволяет получать данные для любой компании, а не только текущей
X++:
static str getVirtualCompanyId(TableId _tableId, CompanyId _companyId = curExt())
{
    VirtualDataAreaList     virtDataAreaLst;
    TableCollectionList     tableColList;
    SysDictTableCollection  dictTableCol;
    ;

    while select virtDataAreaLst
        where virtDataAreaLst.id == _companyId
        join tableCollection from tableColList
        where tableColList.virtualDataArea == virtDataAreaLst.virtualDataArea
    {
        dictTableCol = new SysDictTableCollection(tableColList.tableCollection);
        do
        {
            if (tablename2id(dictTableCol.nextTable()) == _tableId)
                return virtDataAreaLst.virtualDataArea;
        }
        while (tableName);
    }
    return '';
}