Расширенная функциональность
10
Май
13

CRM 2011 или найди 10 отличий… Платформа, эпизод II

Решения (Solution)

Решения в CRM Microsoft Dynamics 2011 является новым способом хранения настроек и совместного их использования с другими пользователями. Решения являются своего рода пакетами, для хранения какого-либо обособленного функциона. Думайте о них как о приложениях, которые Вы можете установить в CRM.

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

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

  • Объекты;
  • Наборы парметров;
  • Веб-ресурсы;
  • Процессы;
  • Плагины (отдельно сами сборики и шаги для них; Чтобы импортировать Решение содержащие плагины, у Вас должны быть полномочия системного адмимнистратора и «Deployment Manager»);
  • Конечные точки сервиса;
  • Панели мониторинга;
  • Отчеты;
  • Роли подключения;
  • Шаблоны (статей, контрактов, электропочты, слияния почты);
  • Проли безопасности;
  • Профили безопасности.


В Решения можно доблять либо существующие компоненты CRM, либо специально создавать для них новые (либо через визуальный интерфейс, либо через API). У каждого Решения может быть номер версии, взаимосвязь с объектами и другими компонентами и настройками безопасности, основанными на пользовательских Ролях.

Существуют три вида Решений:

  • Дефолтное
    Дейфолтное Решение это полная аналогия кастомизации CRM 4.0. Добраться в него Вы можете по стандартномо адресу: Параметры — Настройка — Настройкить систему;
  • Неуправляемые (Unmanaged Solutions)
    Изнчально каждое Решение, которое Вы создаете, Неуправляемо (Unmanaged). Неуправляемые решения это так сказать «исходник» Вашего приложения (в виде Решения), над которым работают Ваши разработчики. Пока оно находится в неуправляемом состоянии, Вы можете произвольно добавлять в него новые компоненты, изменять и удалять их.Более того, пока Решение неуправляемо, Вы можете назначать для его компонентов ограничения, которые позволять в будущем, когда оно станет Управляемым, органичить (или полностью запретить) его модификацию.Вы можете даже определить некоторые ограничения, чтобы понизить развитие Вашего Решения, установив некоторые компоненты как не настраиваемые.Неуправляемое Решение может быть создано/отредактировано/удалено отлько с соответствующими привелегиями (вкладка Настройка в диалоговом окне редактирования Роли).Если Вы удаляете неуправляемое Решение, Вы только удаляете группу, используемую, чтобы содержать ссылки на компоненты Решения. При этом сами компоненты удаленного неуправляемого Решения будут продолжать оставаться в системе.

    Если Вы удалите компонент в неуправляемом Решении (вместо его исключения из Решения), то оно будет удалено из всей системы и не больше доступно из любого другого неуправляемого Решения.

  • Управляемые (Managed Solutions)
    Если неуправляемые Решения являются своего рода «исходниками» Вашего «приложения» (упакованного в виде Решения), то управляемые Решениях это их «скомпилированная» версия.Чтобы Решение стало управляемым, то нужно взять неуправляемое Решение и экспортировать его из системы. При этом Вам будет предложено сделать управляемым.После того как управляемое Решение будет установелено в целевой системе, пользователи смогут его редактировать только в тех рамках, какие были заданы пока Решение было неуправляемым.Как было уже сказано, когда Решение установлено как управляемое, вступают в силу ограничения, установленные разработчиками (для каждого компонента есть свой перечень ограничений). И вносить модификацию можно только в явно разрешенные компоненты Решения.Управляемые Решения установливаются сверху системного Решения так, чтобы они могли изменить любые настраиваемые компоненты или добавить новые.
    При этом если конечный Пользователь внесет изменения в Решение, то система запомнит эти изменения как «верхние» настройки. И если в последующем, Вам предется накатывать новую версию того же Решения, то система предложит либо сохранить эти настройки, либо затереть их теми, что заданы в новой версии Решения.

    После того, как Вы создадите управляемое Решение, Вы не сможете установить его в той же самой организации, которая содержит неуправляемое Решение, использованное для его создания.

    После того, как Вы установите управляемое Решение:

    • Вы не сможете добавить или удалить компоненты в управляемое Решение;
    • Вы не сможете экспортировать управляемое Решение;
    • Удаление управляемого Решения удалит все компоненты входящие в него.

