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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2008, 15:00   #1  
Blog bot is offline
Blog bot
Участник
 
25,626 / 848 (80) +++++++
Регистрация: 28.10.2006
aEremenko: DAX 2009, работа с несколькими компаниями
Источник: http://blogs.msdn.com/aeremenk/archi...6/7128142.aspx
==============

DAX 2009 позволяет осуществлять доступ к авторизированным данным всех компаний из форм, запросов и кода X++. Поддерживаются все типы источников данных, включая табличные коллекции и представления. Правда не поддерживаются базовые структуры типа RecordInsertList и RecordSortedList.

С точки зрения изменений в коде введены новые ключевые слова в X++ и параметры структур запросов.
Новое ключевое слово для работы с компаниями в X++:
select crosscompany custTable // выборка по всем компаниям
join custTrans
where custTable.AccountNum == custTrans.AccountNum;


Есть возможность фильтрации в запросе с помощью контейнеров:

CustTable custTable;
Container companies;
;
companies = ["DMO", "DAT"]; // контейнер
while select crosscompany: companies * from custTable // фильтрация
{

...
}

Произошли изменения работе с запросами, добавлен параметр работы с несколькими компаниями, AllowCrossCompany (Yes, No) в AOT и структуре запросов, использовать его можно, например, так:
Query qr = new Query();
qr.allowCrossCompany(‘True’); // 'false' является умолчательным
Получить текущее значение фильтра по компаниям, изменить и очистить его можно следующим образом:

Query qr = new Query();
container cons;
;
cons = qr.getCompanyRange();
// компании в обработке
qr.addCompanyRange(‘DAT’); // добавление компании в фильтр qr.clearCompanyRange(); // очистка списка
Раз есть возможность получения данных по разным компаниям в результате одного запроса, то есть и возможность смотреть данные из разных компаний в одном гриде (изменением параметра в источнике данных формы, например):


При обновлении данных, требуется доступ к реальной компании. Следовательно, необходим доступ к буферу с данными компании для обновления, для этого переключаемся в требуемую компанию и производим операцию:
CustTable ct;
ttsbegin;
while select forupdate crosscompany ct
{
changecompany(ct.company())
{
ct.CreditMax += 10;
ct.update();
}
}
ttscommit;

В коде, указанном выше, используется метод company() для идентификации текущей компании. Естественно можно было бы использовать и поле DataAreaId в качестве идентификатора, подставив ct.DataAreaId в функцию changecompany. Разница же в том, что в случае табличной коллекции, company() вернет правильный идентификатор реальной компании, а DataAreaID будет содержать значение/идентификатор виртуальной компании или реальной компании в зависимости от типа источника данных.
Данная статья подготовлена с помощью Windows Live Writer.


Источник: http://blogs.msdn.com/aeremenk/archi...6/7128142.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
За это сообщение автора поблагодарили: glibs (3).
Теги
ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Amand: Intercompany в Dynamics AX, работа с несколькими компаниями. Blog bot DAX Blogs 0 27.10.2008 23:05
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
aEremenko: DAX 2009, несколько временных зон Blog bot DAX Blogs 0 31.01.2008 08:41
Работа с несколькими компаниями DanielG DAX: Функционал 11 30.10.2006 13:44
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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