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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2009, 16:55   #1  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
? Создание company, domain, virtual company из X++
День добрый, уважаемые!

Есть следующая задача-проблема.
Мне нужно с помощью вызова методов X++ (через .NET BC) выполнить примерно следующее: создать Company, создать для нее Domain, "поместить" Company в уже существующий Domain, добавить в созданную Company уже имеющуюся Virtual Company, создать пользователя (роль) для данного Domain с определенными правами (таких ролей может быть несколько, естественно), т.е. настроить RLS. Кто-нибудь делал нечто подобное?

p.s.: Почему это необходимо? нужно минимизировать участие во всем процессе интегратора Dynamics - все это будет происходить по нажатию на кнопку определенным пользователем из ASP.NET приложения.

Заранее спасибо за совет и помощь.
Старый 15.01.2009, 18:01   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Дмитрий, извини, конечно, не могу согласиться никак. Очень странная задача, даже для вертикального решения.

Сделать-то не сложно - там все на уровне таблиц. Надо просто создать класс на Х++, который создаст новую компанию. Потом создат домен или добавит в существующий. Потом некоторые таблицы объеденит в общие таблицы. Потом создаст виртуальную компанию или добавит новую компанию в существующую.

Вы представляете кол-во аргументов?

Есть еще путь. Написать методы - обертки работы с компаниями. Тогда можно будет вызывать метод за методом, с конечным числом аргументов.

Но еще роли... Вы когда-нибудь настраивали права доступа? А копировали их программно?
А Вы знаете, что есть еще настройки пользователя?

Рекомендую Вам сначала разобраться со стандартным механизмом.

И все это для чего?? Зачем писать кучу классов - оберток, внешнее приложение, тестировать все это когда можно просто зайти в настройки и создать??

Короче, задача - удалить гланды. Условие - через рот нельзя.
Старый 15.01.2009, 18:13   #3  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от George Nordic Посмотреть сообщение
Дмитрий, извини, конечно, не могу согласиться никак. Очень странная задача, даже для вертикального решения.

Сделать-то не сложно - там все на уровне таблиц. Надо просто создать класс на Х++, который создаст новую компанию. Потом создат домен или добавит в существующий. Потом некоторые таблицы объеденит в общие таблицы. Потом создаст виртуальную компанию или добавит новую компанию в существующую.

Вы представляете кол-во аргументов?
К сожалению представляю

Цитата:
Сообщение от George Nordic Посмотреть сообщение
Есть еще путь. Написать методы - обертки работы с компаниями. Тогда можно будет вызывать метод за методом, с конечным числом аргументов.

Но еще роли... Вы когда-нибудь настраивали права доступа? А копировали их программно?
А Вы знаете, что есть еще настройки пользователя?

Рекомендую Вам сначала разобраться со стандартным механизмом.

И все это для чего?? Зачем писать кучу классов - оберток, внешнее приложение, тестировать все это когда можно просто зайти в настройки и создать??

Короче, задача - удалить гланды. Условие - через рот нельзя.
Я понимаю нелогичность данного решения, но в нашем случае требуют именно такое решение Также я понимаю, что это геммор еще тот однако это мне не сильно помогает реализовать необходимое....
Старый 15.01.2009, 18:23   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от DmitrySincerity Посмотреть сообщение
День добрый, уважаемые!

Есть следующая задача-проблема.
Мне нужно с помощью вызова методов X++ (через .NET BC) выполнить примерно следующее: создать Company, создать для нее Domain, "поместить" Company в уже существующий Domain, добавить в созданную Company уже имеющуюся Virtual Company, создать пользователя (роль) для данного Domain с определенными правами (таких ролей может быть несколько, естественно), т.е. настроить RLS. Кто-нибудь делал нечто подобное?

p.s.: Почему это необходимо? нужно минимизировать участие во всем процессе интегратора Dynamics - все это будет происходить по нажатию на кнопку определенным пользователем из ASP.NET приложения.

Заранее спасибо за совет и помощь.

Не думаю, что это правильный подход, но не такой уж он и нереальный, мне кажется.
Сам не делал, но кой-чего для начала подсказать могу - начните с этого:

