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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.07.2010, 11:16   #1  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
:) Скрытие суммы сделки от пользователей другого подразделения, и показ суммы сделки для пользователей одного и того же подразделения с владельцем сделки
Такая задача:

Компания, Холдинг, много юр лиц.
Все юр лица работают в 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);
}
Подскажите, как его переделать под мою задачу?

Заранее спасибо!
Старый 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).
Старый 08.09.2010, 05:40   #3  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
Андрей, скажи... в твоем примере упоминаются плагины и классы...
сущности я новые создал, формы настроил в соответствии с примером на онлоад и сафе скрипты повесил.

Но у меня не получается в визуал студио плагины создать. я если честно даже не врубаюсь как мне просто этот код плагинов засунуть в текстовый файл и загрузить через плагин регистратор?

Если не сложно, прикрепи пожалуйста. если они у тебя есть в нужном формате...

Спасибо!
Старый 08.09.2010, 11:01   #4  
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 Посмотреть сообщение
Андрей, скажи... в твоем примере упоминаются плагины и классы...
сущности я новые создал, формы настроил в соответствии с примером на онлоад и сафе скрипты повесил.

Но у меня не получается в визуал студио плагины создать. я если честно даже не врубаюсь как мне просто этот код плагинов засунуть в текстовый файл и загрузить через плагин регистратор?

Если не сложно, прикрепи пожалуйста. если они у тебя есть в нужном формате...

Спасибо!
Их нет в нужном формате. Там не столько нужен сам код, сколько больше понимание того, как оно работает.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 08.09.2010, 14:28   #5  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
Андрей,

Я нашел статейку как научиться писать плагины...
(на сайте Мелкомягкий CRM, mmcrm.ru)

там сказали нужен Visual Studio и SDKCRM для сборок.

На сервере у меня просто есть Visual Studio 2005 и 2008 (9версия) но там при создании нового проекта

file --- new --- project

нет типа языка Visual C++ и template Class Library

у меня вообще список шаблонов пустой

проект не создать.

я даже скачал sdkcrm.exe откуда брать какие-то сборки

но не понимаю как мне этот код - который там представлен (4 плагина + 1 класс) скомпилировать и зарегистрировать через ПлагинРегистратор. Не как регистрировать я понимаю там есть инструкция но мне нужны файлы сами которые нужно добавить в плагин регистратор.

Я бы сам их сделал, но не знаю как, т.к. никогда планины не делал и вообще если честно с трудом понимаю какую роль они играют, но то что с помощью них делается - мне очень нужно.

А понимание у меня будет... месяца через 2-3 я сейчас только начал T-SQL изучать позже буду изучать С# и ASP.net, но просто именно этот функционал необходим уже сейчас. Причем меня полностью даже устраивает то что было реализовано там по ссылке "Пример" про которую я говорил.

Сможете помочь с этим вопросом??

Заранее спасибо!
Старый 08.09.2010, 14:37   #6  
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
Надеюсь мой доклад по поводу разработки плагинов позволит Вам освоить эту технику.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 13:24   #7  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
Привет..

Посмотрел видео... попытался проделать тоже самое т.е. написать такой же плагин и ничего не получилось, все застопорилось на моменте где подключались сборки. Они у меня как на видео справа не появляются (у меня визуал студия 2008 версия 9). + у меня не хватает сборок и не знаю откуда их взять.

+ в по той ссылке идет упоминание про 4 плагина и класс.. попытался по аналогии через студию создать плагины и подключить сборки тоже не получилось

using System; - есть
using System.Collections.Generic;
using System.Text;
using System.Xml;
using Microsoft.Crm.Sdk; - есть
using Microsoft.Crm.SdkTypeProxy; - есть
using Microsoft.Crm.SdkTypeProxy.Metadata;
using Microsoft.Crm.Sdk.Metadata;
using Microsoft.Crm.Sdk.Query;

Этих сборок не хватает (есть только 3 из всех)

А когда я просто добавил имеющиеся мои 3 сборки и нажал Build вылезло куча ошибок? Подскажите пожалуйста где можно эти сборки взять и как их подключить к пустому проекту в студии 2008 версия 9?

Заранее спасибо!
Старый 13.09.2010, 15:38   #8  
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 Посмотреть сообщение
Привет..

Посмотрел видео... попытался проделать тоже самое т.е. написать такой же плагин и ничего не получилось, все застопорилось на моменте где подключались сборки. Они у меня как на видео справа не появляются (у меня визуал студия 2008 версия 9). + у меня не хватает сборок и не знаю откуда их взять.

+ в по той ссылке идет упоминание про 4 плагина и класс.. попытался по аналогии через студию создать плагины и подключить сборки тоже не получилось

using System; - есть
using System.Collections.Generic;
using System.Text;
using System.Xml;
using Microsoft.Crm.Sdk; - есть
using Microsoft.Crm.SdkTypeProxy; - есть
using Microsoft.Crm.SdkTypeProxy.Metadata;
using Microsoft.Crm.Sdk.Metadata;
using Microsoft.Crm.Sdk.Query;

