我有一个AutoNumber插件,当用户按下save时会调用该插件,但是我已经收到了将创建记录的人的姓名首字母附加到故障单末尾的要求。
例如:0001-0327-RBS
我已经能够获得创建记录的用户的GUID,但我不知道如何在SQL之外获取文字值。我无法弄清楚如何获取创建记录的活动用户的用户名。这可能来自插件吗?
任何帮助表示赞赏。感谢。
答案 0 :(得分:0)
您应该从IServiceProvider获取IOrganizationService
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = serviceFactory.CreateOrganizationService(context.UserId);
现在您只需使用服务检索SystemUser:
var systemUser = service.Retrieve("systemuser", context.UserId, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));
在ColumnSet中,您可以指定要检索的列(例如“firstname”,“lastname”,“fullname”等)。
现在你可以简单地做
systemUser["fullname"]
获取名称。或者如果你使用早期绑定:
systemUser.ToEntity<SystemUser>().FullName