AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.07.2010, 11:43   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Dicora Посмотреть сообщение
Такая задача:

Компания, Холдинг, много юр лиц.
Все юр лица работают в CRM. Нужно сделать так чтобы продавцы одного юр лица видели сделки другого, но в тоже время не видели их суммы, в тоже время продавцы внутри своего юр лица должны видеть все сделки с суммами.

Иерархия юр лиц реализована через подразделения.

Суть такая у меня есть скрипт определяющий Роль пользователя, хотелось бы переделать этот скрипт на определение вот такой сути:

Пользователь открывающий карточку возможной сделки, скриптом можно определять его GUID, и его Роль, по логике наверно можно по GUID-у пользователя определить Подразделение в котором он нах-ся, в карточке сделки есть поле Ответственный, по логике скриптом можно пределять по значению поля Lookup ответственный - GUID ответственного пользователя и по его GUID-у определить подразделение ответственного за сделку. Теперь задача нужно определить является ли подразделение ответственного за сделку равным или дочерним подразделением - Подразделения пользователя открывающего карточку сделки.
Если Подразделение открывающего карточку выше чем подразделение того кто создавал карточку возможной сделки - то показывать сумму сделки, если ниже или не входит в структурное подразделение (например пользователь из другого юр лица) то сумму скрывать.

Возможно ли это сделать? Если кто-нибудь уже сталкивался с этой задаче - подскажите решение.

У меня есть скрипт определение Роли пользователя открывающего карточку:

PHP код:
if(UserHasRole("Системный администратор")) {
 // системному администратору нужно показывать все поля
} else {
 // здесь будет код который будет скрывать или показывать поле сумма сделки в зависимости от того кто открывает карточку.
}

/* Проверяем, есть ли у пользователя запрашиваемая роль */
function UserHasRole(roleName) {
    // получаем текущие роли пользователя
   var oXml = GetCurrentUserRoles();
   if(oXml != null) {
      var roles = oXml.selectNodes("//BusinessEntity/q1:name");
      if(roles != null) {
         for( i = 0; i < roles.length; i++) {
            if(roles[i].text == roleName) {
                    // возвращаем true если у пользователя есть эта роль
               return true;
            }
         }
      }
   }
    // в противном случаи возвращаем false
   return false;
}

/* Выцепляем все роли пользователя */
function GetCurrentUserRoles() {
   var xml = "" +
   "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
   "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
   GenerateAuthenticationHeader() +
   "<soap:Body>" +
   " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
   " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
   " <q1:EntityName>role</q1:EntityName>" +
   " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
   " <q1:Attributes>" +
   " <q1:Attribute>name</q1:Attribute>" +
   " </q1:Attributes>" +
   " </q1:ColumnSet>" +
   " <q1:Distinct>false</q1:Distinct>" +
   " <q1:LinkEntities>" +
   " <q1:LinkEntity>" +
   " <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +
   " <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +
   " <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +
   " <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +
   " <q1:JoinOperator>Inner</q1:JoinOperator>" +
   " <q1:LinkEntities>" +
   " <q1:LinkEntity>" +
   " <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +
   " <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +
   " <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +
   " <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +
   " <q1:JoinOperator>Inner</q1:JoinOperator>" +
   " <q1:LinkCriteria>" +
   " <q1:FilterOperator>And</q1:FilterOperator>" +
   " <q1:Conditions>" +
   " <q1:Condition>" +
   " <q1:AttributeName>systemuserid</q1:AttributeName>" +
   " <q1:Operator>EqualUserId</q1:Operator>" +
   " </q1:Condition>" +
   " </q1:Conditions>" +
   " </q1:LinkCriteria>" +
   " </q1:LinkEntity>" +
   " </q1:LinkEntities>" +
   " </q1:LinkEntity>" +
   " </q1:LinkEntities>" +
   " </query>" +
   " </RetrieveMultiple>" +
   " </soap:Body>" +
   "</soap:Envelope>" +
   "";

   var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

   xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
   xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
   xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
   xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
   xmlHttpRequest.send(xml);

   var resultXml = xmlHttpRequest.responseXML;
   return(resultXml);
}
Подскажите, как его переделать под мою задачу?

Заранее спасибо!
На 100% скриптом эта задача не решается. Через Advanced Find пользователи смогут видеть суммы, если у них есть права на чтение записи. Для того, чтобы это решить необходимо это делать через плагин. Пример.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Коротич Владимир (1), echo_igor (1).
Теги
crm, разработка, dynamics crm

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Присвоение одного атрибута сущности значения другого атрибута связанной сущности vital.mih Dynamics CRM: Функционал 38 08.09.2010 10:53
Ожидания окончание одного БП в теле другого БП. echo_igor Dynamics CRM: Прочие вопросы 16 17.08.2009 14:45
у одного из пользователей закр. СРМ nasty_C Dynamics CRM: Администрирование 6 17.05.2006 18:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:04.