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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.12.2003, 14:47   #1  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Сталкивался с этой проблемой. Решал её именно таким образом.
__________________
С уважением, Игорь Ласийчук.
Старый 29.03.2006, 15:09   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
?
Цитата:
Сообщение от Garic
Сталкивался с этой проблемой. Решал её именно таким образом.
У меня сейчас возникла та же самая задача - требуется, чтобы InventTable была общей (через виртуальную компанию), а InventTableModule - своя в каждой компании. В этой теме нашел такой вот рецепт получения списка других компаний в виртуальной:
Код:
select id from VirtualDataAreaList
  where VirtualDataAreaList.virtualDataArea == <код_виртуальной_компании>
Представляется обновление InventTableModule сделать примерно так:
  • определить, через какую виртуальную компанию в данной компании доступна таблица InventTable
  • пройтись по списку других компаний в этой виртуальной компании
  • в каждой из них создать/удалить соотв.записи для InventTable.ItemId
НО! Сразу возникает вопрос: как определить, через какую виртуальную компанию в текущей "реальной" компании доступна та или иная таблица? Потому что забивать в код строковую константу - идентификатор компании - как-то, мне кажется, совсем некрасиво. Можно ли это определить программно? Или придется все же забивать идентификатор виртуальной компании?

Последний раз редактировалось gl00mie; 29.03.2006 в 15:31.
Старый 29.03.2006, 16:18   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Lightbulb
Цитата:
Сообщение от gl00mie
Как определить, через какую виртуальную компанию в текущей "реальной" компании доступна та или иная таблица?
На буржуйском форуме нашел такой вот рецепт определения, доступна ли таблица церез виртуальную компанию или нет
PHP код:
static boolean checkTableVirtual(TableId _tableId)
{
  
TableCollectionList     tableCollectionList;
  
VirtualDataAreaList     virtualDataAreaList;
  
SysDictTableCollection  dictTblColl;
  
DictTable               dictTable;
  
TableName               tableName;
  ;

  while 
select virtualDataAreaList
    where virtualDataAreaList
.id == curExt()
      
join tableCollection from tableCollectionList
        where tableCollectionList
.virtualDataArea == 
              
virtualDataAreaList.virtualDataArea
  
{
    
dictTblColl = new SysDictTableCollection(tablecollectionlist.tableCollection);
    do
    {
      
tableName dictTblColl.nextTable();
      if (
tablename2id(tableName) == _tableId)
         return 
true;
    }
    while (
tableName);
  }
  return 
false;

Отсюда и буду копать...
Старый 30.03.2006, 12:08   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
:( changeCompany() не работает?..
Цитата:
Сообщение от gl00mie
Представляется обновление InventTableModule сделать примерно так:
  • определить, через какую виртуальную компанию в данной компании доступна таблица InventTable
  • пройтись по списку других компаний в этой виртуальной компании
  • в каждой из них создать/удалить соотв.записи для InventTable.ItemId
Все же что-то у меня последний пункт не выходит Я наивно полагал, что сработает просто это
X++:
changeCompany(virtualDataAreaList.id) {
    super();
}
ан - фигу! Компания, конечно, сменяется (если в блоке распечатать curext(), то он показывает то, что нужно), только вот this.dataAreaId у InventTableModule как был в старой компании, так и остался, и вызываемый super() ессно ругается, что запись уже есть. xApplication.setDefaultCompany() дает тот же результат... Если в контексте другой компании (внутри блока changeCompany) сделать новый InventTableModule и скопировать в него this, то он тоже получает dataAreaId из исходонй компании, а не из той, куда делается changeCompany Что делать, как побороть? Неужто вместо простого вызова super() в InventTableModule в контексте другой компании придется "плясать с бубном", создавать новый экземпляр объекта и копировать в него нужные данные?..
Теги
виртуальные компании, как правильно, номенклатура, компания

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Виртуальные компании Freeangel DAX: Функционал 8 03.07.2007 18:49
виртуальные компании HelgaK DAX: Функционал 5 28.09.2006 13:47
Таблица DocuRef и виртуальные компании Vby DAX: Функционал 2 30.05.2006 10:06
Виртуальные компании или фин. отчеты Посторонний V DAX: Функционал 20 24.05.2006 16:58
Виртуальные компании Zodiak DAX: Функционал 7 06.04.2004 21:06
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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