Установка роли в веб-службах GP приводит к необработанному исключению
Конечная цель: создать документ дебиторской задолженности в Dynamics GP с помощью веб-служб, имеющих возможность предоставлять рассылки или нет из приложения C#.
Что я пытаюсь: Извлечь политику для определенной роли, в которой для поведения распределения учетных записей задано "Распределения будут предоставлены"
Я включил фрагмент кода ниже. Если я удаляю настройку свойства context.RoleKey, все отлично работает с ролью по умолчанию, и создается транзакция с автоматическим распространением. Однако установка свойства RoleKey приводит к необработанному исключению сценария при вызове метода GetPolicyByOperation. Я пытался использовать Superuser - как указано ниже. Я также попробовал новую роль, предоставляя ему доступ ко всему. Обе эти роли использовались для создания новых версий Политики создания дебиторской задолженности в консоли безопасности.
context.OrganizationKey = (OrganizationKey)companyKey;
RoleKey roleKey = new RoleKey();
roleKey.Id = "Superuser";
context.RoleKey = roleKey;
receivablesInvoiceCreatePolicy = wsDynamicsGP.GetPolicyByOperation("CreateReceivablesInvoice", context);
1 ответ
Я работал с сотрудником Microsoft во время GP Technical Airlift 2013 в Фарго, Северная Дакота. Он обнаружил, что этот сбой, вероятно, является ошибкой, которую он собирается зарегистрировать внутри компании. Он поделился со мной обходным путем, используя свойство WorkOnBehalfOf объекта Context. Вот мои шаги, чтобы настроить это и фрагмент кода.
- Создать нового пользователя windows "domainuser01"
- Присвойте domainuser01 роль в Dynamics Security Console, для которой "Создание поведения для распределения учетных записей GL" установлено в "Распределения будут предоставлены" в "Политике создания счетов для дебиторской задолженности".
- Предоставьте домену user01 доступ Windows-аутентификации к базам данных GP и базе данных веб-служб.
Код:
context.OrganizationKey = (OrganizationKey)companyKey;
receivablesInvoiceCreatePolicy = wsDynamicsGP.GetPolicyByOperation("CreateReceivablesInvoice", context);
context.WorkOnBehalfOf = "<domain>\\domainuser01";
wsDynamicsGP.CreateReceivablesInvoice(newReceivablesDoc, context, receivablesInvoiceCreatePolicy);