AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2006, 10:19   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Lightbulb Определить, через какую виртуальную компанию доступна таблица
Ниже приводится пример вспомогательного класса для определения, используется ли та или иная таблица через виртуальную компанию и если да, то через какую. Написан по мотивам этого обсуждения. Надеюсь, кому-нибудь кроме меня еще пригодится
X++:
class TableId2VirtualCompanyId
{
}
static boolean isTableVirtual(TableId _tableId)
{
    DataArea dataArea;
    ;

    return (select firstonly dataArea
            where dataArea.id == new DictTable(_tableId).makeRecord().dataAreaId).isVirtual;
}
static boolean isTableVirtualForCompany(TableId _tableId, CompanyId _companyId = curExt())
{
    return (TableId2VirtualCompanyId::getVirtualCompanyIdForCompany(_tableId, _companyId) != '');
}
static str getVirtualCompanyId(TableId _tableId)
{
    return new DictTable(_tableId).makeRecord().dataAreaId;
}
static str getVirtualCompanyIdForCompany(TableId _tableId, CompanyId _companyId = curExt())
{
    VirtualDataAreaList     virtualDataAreaList;
    TableCollectionList     tableCollectionList;
    SysDictTableCollection  dictTableCollection;
    TableName               tableName;
    ;

    while select virtualDataAreaList
        where virtualDataAreaList.id == _companyId
        join tableCollection from tableCollectionList
        where tableCollectionList.virtualDataArea == virtualDataAreaList.virtualDataArea
    {
        dictTableCollection = new SysDictTableCollection(tablecollectionlist.tableCollection);
        do
        {
            tableName = dictTableCollection.nextTable();
            if (tablename2id(tableName) == _tableId)
                return virtualDataAreaList.virtualDataArea;
        }
        while (tableName);
    }
    return '';
}
После определения кода виртуальной компании можно пробежаться по другим компаниям, в нее входящим, как описано здесь.
P.S. Спасибо Maxim Gorbunov за рецепт с DictTable

Последний раз редактировалось gl00mie; 31.03.2006 в 12:46.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сложное объединений склада в виртуальную компанию. skof DAX: Администрирование 15 23.05.2008 12:53
Запуск программы из Аксапты через 2-хзвенку Migel_84 DAX: Программирование 25 27.04.2006 09:41
Проблема с запуском business connector'a через удал доступ yooshi DAX: Программирование 1 07.11.2005 08:56
Почему не могу добаить компанию в виртуальную? Sanya DAX: Администрирование 1 24.04.2003 17:34
Как убить виртуальную компанию? glibs DAX: Администрирование 7 19.11.2002 10:51
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:19.