X++:
static void JobZVVTestCompany(Args _args)
{
    DataArea            dataArea;
    DomainInfo          domainInfo;
    CompanyDomainList   companyDomainList;
    VirtualDataAreaList virtualDataAreaList;
    ;

    ttsBegin;

    // Обычная компания
    dataArea.clear();
    dataArea.name = 'ZVVCompany';
    dataArea.id = 'ZVV';
    dataArea.isVirtual = NoYes::No;
    dataArea.insert();

    // Виртуальная компания
    dataArea.clear();
    dataArea.name = 'ZVVVirtualCompany';
    dataArea.id = 'ZVT';
    dataArea.isVirtual = NoYes::Yes;
    dataArea.insert();

    // Домен
    DomainInfo.name = 'ZVVDomain';
    DomainInfo.id = 'ZVVDom';
    DomainInfo.insert();

    // Домен в компанию
    companyDomainList.companyId = 'ZVV';
    companyDomainList.domainId = 'ZVVDom';
    companyDomainList.insert();

    // Компанию в вирт. компанию
    virtualDataAreaList.Id = 'ZVV';
    virtualDataAreaList.virtualDataArea = 'ZVT';
    virtualDataAreaList.insert();

    /*
    // Ну и так далее по аналогии:
    //USERInfo - пользователи
        (проблемы - там целая куча неизвестных настроечных полей,
         с которыми нужно доразбираться и как-то заполнять,
         в том числе зашифрованное поле "пароль",
         но правда его можно оставить пустым - прокатывает.
         Лучше найти какое-то стандартные механизмы.
        )
    //USERGroupInfo - группы (роли) (2 поля: Id, Name)
    //USERGroupList - Группы по пользователям (2 поля: UserId, GroupId)
    //SYSRecordLevelSecurity - RLS
        (проблема - сами правила в MEMO-поле.
         Лучше найти какое-то стандартные механизмы.
        )

    Возможно надо ещё какие-то настроечные таблицы заполнять. Придётся пробовать методом тыка и разбираться.
    */

    ttsCommit;
}
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: DmitrySincerity (1).
Старый 15.01.2009, 18:29   #5  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от ZVV Посмотреть сообщение
.......................
.......................
Спасибо за помощь!
Старый 15.01.2009, 18:59   #6  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
И не забываем перед каждым .insert() вызывать validateWrite(), и делать это всегда и везде

X++:
If (!table.validateWrite())
   throw error ('XXX');
Старый 15.01.2009, 19:17   #7  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от DSPIC Посмотреть сообщение
И не забываем перед каждым .insert() вызывать validateWrite(), и делать это всегда и везде

X++:
If (!table.validateWrite())
   throw error ('XXX');
Учтемс, спасибо
Старый 16.01.2009, 18:02   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
И еще надо не забыть рестартануть АОС после создания компании и до создания в компании 1-й записи в любой из таблиц.
__________________
Возможно сделать все. Вопрос времени
Старый 16.01.2009, 18:13   #9  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
И еще надо не забыть рестартануть АОС после создания компании и до создания в компании 1-й записи в любой из таблиц.
А иначе?
__________________
Zhirenkov Vitaly
Старый 16.01.2009, 18:17   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Иначе Аксапта не сможет создать запись в компании.... Хотя в общем-то это 100% справедливо для форм (до рестарта АОСа данные не видны) - но что-то есть предчувствие что могут быть грабли и при созданиии записи из кода
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Microsoft Dynamics Virtual Machine Demonstration Toolkit Blog bot DAX Blogs 0 10.11.2008 00:09
axaptafreak: AX 2009 feature: cross company support Blog bot DAX Blogs 0 16.04.2008 22:05
dynamicsusers: Hand On Labs: SoftGrid: Getting Published - Bringing the Virtual Applications to the Enterprise Blog bot DAX Blogs 0 12.07.2007 23:52
miker-developer: Install Dynamics on Virtual PC. Blog bot DAX Blogs 0 12.04.2007 16:10
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:59.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.