Следующие схемы представляют, как управляемые и неуправляемые Решения взаимодействуют с системным Решением и управляют поведением приложения.

Обработка конфликтов в Решениях

При попытки импортировать множество Решений в одну организацию между ними могут произвойти конфликты. Вот как они разрешаются:

  • Слияние
    Компоненты пользовательского интерфейса (Лента, формы, и карта сайта) объединяются. Это означает, что компоненты Решения пересчитываются с самого низкого уровня до самого высокого так, чтобы неуправляемые настройки были последним, которые будут применены.
  • Последние побеждают
    Для всех других компонентов Решения любой конфликт разрешен в пользу настройки, которая применена последней. Для управляемых Решений это обычно означает, что будет применено последнее установленное Решение. Однако, есть особый случай, когда обновление к управляемому решению установлено.


Иерархия решений

Решения могут быть многоуровневыми – это позволяет создавать приложения из блоков Решений: некоторые разработаны своими силами, некоторые предоставленны третьими разработчиками. Или например, можно создать базовое Решение и дополнять его модулями (другими Решениями), а вместе эти Решения будут представлять полностью законченное приложение. При этом имейте ввиду:

  • СRM будет обрабатывать различные слои Решений, установленные в системе, для того чтобы вычислить итоговые настройки системы. Например, если различные Решения среди своих компонентов содержат кастомизацию Ленты, то их настройки автоматически «сольются» в итоговую ленту.
  • Если же в настройках различных Решений используется одни и те же атрибуты, то порядок, в котором происходит добавление Решений в систему, имеет значение.


Разрешение конфликтов при обновлении управляемого Решения

Поскольку неуправляемые настройки рассматриваются «выше» любого управляемого Решения, с точки зрения разрешения конфликтов, организации, устанавливающие обновление для управляемого Решения, возможно, не увидят своих изменений из-за неуправляемых модификаций.

Поэтому, чтобы удостовериться, что изменения, доступные при обновлении управляемого Решения будут применены, система при их устанавки предложит Вам на выбор две опции:

  • Сохранить любые настройки;
  • Перезаписать любые настройки.

Отслеживание зависимостей

Система автоматически отслеживает зависимости Решений для гарантирования их целостности. Эта проверка происходит в двух местах:

  • Ручной: для этого Вам необходимо задействовать инструмент, к которому Вы можете добраться либо через Представление Решений, либо на через его форму. Он расположен на панели инстурментов и называется «Показать зависимости». Запустив его Вы увидите зависимые и требуемые компоненты для выбранного Решения;
  • Автоматический:
    • Eсли Вы попытаетсь добавить какой-нибудь существующий компонент к Решению, то система автоматом отследит зависимости этого компонента и предложить добавить их в Решение (если найдет их), чтобы после инсталяции в целевую системы не выяснилось, что чего то не хватает;
    • Удаление какого-либо компонента будет предотвращено, если другой компонент в системе будет зависеть от него;
    • При экспорте Решения система предупредит пользователя, если в нем не будут какого-либо недостающего компонента, который мог бы потенциально вызвать ошибку при импорте в целевую систему;
    • Импорт решения закончится неудачей, если все необходимые компоненты не будут включены в Решение или не будут существовать в целевой системе.

Примечания:

  • Коллизии пространств имен исключаются путем задания для управляемых Решений Издателя, каждый из которых имеет уникальное пространство имен. Это позволяет избегать проблемы, когда одно пространство имен (по дефолту «new_») используется для всех кастомных объектов и их полей;
  • Бизнес-процессы, как Вы знаете, принадлежат конкретному Пользователю CRM-системы и могут выполняеться в его контексте. Если Бизнес-процесс входит в состав Решения, то после инсталирования такого Решения в целевую систему, владельцем этого Бизнес-процесса по умолчанию будет тот пользователь, который производил импорт решения;
  • Вы можете добавлять существующие компоненты к неуправляемым решениям (например, объект Контакта). Но важно заметить, что, когда Вы это делаете, это не создает копию ппежнего компонента, а просто добавляет в Решение ссылку на этот компонент. Если у Вас есть 2 неуправляемых Решения в каждое из которых добавлен объект Контакт, изменение Контакта в Решении A приведет к точно таким же изменениям Контакта в Решении B. Если Вы работаете над 2 различными Решениями в пределах одной организации, это может стать проблемой. Чтобы избежать этого, попробуйте работать над одним неуправляемым Решением за раз, или попытаться избежать использования одного и того же объекта в многих неуправляемых Решениях;
  • Решения свободно переносятся через все типы развертывания CRM (Онлайн, хостируемые, локальные развертывания) и всех клиентов CRM (Online, Outlook, Mobile).

