1方法一:调用CRM3.0标准的方式:
1public static void share(string contactid,string teamid)
2 {
3 CrmService service = new CrmService();
4 System.Net.NetworkCredential credential = new System.Net.NetworkCredential();
5 // Create the SecurityPrincipal object.
6 SecurityPrincipal principal = new SecurityPrincipal();
7 principal.Type = SecurityPrincipalType.Team;
8 //团队华南代销团队
9 principal.PrincipalId = new Guid(teamid);
10 PrincipalAccess principalAccess = new PrincipalAccess();
11 principalAccess.Principal = principal;
12
13 //principalAccess.AccessMask = AccessRights.DeleteAccess;
14 //principalAccess.AccessMask = AccessRights.ReadAccess;
15 principalAccess.AccessMask = AccessRights.WriteAccess;
16 //principalAccess.AccessMask = AccessRights.DeleteAccess;
17 //principalAccess.AccessMask = AccessRights.AssignAccess;
18 //principalAccess.AccessMask = AccessRights.AppendAccess;
19 //principalAccess.AccessMask = AccessRights.AppendToAccess;
20
21 TargetOwnedContact target = new TargetOwnedContact();
22
23 // EntityId is the GUID of the account to which access
24 // is being granted.
25 //把联系人共享
26 target.EntityId = new Guid(contactid);
27 GrantAccessRequest grant = new GrantAccessRequest();
28
29 grant.PrincipalAccess = principalAccess;
30 grant.Target = target;
31
32 GrantAccessResponse granted = (GrantAccessResponse)service.Execute(grant);
33 }
2 {
3 CrmService service = new CrmService();
4 System.Net.NetworkCredential credential = new System.Net.NetworkCredential();
5 // Create the SecurityPrincipal object.
6 SecurityPrincipal principal = new SecurityPrincipal();
7 principal.Type = SecurityPrincipalType.Team;
8 //团队华南代销团队
9 principal.PrincipalId = new Guid(teamid);
10 PrincipalAccess principalAccess = new PrincipalAccess();
11 principalAccess.Principal = principal;
12
13 //principalAccess.AccessMask = AccessRights.DeleteAccess;
14 //principalAccess.AccessMask = AccessRights.ReadAccess;
15 principalAccess.AccessMask = AccessRights.WriteAccess;
16 //principalAccess.AccessMask = AccessRights.DeleteAccess;
17 //principalAccess.AccessMask = AccessRights.AssignAccess;
18 //principalAccess.AccessMask = AccessRights.AppendAccess;
19 //principalAccess.AccessMask = AccessRights.AppendToAccess;
20
21 TargetOwnedContact target = new TargetOwnedContact();
22
23 // EntityId is the GUID of the account to which access
24 // is being granted.
25 //把联系人共享
26 target.EntityId = new Guid(contactid);
27 GrantAccessRequest grant = new GrantAccessRequest();
28
29 grant.PrincipalAccess = principalAccess;
30 grant.Target = target;
31
32 GrantAccessResponse granted = (GrantAccessResponse)service.Execute(grant);
33 }
方法二:写一个公共的存储过程做共享,在CALLOUT 中调用
1-- =============================================
2-- Create date: 2008.05.22
3-- Description: 客户、联系人共享
4-- =============================================
5ALTER PROCEDURE [dbo].[prc_shareAccountContact]
6 (@uid uniqueidentifier,
7 @unit uniqueidentifier,
8 @type int) --type 1:客户;2:联系人
9AS
10BEGIN
11 SET NOCOUNT ON;
12 --联系人 渠道总部_华南区 共享给华南代销团队
13 --联系人 渠道总部_华北区 共享给华北代销团队
14 --联系人 渠道总部_华东区 共享给华东代销团队
15 --联系人 机构理财部_华东区 共享给华东直销团队
16 --客户 机构理财部_华东区 共享给华东直销团队
17
18 if not exists(select * from fundcrm_MSCRM.dbo.BusinessUnitBase where businessunitid = @unit and name in('渠道总部_华南区','渠道总部_华北区','渠道总部_华东区','机构理财部_华东区'))
19 begin
20 return
21 end
22
23 if @type=1 --客户
24 begin
25 INSERT INTO fundcrm_MSCRM.dbo.PrincipalObjectAccess
26 (PrincipalId, ObjectId, ObjectTypeCode, PrincipalTypeCode,
27 AccessRightsMask, ChangedOn, InheritedAccessRightsMask, PrincipalObjectAccessId,FLAG)
28 select top 1 (select top 1 teamid from fundcrm_MSCRM.dbo.TeamBase where [Name]='华东直销团队'),
29 @uid,1,9,786455,getdate(),0,newId(),5
30 from sys.databases
31 where exists (select 1
32 from dbo.BusinessUnitBase
33 where BusinessUnitId = @unit
34 and name='机构理财部_华东区')
35 and not exists(select 1
36 from fundcrm_MSCRM.dbo.PrincipalObjectAccess
37 where principalid=(select top 1 TeamId
38 from fundcrm_MSCRM.dbo.TeamBase
39 where [Name]='华东直销团队')
40 and objectid=@uid
41 )
42 end
43 else if @type=2 --联系人
44 begin
45 declare @uname nvarchar(100)
46 select @uname=name from dbo.BusinessUnitBase where BusinessUnitId = @unit
47
48 INSERT INTO fundcrm_MSCRM.dbo.PrincipalObjectAccess
49 (PrincipalId, ObjectId, ObjectTypeCode, PrincipalTypeCode,
50 AccessRightsMask, ChangedOn, InheritedAccessRightsMask, PrincipalObjectAccessId,FLAG)
51 select top 1 (select top 1 TeamId
52 from fundcrm_MSCRM.dbo.TeamBase
53 where [Name]= case when @uname='机构理财部_华东区' then '华东直销团队'
54 when @uname='渠道总部_华南区' then '华南代销团队'
55 when @uname='渠道总部_华北区' then '华北代销团队'
56 when @uname='渠道总部_华东区' then '华东代销团队'
57 end),
58 @uid,2,9,786455,getdate(),0,newId(),7
59 from sys.databases
60 where not exists(select 1
61 from fundcrm_MSCRM.dbo.PrincipalObjectAccess
62 where principalid=(select top 1 TeamId
63 from fundcrm_MSCRM.dbo.TeamBase
64 where [Name]= case when @uname='机构理财部_华东区' then '华东直销团队'
65 when @uname='渠道总部_华南区' then '华南代销团队'
66 when @uname='渠道总部_华北区' then '华北代销团队'
67 when @uname='渠道总部_华东区' then '华东代销团队'
68 end
69 )
70 and objectid=@uid
71 )
72 end
73END
74
75
76
77
78
2-- Create date: 2008.05.22
3-- Description: 客户、联系人共享
4-- =============================================
5ALTER PROCEDURE [dbo].[prc_shareAccountContact]
6 (@uid uniqueidentifier,
7 @unit uniqueidentifier,
8 @type int) --type 1:客户;2:联系人
9AS
10BEGIN
11 SET NOCOUNT ON;
12 --联系人 渠道总部_华南区 共享给华南代销团队
13 --联系人 渠道总部_华北区 共享给华北代销团队
14 --联系人 渠道总部_华东区 共享给华东代销团队
15 --联系人 机构理财部_华东区 共享给华东直销团队
16 --客户 机构理财部_华东区 共享给华东直销团队
17
18 if not exists(select * from fundcrm_MSCRM.dbo.BusinessUnitBase where businessunitid = @unit and name in('渠道总部_华南区','渠道总部_华北区','渠道总部_华东区','机构理财部_华东区'))
19 begin
20 return
21 end
22
23 if @type=1 --客户
24 begin
25 INSERT INTO fundcrm_MSCRM.dbo.PrincipalObjectAccess
26 (PrincipalId, ObjectId, ObjectTypeCode, PrincipalTypeCode,
27 AccessRightsMask, ChangedOn, InheritedAccessRightsMask, PrincipalObjectAccessId,FLAG)
28 select top 1 (select top 1 teamid from fundcrm_MSCRM.dbo.TeamBase where [Name]='华东直销团队'),
29 @uid,1,9,786455,getdate(),0,newId(),5
30 from sys.databases
31 where exists (select 1
32 from dbo.BusinessUnitBase
33 where BusinessUnitId = @unit
34 and name='机构理财部_华东区')
35 and not exists(select 1
36 from fundcrm_MSCRM.dbo.PrincipalObjectAccess
37 where principalid=(select top 1 TeamId
38 from fundcrm_MSCRM.dbo.TeamBase
39 where [Name]='华东直销团队')
40 and objectid=@uid
41 )
42 end
43 else if @type=2 --联系人
44 begin
45 declare @uname nvarchar(100)
46 select @uname=name from dbo.BusinessUnitBase where BusinessUnitId = @unit
47
48 INSERT INTO fundcrm_MSCRM.dbo.PrincipalObjectAccess
49 (PrincipalId, ObjectId, ObjectTypeCode, PrincipalTypeCode,
50 AccessRightsMask, ChangedOn, InheritedAccessRightsMask, PrincipalObjectAccessId,FLAG)
51 select top 1 (select top 1 TeamId
52 from fundcrm_MSCRM.dbo.TeamBase
53 where [Name]= case when @uname='机构理财部_华东区' then '华东直销团队'
54 when @uname='渠道总部_华南区' then '华南代销团队'
55 when @uname='渠道总部_华北区' then '华北代销团队'
56 when @uname='渠道总部_华东区' then '华东代销团队'
57 end),
58 @uid,2,9,786455,getdate(),0,newId(),7
59 from sys.databases
60 where not exists(select 1
61 from fundcrm_MSCRM.dbo.PrincipalObjectAccess
62 where principalid=(select top 1 TeamId
63 from fundcrm_MSCRM.dbo.TeamBase
64 where [Name]= case when @uname='机构理财部_华东区' then '华东直销团队'
65 when @uname='渠道总部_华南区' then '华南代销团队'
66 when @uname='渠道总部_华北区' then '华北代销团队'
67 when @uname='渠道总部_华东区' then '华东代销团队'
68 end
69 )
70 and objectid=@uid
71 )
72 end
73END
74
75
76
77
78