Добрый день!
Не могу разобраться с настройкой доступа к 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();
}
}