Пример

Итак, попробуем создать новое Решение. И для начала нам понадобится Издатель – человек или организация, от имени которого Решение будет существоватья во «внешнем» (по отношении к разработчику Решения) мире.

  • Перейдите Параметры — Настройка — Издатели — Создать;
  • Задайте следующие параметры Издателя:
    • Отображаемое имя;
    • Имя;
    • Префикс;
    • Префикс значения парметра.
  • Сохраните и закройте карточку Издателя.


Собственно Решение…

  • Перейдиет Параметры — Решения – Создать;
  • Задайте для Решения такие параметры:
    • Отображаемое имя;
    • Имя;
    • Издатель;
    • Версия (в формате x.x.x.x).
  • После это на левой навигационной панели формы Решения Вы увидите доступными разделы кмпонентов Решения, которые Вы можете к нему добавить;
  • Создайте, например, в Решениия (и для Решения) новый объект;
  • Далее Вам нужно задать ограничения для Вашего Решения. Причем для каждого компонента Решения. При этом у разных компонентов Вы можете задать различные граничения. Например выделите созданный объекта в решении и нажмите Управляемые свойства – откроется диалоговое окно, в котором Вы можете ограничить действия конечных пользователей при кастомизации этого компонента. Более того Вы можете перейти к отдельным полям этого объекта и такми же образом (через меню Другие действия) задать для них индивидуальные ограничения;
  • После этого на панели инструментов формы Решения щелкните Экспорт решения – откроется диалоговое окно Экспорт решения, в котором Вам нужно пройти несколько шагов:
    • Публикация настроек: тут Вам будет предложена последняя возможность опубликовать все настрйоки – не опубликованные настройки не буду выгружены в Решение, даже если они в нем используются;
    • Экспорт системных параметров – тут Вам нужно определить, что из системных парметров (помимо того, что явно указано среди компонентов Решения) Вы хотите выгрузить;
    • Самый ответственный шаг – определить, каким будет Решение после выгрузки: управляемым или не управляемым;
    • Ну, и последний шаг – определить, куда Вы хотите сохранить архив с решением на жестком диске 🙂

После этого можете инсталлировать Решение в целевую систему. Для этого используется диалога импорта: Параметры — Решения – кнопка Импорт.




Marketplace

Решения будут играть ключевую роль в Microsoft CRM App Store. Уже сейчас Вы можете покупать и продавать их через Dynamics Marketplace. Marketplace поможет посетителям находить необходимые им приложения и службы для расширения своих CRM, а партнеры могут здесь демонстрировать и продавать свои Решения. При этом в качестве издателя на Marketplace будет указан тот, которого Вы зададите в своем Решении перед экспортом.

Вы можете посетить из Dynamics CRM Marketplace прямо изнутри CRM 2011, щелкнув по кнопке Получить решения из Marketplace на панели инструментов в разделе Параметры — Настройка — Решения.

Отслеживать созданные и выложенные на Marketplace Решения можно также через карточку Издателя или самого Решения. Для этого на их форме предусмотрен iFrame, который отображает страницу Marketplace’а с опубликованным Решением (или Решениями, если речь идет о карточке Издателя).


Установка минимальной версии среды выполнения для Ваших решений

Если Вы имеете решение для CRM и хотите гарантировать, что развертывание в которое оно устанвливается, минимально необходимую версию, то Вам нужно вручную отредактировать файл solution.xml (который находится в .zip пакете, сгенерированным CRM) и в нем задать атрибут minimumversion для тега ImportExportXml:

<ImportExportXml version=»5.0.9668.0″ minimumversion=»5.0.9665.15″ languagecode=»1033″ generatedBy=»OnPremise»>

В этом примере импорт Решения свалится, если целевая среда имеет номер среды выполнения меньше чем 5.0.9665.15.

