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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2014, 14:47   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Как программно добавить пользователя в AX?
Возникла необходимость программно создавать пользователя в AX4, имеющего админские права. Захотел - сделал!
X++:
public static void ppoAutoAddUsers(Args _args)
{
    #Admin

    void addUserInfo(UserId _userId, NetworkAlias _alias, NetworkDomain _domain, Name _name)
    {
        UserGroupList               ugList;
        UserInfo                    uInfo, adminRecord;
        SysUserInfo                 suInfo;
        xAxaptaUserManager          mgr;
        xAxaptaUserDetails          det;
        ;

        select firstonly adminRecord
            where adminRecord.Id == #AdminUser;

        ttsbegin;

        mgr = new xAxaptaUserManager();
        det = mgr.getDomainUser(_domain, _alias);

        uInfo.clear();
        uInfo.initValue();
        uInfo.Id            = _userId;
        uInfo.Sid           = det.getUserSid(0);
        uInfo.NetworkAlias  = _alias;
        uInfo.NetworkDomain = _domain;
        uInfo.Company       = curext();
        uInfo.Enable        = NoYes::Yes;
        uInfo.Name          = _name;
        uInfo.Language      = adminRecord.Language;
        uInfo.HelpLanguage  = adminRecord.Helplanguage;
        if (uInfo.validateWrite())
            uInfo.write();

        infolog.getUserSetup().setDefaults(uInfo);
        infolog.getUserSetup().setUserSetup(uInfo);

        suInfo.initValue(_userId);
        suInfo.Id = _userId;
        suInfo.Email = det.getUserMail(0);
        if (suInfo.validateWrite())
        {
            suInfo.write();
        }

        ugList.clear();
        ugList.initValue();
        ugList.UserId = _userId;
        ugList.GroupId = #AdminUserGroup;
        if (ugList.validateWrite())
            ugList.write();

        ttscommit;
    }
    ;

    addUserInfo("denis", "chernyakovd", "polypore.biz", "Chernyakov, Denis");

    info('Done');
}
Но, к сожалению нужно переделать на чистый SQL. Может быть кто-нибудь пробовал уже? Есть ли такие личности, которые победили эту тему? Смущают системные классы xAxaptaUser*. Может есть какой-нибудь обходной путь?
__________________
// no comments
Старый 20.01.2014, 14:58   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от dech Посмотреть сообщение
Смущают системные классы xAxaptaUser*.
Они используются только для того чтобы получить SID (Идентификатор безопасности) и другие атрибуты учетной записи пользователя из домена.

Получить те же данные через SQL - дело техники http://habrahabr.ru/post/168699/

Последний раз редактировалось S.Kuskov; 20.01.2014 в 15:02.
За это сообщение автора поблагодарили: dech (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax-erp: Creating SSRS-Reports in Dynamics AX 2012 – What’s no longer possible in AX-reports Blog bot DAX Blogs 0 18.07.2012 12:11
Руководство пользователя по Российской функциональности AX 2009 Alexx7 DAX: Функционал 2 03.02.2012 19:35
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
Опрос: Руководство пользователя "Исправления и сторно в Dynamics AX всех версий" Vals DAX: Функционал 17 24.12.2009 23:25
Dynamics AX: Managing Your Supply Chain Using Microsoft Dynamics AX 2009 - Book Review Blog bot DAX Blogs 0 31.03.2009 23:06

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

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

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