16.01.2008, 15:00 | #1 |
Участник
|
aEremenko: DAX 2009, работа с несколькими компаниями
Источник: http://blogs.msdn.com/aeremenk/archi...6/7128142.aspx
============== DAX 2009 позволяет осуществлять доступ к авторизированным данным всех компаний из форм, запросов и кода X++. Поддерживаются все типы источников данных, включая табличные коллекции и представления. Правда не поддерживаются базовые структуры типа RecordInsertList и RecordSortedList. С точки зрения изменений в коде введены новые ключевые слова в X++ и параметры структур запросов. Новое ключевое слово для работы с компаниями в X++: select crosscompany custTable // выборка по всем компаниямЕсть возможность фильтрации в запросе с помощью контейнеров: Произошли изменения работе с запросами, добавлен параметр работы с несколькими компаниями, AllowCrossCompany (Yes, No) в AOT и структуре запросов, использовать его можно, например, так: Query qr = new Query();Получить текущее значение фильтра по компаниям, изменить и очистить его можно следующим образом: Раз есть возможность получения данных по разным компаниям в результате одного запроса, то есть и возможность смотреть данные из разных компаний в одном гриде (изменением параметра в источнике данных формы, например): При обновлении данных, требуется доступ к реальной компании. Следовательно, необходим доступ к буферу с данными компании для обновления, для этого переключаемся в требуемую компанию и производим операцию: 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). |
23.01.2008, 21:37 | #2 |
Участник
|
Цитата:
Правда не поддерживаются базовые структуры типа RecordInsertList и RecordSortedList.
|
|
24.01.2008, 09:42 | #3 |
Участник
|
|
|
24.01.2008, 13:20 | #4 |
Модератор
|
Тема разделена. Про новое наименование - пишите в следующую тему: Новая концепция наименования продуктов серии Dynamics
А здесь можно обсудить очень полезный механизм доступа к данным всех компаний. С Уважением, Георгий |
|
24.01.2008, 18:20 | #5 |
Участник
|
Цитата:
Вопрос: во втором примере после crosscompany действительно ставится двоеточие? |
|
24.01.2008, 18:24 | #6 |
Участник
|
Угу А что?
|
|
24.01.2008, 18:56 | #7 |
Программатор
|
Класс!!!
|
|
28.10.2010, 13:41 | #8 |
Member
|
Цитата:
Сообщение от Blog bot
...
DAX 2009 позволяет осуществлять доступ к авторизированным данным ... Насколько я представляю while select custTable {...} если он запускается под пользователем, у которого нет доступа к таблице CustTable, то он переберет все записи. В ходе следственного эксперимента у меня получилось, что while select crosscompany custTable {...} если он запускается под пользователем, у которого нет доступа к таблице CustTable, не выберет ни одной записи. Именно это имеется в виду? Честно признаться, эффект неожиданный. Есть ли вариант отбирать записи из других компаний как если бы это делалось через changecompany (...) { while select custTable {...} } ? Тут, кстати, http://msdn.microsoft.com/en-us/library/cc634544.aspx написано " The results returned for an X++ select crossCompany query match what could be returned by a union of several select statements that each omits the crossCompany keyword. " Хотя есть и такое " A cross-company query operates over all companies that you have read permissions for, or over a subset of companies that you specify. " Столкнулся с проблемой при настройке функциональности сопоставления открытых проводок клиентов-поставщиков. Пока у пользователя нет доступа к таблице SpecTrans на чтение, функциональность сопоставления не работает и ведет себя неадекватно. Причина в том, что в коде ряда edit-методов используется select crosscompany. Как консультант, настраивающий права, должен догадаться в чем проблема не видя код при этом, не понятно.
__________________
С уважением, glibs® |
|
28.10.2010, 14:43 | #9 |
Участник
|
|
|