|
24.06.2005, 15:40 | #1 |
Administrator
|
Вытащить ID меню можно а) http://www.axforum.info/forums/showt...1524#post71524 - пробежавшись по АОТ, единственное что не надо забывать - что menuitem 3 вида - display, output и action - т.е. они сидят в разных поддеревьях, далее получив объект типа treenode - присвоить его объекту типа MenuFunction
б) попровать для тех же целей сделать выборку из \SystemDocumentaion\Tables\UtilElementsId. Там ID-шник лежит отдельным полем. По ID-шнику сгенерить экземпляр класса MenuFunction. Получив (любым способом) экземпляр класса MenuFunction можно заглянуть в его свойство FeatureKey. Оно возвращает код привязанного FeatureKey. Записав полученные ID меню и ID FeatureKey - можно заполнить искомую табличку |
|
11.11.2006, 21:44 | #2 |
Moderator
|
Экспорт прав всех групп в asg-файлы в заданном каталоге
Ах, какая архиполезнейшая ветка, господа! Прочитал с большим интересом.
Цитата:
X++: static void KKu_Job_6B01_ExportAllUserGroupsToFiles(Args _args) { // сохраняет все права групп пользователей в отдельных файлах в указанном каталоге SysSecurityUserGroup sysSecurity; UserGroupInfo userGroupInfo; userGroupId userGroupId , tmpUserGroupId; domainId domainId , tmpDomainId; str fileName; str filePath = @'C:\YourOwnFolder\ForUserGroups\'; // '//заключительный обратный слэш - обязателен' ; sysSecurity = SysSecurityUserGroup::construct(); domainId = ''; // здесь возможно нужен конкретный домен, если их несколько, // но у меня их нет (в таблице DomainInfo нет записей) - поэтому пустая строка while select userGroupInfo { userGroupId = userGroupInfo.id; fileName = filePath + ( strReplace ( strReplace ( strReplace ( strReplace ( strReplace ( strReplace ( strReplace ( strReplace ( strReplace( userGroupId, '.', '_'), // в качестве имени файла - id группы, очищенный от "нехороших" символов ' ', '_'), ':', '_'), '/', '_'), @'\', '_'), '?', '_'), '*', '_'), '[', '_'), ']', '_') ); tmpUserGroupId = sysSecurity.parmUserGroupId(); tmpDomainId = sysSecurity.parmDomainId(); // ---------------------------------------------------------------------------------------- // выдрано из цикла if (dialog.run()) метода exportWithDialog класса SysSecurityUserGroup // скопировал по-обезьяньи, не особо разбираясь что к чему, но всё работает как мне надо :) sysSecurity.save(); sysSecurity.parmDomainId( domainId ); sysSecurity.parmUserGroupId( userGroupId ); sysSecurity.load(); sysSecurity.export( fileName ); sysSecurity.parmDomainId( tmpDomainId ); sysSecurity.parmUserGroupId( tmpUserGroupId ); sysSecurity.load(); // ---------------------------------------------------------------------------------------- } } Имена файлов формируются автоматически из идентификаторов групп. "Центрально симметричная" конструкция с многократными вызовами функции strReplace занимается очисткой идентификаторов групп от "нехороших" символов с точки зрения имени файла. Как видно в коде, "нехорошие" символы заменяются символами подчеркивания. Степень "нехорошести" - моя субъективная и некоторые символы (пробел, точка) в принципе вполне корректны для имени файла. Просто я предпочитаю, чтобы имя файла состояло только из букв, цифр и подчеркиваний. Вы можете смело сократить или расширить перечень заменямых символов по вашему усмотрению (например, на основании предварительного анализа значений поля Id таблицы UserGroupInfo) Собственно "движок" процесса экспорта заимствован из цикла if (dialog.run()) метода exportWithDialog класса SysSecurityUserGroup. Заимствован неосознанно, без большого понимания что и как происходит именно в этих строчках кода (за неимением времени разбираться). Если кто-то не сочтет за труд немного прокомментировать (или даже оптимизировать) этот фрагмент - заранее премного благодарен! Цитата:
Сообщение от sukhanchik
Внимание - вопрос: вот вы выгрузили права для 5 групп и одного домена. А загружаться они как должны? А если они чуть-чуть отличаются между собой? А если при загрузке вы выделили не те группы/домены (или таковых вообще не существует)? А названия групп/доменов в файле экспорта/импорта не хранятся - т.к. импортировать права можно в другую пару домен/группа. Вопросов тут больше чем ответов.
|
|
|
За это сообщение автора поблагодарили: zemlyn (2), Kabardian (3). |