Этих сборок не хватает (есть только 3 из всех)

А когда я просто добавил имеющиеся мои 3 сборки и нажал Build вылезло куча ошибок? Подскажите пожалуйста где можно эти сборки взять и как их подключить к пустому проекту в студии 2008 версия 9?

Заранее спасибо!
То что пишется в using - это не сборки, а неймспейсы.
Обычно в ошибках написано, что вызвало ошибки, а я не телепат, чтобы понять что именно вызвало ошибки.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 18:00   #9  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
http://a33ik.blogspot.com/2009/05/pu...own-hands.html

пишу насчет этого поста, я вижу ты изменил код плагина???

попробовал их создать сделал все в точности (единственное не совсем понял какое имя фрейма нужно указывать при создании интернет-кадра и какое значение по умолчанию ставить в поле new_isallowed).

Но это не важно.

Далее сделал плагины, сбилдил, зарегистрировал все как положено, но при запуске CRM сразу после регистрации обоих плагинов появляется ошибка:


А вот Trace Log этой ошибки:

В приложении файл (CRMLogs.rar)


что характерно, если зарегистрировать плагин PublicViewManager - и к нему шаг на Событие Create, и сущность new_piblicviewmanager, Post Synh. - то ошибки не возникает при запуске crm, но ошибка возникает в момент сохранения когда мы создаем новый объект PublicViewManager выбираю в пиклисте Сущность и во втором пиклисте выбираю Подразделение нажимаю Save и ошибка. "Обратитесь к содружеству Майкрософт и т.д. и никакого описания."

Если Зарегистрировать оба плагина и к нему шаг на событие RetrieveMultiply, Pre Synh. То при открытии CRM любого представления (даже рабочая область действия) получаем такую ошибку

X++:
Microsoft CRM Error Report: 
Error Description:
Public assembly must have public key token.

Error Details:
Public assembly must have public key token.

Full Stack:
[CrmException: Public assembly must have public key token.]
    Microsoft.Crm.Extensibility.PluginAssemblyFactory.VerifyPublicKeyToken(Assembly assembly)
    Microsoft.Crm.Extensibility.PluginStep..ctor(Guid stepId, StepDescriptionCache stepDescriptionCache, SecureConfigurationCache stepSecureConfigurationCache, StepImageDescriptionCache stepImageDescriptionCache, CrmEventLog eventLog, IOrganizationContext context)
    Microsoft.Crm.Extensibility.PipelineStepFactory.CreateInstance(Guid stepId, IOrganizationContext context)
    Microsoft.Crm.Caching.PipelineStepCacheLoader.LoadCacheData(Guid key, ExecutionContext context)
    Microsoft.Crm.Caching.ObjectModelCacheLoader`2.LoadCacheData(TKey key, IOrganizationContext context)
    Microsoft.Crm.Caching.CrmMultiOrgCache`2.CreateEntry(TKey key, IOrganizationContext context)
    Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context)
    Microsoft.Crm.Extensibility.ImageRetrievalStep.MergeEntityRequests(PipelineExecutionContext context, Dictionary`2 entityRequests)
    Microsoft.Crm.Extensibility.ImageRetrievalStep.Execute(PipelineExecutionContext context)
    Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context)
    Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context)
    Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context)
    Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
    Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
    Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
    Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
    Microsoft.Crm.Sdk.InProcessCrmService.Execute(Object request)
    Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.ExecuteInternal()
    Microsoft.Crm.Application.Platform.ServiceCommands.RetrieveMultipleCommand.Execute()
    Microsoft.Crm.Application.Platform.SavedQuery.RetrieveByObjectType(Int32 returnedTypeCode, String columnSetXml, Int32[] queryTypes, Boolean publicOnly)
    Microsoft.Crm.Controls.ViewSelector.AddSystemViewGroup(String groupName, String groupId, OptionSorting sorting, Int32[] queryTypes, Boolean includeQueryAPIViews)
    Microsoft.Crm.Application.Controls.AppViewSelector.Initialize()
    Microsoft.Crm.Application.Controls.AppViewSelector.set_SelectedView(String value)
    Microsoft.Crm.Web.Workplace.HomeActivitiesPage.ConfigurePage()
    Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e)
    System.Web.UI.Control.PreRenderRecursiveInternal()
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

[HttpUnhandledException:    "System.Web.HttpUnhandledException".]
    System.Web.UI.Page.HandleError(Exception e)
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    System.Web.UI.Page.ProcessRequest()
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
    System.Web.UI.Page.ProcessRequest(HttpContext context)
    ASP.korusconsulting_workplace_home_activities_aspx.ProcessRequest(HttpContext context)  c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\fcc31ff6\e77f4ed8\App_Web_7vb2pn-7.0.cs: 0
    System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)



Other Message:

Error Number:
0x8004416C

Source File:
Not available

Line Number:
Not available
 
 
Date: 09-13-2010

Time: 17:40:07

Server: crmsrv02
 
 
Request URL:
[url]http://crmsrv02:5555/OrgName/Workplace/home_activities.aspx[/url]
 

Microsoft CRM Unhandled Error Details: 
    '/'.
--------------------------------------------------------------------------------

Public assembly must have public key token. 
:      -.                . 

  : Microsoft.Crm.CrmException: Public assembly must have public key token.

 : 

     -.         ,     .  

 : 


[CrmException: Public assembly must have public key token.]
   Microsoft.Crm.Extensibility.PluginAssemblyFactory.VerifyPublicKeyToken(Assembly assembly) +426
   Microsoft.Crm.Extensibility.PluginStep..ctor(Guid stepId, StepDescriptionCache stepDescriptionCache, SecureConfigurationCache stepSecureConfigurationCache, StepImageDescriptionCache stepImageDescriptionCache, CrmEventLog eventLog, IOrganizationContext context) +213
   Microsoft.Crm.Extensibility.PipelineStepFactory.CreateInstance(Guid stepId, IOrganizationContext context) +207
   Microsoft.Crm.Caching.PipelineStepCacheLoader.LoadCacheData(Guid key, ExecutionContext context) +299
   Microsoft.Crm.Caching.ObjectModelCacheLoader`2.LoadCacheData(TKey key, IOrganizationContext context) +114
   Microsoft.Crm.Caching.CrmMultiOrgCache`2.CreateEntry(TKey key, IOrganizationContext context) +84
   Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context) +252
   Microsoft.Crm.Extensibility.ImageRetrievalStep.MergeEntityRequests(PipelineExecutionContext context, Dictionary`2 entityRequests) +322
   Microsoft.Crm.Extensibility.ImageRetrievalStep.Execute(PipelineExecutionContext context) +73
   Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context) +325
   Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context) +881
   Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context) +179
   Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +835
   Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +78
   Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +152
   Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) +319
   Microsoft.Crm.Sdk.InProcessCrmService.Execute(Object request) +1463
   Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.ExecuteInternal() +260
   Microsoft.Crm.Application.Platform.ServiceCommands.RetrieveMultipleCommand.Execute() +10
   Microsoft.Crm.Application.Platform.SavedQuery.RetrieveByObjectType(Int32 returnedTypeCode, String columnSetXml, Int32[] queryTypes, Boolean publicOnly) +465
   Microsoft.Crm.Controls.ViewSelector.AddSystemViewGroup(String groupName, String groupId, OptionSorting sorting, Int32[] queryTypes, Boolean includeQueryAPIViews) +133
   Microsoft.Crm.Application.Controls.AppViewSelector.Initialize() +157
   Microsoft.Crm.Application.Controls.AppViewSelector.set_SelectedView(String value) +13
   Microsoft.Crm.Web.Workplace.HomeActivitiesPage.ConfigurePage() +1091
   Microsoft.Crm.Application.Controls.AppUIPage.OnPreRender(EventArgs e) +22
   System.Web.UI.Control.PreRenderRecursiveInternal() +80
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

 

 

