1方法一:调用CRM3.0标准的方式:
1
public
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 -- =============================================
5 ALTER PROCEDURE [ dbo ] . [ prc_shareAccountContact ]
6 ( @uid uniqueidentifier ,
7 @unit uniqueidentifier ,
8 @type int ) -- type 1:客户;2:联系人
9 AS
10 BEGIN
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
73 END
74
75
76
77
78
2 -- Create date: 2008.05.22
3 -- Description: 客户、联系人共享
4 -- =============================================
5 ALTER PROCEDURE [ dbo ] . [ prc_shareAccountContact ]
6 ( @uid uniqueidentifier ,
7 @unit uniqueidentifier ,
8 @type int ) -- type 1:客户;2:联系人
9 AS
10 BEGIN
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
73 END
74
75
76
77
78