Principales respuestas
es posible compartir registros de forma masiva via .net c#?

Pregunta
-
Hola estimados, tengo la siguiente duda, tengo un listado de usuarios en excel y cuentas, a las cuales deseo compartir con ciertos atributos, tales como read, write, delete, etc.., mi pregunta es esto se puede hacer mediante un .net codigo c#? si es asi alguien tiene alguna referencia para poder mirar que instrucciones usar? y lo segundo cuando comparto datos de una cuenta tambien se compartiran los registros de contactos de esa cuenta? es similar al assign?
saludos y muchas gracias por su ayuda!!
Respuestas
-
Hola Carlos,
Te comento que sí es posible realizar lo que tú deseas.
Te comparto los métodos que se emplean (los mismos que lo pudieras revisar en el SDK)
Para compartir los registros sería algo similar a esto:
private void ShareRecord(Guid recordId, Guid asistId)
{
SecurityPrincipal principal = new SecurityPrincipal();
principal.Type = SecurityPrincipalType.User;
principal.PrincipalId = asistId;
PrincipalAccess principalAccess = new PrincipalAccess();
principalAccess.Principal = principal;
principalAccess.AccessMask |= AccessRights.ReadAccess;
principalAccess.AccessMask |= AccessRights.WriteAccess;
TargetOwned[Entidad] target = new TargetOwned[Entidad]();
target.EntityId = recordId;
GrantAccessRequest grant = new GrantAccessRequest();
grant.PrincipalAccess = principalAccess;
grant.Target = target;
GrantAccessResponse granted = (GrantAccessResponse)objCrmService.Execute(grant);
}recordId: El GUID del registro a compartir
asistId : EL GUID del usuario al que deseas compartir
TargetOwned[Entidad]: La entidad destino que deseas compartir. Por ejemplo si fuera Cuentas: TargetOwnedAccountOtro punto a considerar es que si vas a agregar más de un permiso se debe emplear este símbolo "|="
Ejemplo:
principalAccess.AccessMask |= AccessRights.ReadAccess;
principalAccess.AccessMask |= AccessRights.WriteAccess;En caso quisieras descompartir sería algo similar a esto:
private void UnShareRecord(Guid recordId, Guid asistId)
{
SecurityPrincipal principal = new SecurityPrincipal();
principal.Type = SecurityPrincipalType.User;
principal.PrincipalId = asistId;
TargetOwned[Entidad] target = new TargetOwned[Entidad]();
target.EntityId = recordId;
RevokeAccessRequest revoke = new RevokeAccessRequest();
revoke.Revokee = principal;
revoke.Target = target;
RevokeAccessResponse revoked = (RevokeAccessResponse)objCrmService.Execute(revoke);
}
Julio- Propuesto como respuesta Jimmy LarrauriModerator miércoles, 1 de junio de 2011 14:25
- Marcado como respuesta Jimmy LarrauriModerator miércoles, 8 de junio de 2011 15:25
Todas las respuestas
-
Hola Carlos,
Te comento que sí es posible realizar lo que tú deseas.
Te comparto los métodos que se emplean (los mismos que lo pudieras revisar en el SDK)
Para compartir los registros sería algo similar a esto:
private void ShareRecord(Guid recordId, Guid asistId)
{
SecurityPrincipal principal = new SecurityPrincipal();
principal.Type = SecurityPrincipalType.User;
principal.PrincipalId = asistId;
PrincipalAccess principalAccess = new PrincipalAccess();
principalAccess.Principal = principal;
principalAccess.AccessMask |= AccessRights.ReadAccess;
principalAccess.AccessMask |= AccessRights.WriteAccess;
TargetOwned[Entidad] target = new TargetOwned[Entidad]();
target.EntityId = recordId;
GrantAccessRequest grant = new GrantAccessRequest();
grant.PrincipalAccess = principalAccess;
grant.Target = target;
GrantAccessResponse granted = (GrantAccessResponse)objCrmService.Execute(grant);
}recordId: El GUID del registro a compartir
asistId : EL GUID del usuario al que deseas compartir
TargetOwned[Entidad]: La entidad destino que deseas compartir. Por ejemplo si fuera Cuentas: TargetOwnedAccountOtro punto a considerar es que si vas a agregar más de un permiso se debe emplear este símbolo "|="
Ejemplo:
principalAccess.AccessMask |= AccessRights.ReadAccess;
principalAccess.AccessMask |= AccessRights.WriteAccess;En caso quisieras descompartir sería algo similar a esto:
private void UnShareRecord(Guid recordId, Guid asistId)
{
SecurityPrincipal principal = new SecurityPrincipal();
principal.Type = SecurityPrincipalType.User;
principal.PrincipalId = asistId;
TargetOwned[Entidad] target = new TargetOwned[Entidad]();
target.EntityId = recordId;
RevokeAccessRequest revoke = new RevokeAccessRequest();
revoke.Revokee = principal;
revoke.Target = target;
RevokeAccessResponse revoked = (RevokeAccessResponse)objCrmService.Execute(revoke);
}
Julio- Propuesto como respuesta Jimmy LarrauriModerator miércoles, 1 de junio de 2011 14:25
- Marcado como respuesta Jimmy LarrauriModerator miércoles, 8 de junio de 2011 15:25
-
-
-
-