Basic Server & Client Information: 
 

What the End User would have seen:



В приложении прилагаю плагины, которые я зарегистрировал:
Вложения
Тип файла: rar PublicViewManagerCreate+SavedQueryRetrieveHandler.rar (9.2 Кб, 93 просмотров)
Тип файла: rar CRMLogs.rar (14.9 Кб, 92 просмотров)
Старый 13.09.2010, 18:30   #10  
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
Angry
Цитата:
Сообщение от Dicora Посмотреть сообщение
пишу насчет этого поста, я вижу ты изменил код плагина???
Извините, но мы на брудершафт пили? Мои рекомендации Вам - не стоит "тыкать" незнакомым людям (следовать или нет - уже Ваше дело).

По поводу остального - что ж делать, прийдётся провести мастер-класс по поиску источника ошибок без привлечения форума (хотя, если честно, даже моя мама, которая с компьютером на Вы - пользоваться поисковиком - умеет).

1. Заходим в поисковик (дело вкуса и привычки). Я пользуюсь http://www.google.com
2. Вбиваем в строку поиска ошибку и добавляем контекстную информацию. В вашем случае - CRM Plugin error Public assembly must have public key token
3. Просматриваем полученный результат (например, самую первую ссылку) и видим такой совет:

make sure that you have created a "public" key file to sign the assembly. In the Visual Studio signing form, do not password protect the key file.

Подписываем сборку, плагин должен начать работать.

ИТОГ. Советую Вам учиться пользоваться поисковыми системами. Да что там поисковыми системами. Даже на форуме уже не раз поднимался этот вопрос.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 13.09.2010, 21:05   #11  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Поддержу воспитательную беседу Андрея. На большинстве форумов хамить и "тыкать" - действительно норма, но вы могли заметить, что мы хоть и с маленькой буквы "вы" пишем, но все же придерживаемся некоторых норм приличия. Бизнес решения, как никак, все люди серьезные. Не помню есть ли это в уставе форума, но думаю что уже пора вписать первым пунктом, ибо нельзя не заметить, что хамство прогрессирует...
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Теги
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, время: 15:50.