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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2006, 10:26   #1  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Открытие контейнера из Map
Здравствуйте уважаемые.

Подскажите пожалуйста как получить данные загнанные в такой map:

map = new map(Types::integer,Types::Container);

Запихал так:

map.insert(i,[test1a,test14, test7, test3, "SecurityKeys", test3b, test7a,test7b, test7c]);

Хочу посмотреть, что там лежит:
map.toString();
отображается не то что хочется:
[1-><9>,2-><9>,3-><9>,4-><9>,5-><9>,6-><9>,7-><9>,8-><9>,9-><9>,10-><9>.........
............
,366-><9>,367-><9>,368-><9>]

А как правильно сперва получить контейнер из мэпа, а потом его открыть - не знаю.

Помогите пожалуйста.
Заранее благодарен.
__________________
Александр
Старый 09.11.2006, 10:31   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
con2str(map.lookup(i));
Старый 09.11.2006, 10:31   #3  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
X++:
container      data;
;
data = map.lookup(i)
Старый 09.11.2006, 10:35   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
есть еще функция conView
Старый 09.11.2006, 11:10   #5  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от kashperuk Посмотреть сообщение
con2str(map.lookup(i));

Все получилось. Большое спасибо.

Может быть за одно подскажите функцию нахождения данных в этом mape?
__________________
Александр
Старый 09.11.2006, 11:39   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://www.axaptapedia.com/index.php...ndation_class)

Последний раз редактировалось belugin; 09.11.2006 в 12:09. Причина: скобка
Старый 09.11.2006, 12:30   #7  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:

Спасибо. Буду разбираться.
__________________
Александр
Старый 09.11.2006, 16:24   #8  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
К слову, по поводу одного из кусков кода:
X++:
int age;
str keyid = "Wassini";
 
age = m.exists(keyid) ? m.lookup(keyid) : 0;
m.remove(keyid);
m.insert(keyid, age + 1);
Я в исходниках AX встречал обновления без предварительного удаления старого значения, типа
X++:
if (m.exists(keyid))
    m.insert(keyid, m.lookup(keyid)+1);
хотя сам всегда старое значение предварительно удалял...
Старый 09.11.2006, 16:30   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
insert() обновляет значение в Map, если оно уже там есть.
То есть не обязательно проверять/удалять до этого

KERNDOC://Classes/Map/insert

Цитата:
Inserts the pair (keyValue, value) in the map. Returns TRUE if the key did not already exist in the map. If the key already exists in the map, the value is updated.
Старый 11.11.2006, 17:47   #10  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от gl00mie Посмотреть сообщение
К слову, по поводу одного из кусков кода:
X++:
int age;
str keyid = "Wassini";
 
age = m.exists(keyid) ? m.lookup(keyid) : 0;
m.remove(keyid);
m.insert(keyid, age + 1);
Я в исходниках AX встречал обновления без предварительного удаления старого значения, типа
X++:
if (m.exists(keyid))
    m.insert(keyid, m.lookup(keyid)+1);
хотя сам всегда старое значение предварительно удалял...
Найти нужное значение прилагаемым кодом в вышеуказанном мапе не получилось.
Написал следующее:
int age;
str keyid = "Bank";
str room;
int test30;
str room1;

i = 0;
im = new MapIterator(map);
while (im.more())

{
i = i + 1;
Info (con2str(map.lookup(i)));
room = con2str(map.lookup(i));
test30 = strFind(room, ",", 1,100);
room1 = Substr(room, 1, test30-1);
// con2str(map.lookup(i));
//age = map.exists(keyid) ? map.lookup(keyid) : 0;

if (strfmt("%1", room1) == keyid)

print i;
else

print "No!";
Pause;


}

im.next();

Поиск работает. Но насколько он хорош судить не мне.
Всем большое спасибо. Что хотел - получилось.
__________________
Александр
Старый 11.11.2006, 23:48   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Лучше раскажите нам зачем всё это нужно, а то лично мне кажется, что вы выбрали не тот контейнерный класс.

Например, чем вам не нравится Array, если вы все равно ищете не по ключу? Если вы внутри цилка не вызываете im.next(), как у вас получается конечный цикл?
Старый 12.11.2006, 17:48   #12  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от belugin Посмотреть сообщение
Лучше раскажите нам зачем всё это нужно, а то лично мне кажется, что вы выбрали не тот контейнерный класс.

Например, чем вам не нравится Array, если вы все равно ищете не по ключу? Если вы внутри цилка не вызываете im.next(), как у вас получается конечный цикл?
Если интересно, слушайте ....

Исторически сложилось, что права пользователям настраивались по-операционно (к примеру - на складские журналы). Для этого нужны права на то, другое и т.д. Потом, оказалось, что это неудобно по нескольким причинам. В итоге получилось, что права на некоторые пункты меню - пересекаются.
Чтобы контролировать процесс, необходимо знать в каких правах групп пользователей имеется доступ на что-то конкретное (отчет, журнал, справочник).
Как решить данную проблему?
Сначала потытался выяснить на форуме, как строится дерево при отображении прав доступа на группу пользователей, чтобы попытаться использовать его. Но так и не выяснил.
Прочитал, что права хранятся в таблицах AccessRightsList и еще двух.
Если в таблице права группе пользователей даны на ключ(таблицу), то это значит что права распространяются на все подчиненные этому ключу пункты (к примеру ключ на отчеты главной книги - распространяетсяна все отчеты главной книги), хотя это не есть факт, а как это отследить не разобрался.
Если права даны на конкретные отчеты подключенные к этому ключу, но на сам ключ прав нет, то они отображаются в таблице. ну и т.д.
Осталось вытащить по коду ключа его название, а также к какому отчету (запросы, журналу) он привязан. А затем построить запрос по таблицам AccessRightsList , UserGroupList, UserGroupInfo , UserInfo в качестве параметра введя название отчета, журнала, справочника и т.д. получая на выходе имена пользователей и группы пользователей в которых имеется доступ (полный, чтение и т.д) на этот отчет.

Список свойств MenuItem, SecurityKey и т.д. решил сохранять в МАП Вот вроде и все.
Возможно я решаю данную проблему не так, но по другому пока не научился.

Я так - немного балуюсь Аксаптой.
Поиск, который посоветовали не работал, поэтому придумал, что придумал
Про array - не знаю почему не пользуюсь. Программисты посоветовали - мап. Раньше сохранял в таблицу, но в рабочей базе не хочется - это переделка функционала, а это не мой профиль.

Ошибку посмотрю
Спасибо за участие.
__________________
Александр
Старый 12.11.2006, 18:01   #13  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Только, что прочитал, что эта ветка про это же:
Экспорт/Импорт прав доступа
__________________
Александр
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помещение временной таблицы в Map Lemming DAX: Программирование 20 19.10.2017 14:16
Dynamics AX: Map Object Sorting - a real issue Blog bot DAX Blogs 7 15.10.2008 12:02
MAP vs Class. В чем идейная необходимость в MAP-ах? А что если использовать Class вместо MAP? Hub DAX: Программирование 16 11.08.2008 16:58
Пропадение связи в Map 6apcyk DAX: Программирование 1 08.06.2006 08:05
Использование Map maloy DAX: Программирование 3 22.04.2004 10:51

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

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

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