Для чего это может понадобиться? Например, Ваше Решение зависит от определенного ролапа, в котором добавлена новая функциональность или исправлена какая-либо ошибка.


Подразделения

Переименование головного подразделения

Теперь возможно! 🙂


Удаление Подразделений

В CRM 4.0 Вы могли только деактивировать Подразделения, а CRM 2011 позволяет полностью удалять Подразделения (Business Units). Но учтите, что прежде, чем удалить Пдразделение, Вы должны:

  • Отключить Бизнес-единицу;
  • Переместить его дочерние Подразделения, Рабочие группы и Пользователей в другие Подразделения.


Бизнес-процессы

В CRM 2011 Вы можете запускать Бизнес-процессы (и Диалоговые окна) для Подразделений. В предыдущих версиях CRM Вы не могли этого делать.


Поля

Ntext

Поля с типом ntext в MS SQL не имеют пределела длинны. Эти поля хрятся в отдельной структуре данных, поэтому, они не ограничены нормальным пределом размера строки в 8060 байтов. В CRM 4.0, однако, было ограничение в 4 000 символов для этих полей (по 2 байта на один символ Unicode).

В 2011 CRM это ограничение было «почти» снято. «Почти» потому что теперь Вы можете хранить в этих полях 100 000 символов.


Валюта

Точность Валют

Настройка десятичных чисел для полей притерпела некоторые изменения в CRM 2011. Теперь десятичная точность может быть установлена на трех разных уровнях:

  • Системном – эта настройка позволяет Вам устанавить точность Валюты, используемую для задания цен в рамках всей системы.
    Настройка осуществляется по следующему адресу: Парамеры – Администрирование – вкладка Общие сведения – глака Число десятичных знаков в ценах;
  • Валюты – позволяет устанавливать десятичную точность отдельно для каждой Валюты. Данная настройка производится на карточке соответствующей Валюты. Эта функция будет полезна для настройки Валют, не имеющиех десятичных чисел (например, таких как Японская Йена или Корейская Вона). Точность может быть установлена как для базовой, так и для дополнительных Валют;
  • Поля — позволяет задавать точность для любого денежного поля системы. Задается на форме настройки соответствующего поля. При этом Вы можете использовать для этого параметра «Системные» и «Валютные» значения. Т.е. в этом случае точность денежного поля будет определятся либо глобальной настрокой, либо настройкой выбранной в поле Валюты.


Кастомные Валюты

Другое улучшение в Валютах состоит в том, что CRM 2011 позволяет добавлять кастомные Валюты. Раньше Вы могли выбрать Валюту только из захардкоденного .Net’овского списка. Теперь же Вы можете создать Валюту с любым названием.

Чтобы добавить кастомную Валюту, иницируйте создание новой записи Валюты и выберите Тип валюты = Настраиваемый. Поле чего сможете ввести любое название Валюты.


Отрицательные числа

Для числовых (в том числе и Сумм) полей теперь можно задавать отрицательные значения. Для этого при создании числового атрибута ввести в поле Минисальное значение отрицательно число.

Не обошло стороной данное нововведение и стандартные объекты: в Возможных сделках/Предложениях/Заказах/Счетах тоже поддерживаются отрицательные числа и суммы. Этого недоставало, когда нужно было сделать запись о возврате товаров или запись о кредите.

Примечание: Вы не можете одновременно установить отрицательными и Цену и Количество когда создаете «Продукт для …».


Отладочная информация

Загрузить файл журнала

Загрузить файл журнала – это замечательная кнопочка, которая теперь имеется на алертах, сообщающих об ошибках. По ее нажати вы увидите (после сохранения и открытия его в текстовом редакторе) полное XML-сообщение об ошибке. Например такой:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #751ACE7BDetail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220970</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #751ACE7B</Message>
  <Timestamp>2011-05-09T00:21:26.8672109Z</Timestamp>
  <InnerFault>
    <ErrorCode>-2147187627</ErrorCode>
    <ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
    <Message>The selected workflow has errors and cannot be published. Please open the workflow, remove the errors and try again.</Message>
    <Timestamp>2011-05-09T00:21:26.8672109Z</Timestamp>
    <InnerFault i:nil="true" />
    <TraceText i:nil="true" />
  </InnerFault>
  <TraceText i:nil="true" />
