Показать сообщение отдельно
Старый 16.10.2015, 17:59   #1  
Mikky is offline
Mikky
Участник
 
16 / 10 (1) +
Регистрация: 22.07.2008
При отключении доступа к .Net Business Connector все равно удается подключиться к AX
Добрый день!

Не могу разобраться с настройкой доступа к AX внешнему приложению на C# через .Net Business Connector.
Версия AX 2009 SP1.

Для доступа к Аксапте извне в домене заведен новый пользователь. Для пользователя создана группа прав, которой в правах доступа включен полный доступ ко всем узлам Business Connector (как к основному, так и ко вложенным)
Логин и домен пользователя прописаны в Администрирование -> Настройка -> Контроль доступа - > Системные служебные счета -> в группе полей Business Connector Proxy.

Подключение внешнего приложения проходит успешно, данные таблиц Аксапты доступны.

Отключаю в группе прав, к которой принадлежит пользователь, доступ ко все узлам
Business Connector (как к основному, так и ко вложенным).
Подключение все равно происходит, данные таблиц Аксапты доступны!

Замечу, что оба раза в активных пользователях появляется пользователь Business Connector, а в гриде 2 пользователя: один с типом сеанса Рабочий, другой с типом сеанса Business Connector. После выполнения кода оба пользователя пропадают, и в активных пользователях нет пользователя Business Connector.

При этом если я пытаюсь присоединиться в Аксапте через ax.Logon() под своим текущим пользователем, то настройка отключения доступа к Business Connector работает. В первом случае удается подключиться, во втором нет.

Кто-нибудь сталкивался с подобным? Не могу никак разобраться, что я не так делаю.

Привожу, как пример, код, который при нажатии на кнопку выводит в окне формы код номенклатуры.
Код:
 
            System.Net.NetworkCredential login;

            String inventItemIdField = "ItemId";
            Object inventItemId;

            using (Axapta ax = new Axapta())
            {
                try
                {
                    login = new System.Net.NetworkCredential("test", "test");
                    
                    ax.LogonAs("test", "test.ru", login, "aaa", "ru", "axapta-01.test.ru:2712", "");
                    
//                    ax.Logon("aaa", "ru", "axapta-01.test.ru:2712", null);

                    AxaptaRecord axRecord = ax.CreateAxaptaRecord("InventTable");
                    axRecord.ExecuteStmt( "select * from %1");

                    axRecord.Next();
                    inventItemId = axRecord.get_Field(inventItemIdField);
                    richTextBox1.Text = (string)inventItemId;
                                        
                    ax.Logoff();
                }
                catch (Exception excep)
                {
                    richTextBox1.Text = excep.Message;

                    ax.Logoff();
                }
            }