</OrganizationServiceFault>


Security Exception

В CRM 4.0 были некоторые трудности при идентификации недостающих полномочий, когда система падала с ошибкой. Чтобы разобраться в чем дело, необходимо было писать запросы в БД, использовать сторонние утилиты и т.д. Например:

  • Когда Вы пытаетесь выполнить действие, на которое влияет ограничение безопасности другого пользователя:
    SecLib::AccessCheckEx failed. Returned hr = -2147187962, ObjectID: 1ef9f412-6601-dd11-8655-0019b9dfe618, OwningUser: 98bbc999-96a2-de11-aeaf-0019b9dfe227 and CallingUser: 037c1c90-96a2-de11-aeaf-0019b9dfe227
  • Когда Вы пытаетесь выполнить действие, на которое у Вас фактически нет полномочий:
    CrmSecurityException: SecLib::CrmCheckPrivilege failed. Returned hr = -2147220960 on UserId: 60826d61-2be1-db11-821c-000423b79351 and PrivilegeId: 588725dd-c878-41c5-a4c3-5efc93cd3ffd

В CRM 2011 эти сообщения об ошибках были немного улучшены:

  • Когда Вы пытаетесь выполнить действие, на которое влияет ограничение безопасности другого пользователя:
    SecLib::CrmCheckPrivilege failed. Returned hr = -2147220943 on UserId: 9d67828d-a13e-e011-af72-0800273a66a6 and PrivilegeType: Read

    Как видите, в сообщении выведен один идентификатор пользователя– того кто фактически вызвал исключение, и имя (вместо идентификатора) недостоющего полномочия.

  • Когда Вы пытаетесь выполнить действие, на которое у Вас фактически нет полномочий:
    Principal user (Id=9d67828d-a13e-e011-af72-0800273a66a6, type=8) is missing prvDeleteAccount privilege (Id=ca6c7690-c935-46b3-bfd2-abb306c2acc0)

    И снова мы видим вменяемое название недостающего полномоия 🙂

SiteMap

Публикация

SiteMap постигла участь большенства объектов CRM – его немножко «стандартизовали» 🙂 В частности, теперь после импорта SiteMap’а или вынесения ссылки на объект в SiteMap через форму настройки этого самого объекта, его необходимо публиковать 🙂


Экспорт SiteMap’а

Изначально в CRM 2011 Вы сожете найти SiteMap только в дейолтном Решении: Прааметры – Настройки – Натроить систему – Расширения клиента. Но Вы не сможете просто так ее обособленно выгруить. У Вас есть только возможность выгрузить все дефолтное Решение целиком. Что не очень удобно, т.к. придется открывать в текстовом редакторе большой и запутанный XML-файл кастомизации.

Но есть простой выход из ситуации – создать отдельное Решение и обавиь в него только SiteMap. И экспортировать его, чтобы иметь возможность отредвактировать. При этом нужно выбирать опция выгрузки неуправляемого Решения!



Управляемое Решение

Как Вы уже знаете в CRM 2011 сильно изменился слой кастомизации, в который добавилась поддержка Решений. Эти же изменения коснулись и SiteMap’а. Причем между управляемым Решением и остальной кастомизацией (дефолтной и неуправляемыми Решениями) есть серьезные отличия. SiteMap в дефолтном Решении или в каком либо неупраовляемом Решении, содержит все описание SiteMap’а существующегго в системе. SiteMap добавленный в управляемое Решение «содержит» разность между кастомизированым SiteMap’ом и основой, на которой сделана настройка. И эта разность применяется к целефой системе, в которую устанавливается управляемое Решение.

SiteMap в дефолтном или неуправляемом Решении определяетяс схемой SiteMap в управляемом Решении соответствует схеме <CRM Server InstallDir>\Server\ApplicationFiles\SiteMapType.xsd, SiteMap управляемого Решения определяется схемой <CRM Server InstallDir>\Server\ApplicationFiles\SiteMapTypeManaged.xsd.

Если Вы сравните SiteMapTypeManaged.xsd и SiteMapType.xsd, то заметите, что в управляемой версии есть дополнительный атрибут (и это основное отличие), который назвается solutionaction и имеет следующие допустимые значения:

<xs:simpleType name="solutionactionType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="Added" />
        <xs:enumeration value="Removed" />
        <xs:enumeration value="Modified" />
    </xs:restriction>
</xs:simpleType>

«Added» используется, чтобы указать, что этот элемент (и все его дочерние элементы) добавляются в кастомизацию. «Removed» используется, чтобы указать, что этот элемент (и все его дочерние элементы) удаляются из кастомизации. И «Modified» означает, что некоторый аспект этого элемента (не рассматривающий его дочерние элементы) изменен в кастомизации. Если на элемент не будет влиять кастомизация, то solutionaction атрибут не будет задействован в его xml-определении узла.

З.Ы. Все то же самое касается и кастомизации форм CRM, только схемы их определены в FormXmlManaged.xsd к FormXml.xsd

Пример

Произведем некоторые изменения в SiteMap’е в узле SiteMap -> Area (Id = «Workplace») -> Group (Id = «MyWork»):

  • Измените атрибут Icon для SubArea nav_dashboards с «/_imgs/area/18_home.gif» на «/_imgs/data_management.gif»;
  • Добавьте новый узел <SubArea Id=»link» Title=»link» />;
  • Удалите узел <SubArea Id=»nav_calendar» …>.

И если Вы включите SiteMap в управляемое Решение, то его XML определение в файле кастомизации будет выглядеть примерно так:

<SiteMap>
  <Area Id="Workplace" ResourceId="Area_Workplace" ShowGroups="true" Icon="/_imgs/workplace_24x24.gif" DescriptionResourceId="Workplace_Description" ordinalvalue="0">
    <Group Id="MyWork" ResourceId="Group_MyWork" DescriptionResourceId="My_Work_Description" ordinalvalue="0">
      <SubArea Id="nav_dashboards" ResourceId="Homepage_Dashboards" Icon="/_imgs/data_management.gif" DescriptionResourceId="Dashboards_Description" Url="/workplace/home_dashboards.aspx" GetStartedPanePath="Dashboards_Web_User_Visor.html" GetStartedPanePathAdmin="Dashboards_Web_Admin_Visor.html" GetStartedPanePathOutlook="Dashboards_Outlook_User_Visor.html" GetStartedPanePathAdminOutlook="Dashboards_Outlook_Admin_Visor.html" ordinalvalue="0" solutionaction="Modified" />
      <SubArea Id="nav_activities" Entity="activitypointer" DescriptionResourceId="Activities_SubArea_Description" Url="/_root/homepage.aspx?etc=4200" GetStartedPanePath="Activities_Web_User_Visor.html" GetStartedPanePathAdmin="Activities_Web_Admin_Visor.html" GetStartedPanePathOutlook="Activities_Outlook_User_Visor.html" GetStartedPanePathAdminOutlook="Activities_Outlook_Admin_Visor.html" ordinalvalue="2" />
      <SubArea Id="nav_calendar" Icon="/_imgs/area/18_calendar.gif" ResourceId="Homepage_Calendar" Url="/workplace/home_calendar.aspx" Client="Web" ordinalvalue="2" solutionaction="Removed" />
      <SubArea Id="link" Title="link" ordinalvalue="1" solutionaction="Added" />
    </Group>
  </Area>
</SiteMap>

Как можете видеть:

  • У узла nav_dashboards solutionaction = «Modified»;
  • У узла nav_calendar solutionaction = «Removed»;
  • У узла link solutionaction = «Added»;
  • У узла nav_activities нет атрибута solutionaction.



Трассировка ошибок

Если в импортируемом SiteMap’е содержится ошибки, то логах трассировки (http://support.microsoft.com/kb/907490) Вы сможете найти очень подробное сообщение о причине очбки и о том где она находится:

Crm Exception: Message: The import file is invalid. XSD validation failed with the following error: «=’ is an unexpected token. The expected token is ‘;’. Line 74, position 74.’.

<SubArea Id=»new_vendorsx» Url=»/main.aspx?etn=account&pagetype <<<<<ERROR LOCATION>>>>> =entitylist&viewid=%7b2C598CB7-2E3F-DE11-8035-0050569A36D3%7d&viewtype=1039″>

В данном случае необходимо было «закодировать» для XML символ амперсанда.



Редакции

Редакций серверов стало на треть меньше 🙂 Теперь их всего две:

  • Microsoft Dynamics CRM Server 2011 (без ограничений на количество юзверов; может иметь множество организаций);
  • Microsoft Dynamics CRM Workgroup Server 2011 (максимум 5 пользователей; только одна организация).

Логин и пароль от почты по https

В CRM 4.0 в настройках каждый пользователь мог задать логин и напроль от своей почты. Большинствой из Вас если попробуют это сделать в CRM 2011 обнаружат, что галка «открывающая» поля ввода логина и пароля задизейблена. А все потому что она теперь по умолчанию отображается только если Вы используете протокол HTTPS. Чтоб вернуть старое поведение Вам нужно добавить в реестр DWORD-ключ DisableSecureDecryptionKey со значением 1 по такому пути:

HKLM\Software\Microsoft\MSCRM\

… и перезапустите CRM (откройте и закройте браузер) 🙂


Комментарии (13)
  • Alex_Spb 10.05.2011

    Картинки в статье не отображаются
    у них стоит URL http://localhost/wp-content/uploads/crm2011p2/

  • slivka_83 10.05.2011

    Спасибо, подправил 🙂

  • Alex_Spb 10.05.2011

    нашел несколько грамматических ошибок:
    Конченые точки сервиса;
    …Вы можете назначать для его компоненто ограничения, которые позволять в будущем…
    …неупровляемое решение ..
    … системным Решением и муправлять поведением приложения..
    При попытки импортировать множество Решений в одну организацию, то между ними могут произвойти конфликты…
    Удаление каког-либо компонента …
    Если Бизнес-процесс входит в состав Решения, то после инсталирование такого решения ..
    В этом примере импорт Решения свлится…

  • Александр 10.05.2011

    Alex_Spb, не удивительно, когда человек работает, помимо этого успевает вести кучу блогов, добавлять информацию на этот сайт и ещё на форумах отвечать, не удивительно что попадаются ошибки. Вы бы успевали все ошибки подчищать?! 🙂

  • Alex_Spb 10.05.2011

    Александр,
    я просто констатировал факт без всякой эмоциональной оценки типа удивления и т.п.
    относится к этому можно по разному, я, например, считаю, что тем самым помог ему указав на ошибки,
    которые он не успел подчистить.
    Если автор считает, что это ни к чему, думаю
    он, как модератор, сможет просто удалить мое сообщение.

  • slivka_83 10.05.2011

    Подправмл 🙂 Спасибо 🙂

  • AlexBL 10.05.2011

    Как вижу первая часть статьи это переведённый и дополненный материал из SDK?
    Не подскажите, пожалуйста, где можно почитать как при добавлении плагинов также добавить и шаги? Спасибо!

  • slivka_83 10.05.2011

    Да, и из SDK что-то было…
    Ну, что-то тут можно почитать: http://mmcrm.ru/?p=977

  • AlexBL 10.05.2011

    Спасибо за ссылку, внимательно изучил. Я наверное не совсем точно выразился. Написал плагин, добавил шаги, всё работает. Проблема вот в чём: при экспорте нового Solution включаю в него тот работающий плагин из организации contoso1. Публикую этот Solution в contoso2 — плагин появляется, а шаг нет (проверял через Plugin Reg Tool).
    Возможно ли как-либо при переносе решения на другую организацию включить и шаги? Спасибо!

  • slivka_83 10.05.2011

    Я сам еще с плагинами crm 2011 не разбирался, но вроде в Решение плагины и их шаги включаются поотдельности. Т.е. плагин Вы включили в Решение, а его шаги (Шаги обработки сообщений SDK)? 🙂

  • Макс 10.05.2011

    Добрый день, а вы не встречали решения для SiteMap — кастомизация SiteMap только для определённых пользователей?

  • slivka_83 10.05.2011

    Добрый день.

    Я правильно понимаю, что Вам нужно отображать некоторые разделы SiteMap только для определенных пользователей?
    Если так, то для этого можно испрользовать тэг Privilege в SiteMap’е: http://mmcrm.ru/?p=1828

  • Макс 10.05.2011

    Да, именно это и нужно было, спасибо огромное!) Отличное решение =)

*

code