Записки на лету

Сегодня наконец-то опубликовали мое приложение для Windows 8 «Курсы валют ЦБР»!

Приложение показывает курсы валют ЦБР используя публичные сервисы сайта www.cbr.ru.

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

Скачать можно здесь http://apps.microsoft.com/windows/ru-RU/app/7151d9e1-87a3-4d10-8792-d775eec60a5f

Нашел в сети свежую подборку статей по CRM 2011 и релизу «Полярис» в частности.

Оригинал Weekly News #4: Microsoft Dynamics CRM 2011 UR12 (Polaris) — Coming soon: More than 500 videos about Microsoft Dynamics CRM 2011

Calling Your Dynamics CRM Customers with Skype by Magnestism (22/01/2013)
What’s New in Microsoft Dynamics CRM Polaris Release: The Slides by Jukka Niiranen (21/01/2013)
JavaScript Compatibility Issue With Microsoft Dynamics CRM 2011 by CRM Software Blog (21/01/2013)
What’s New for Developers for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online by MSDN (21/01/2013)
User Interface Changes in Dynamics CRM 2011 by Magnestism (21/01/2013)
Process — Driven UI Explored by Microsoft Dynamics CRM — Tips, Tricks and Add-ons (21/01/2013)
Script Errors after Installing UR12 by Dynamics CRM in the Field (21/01/2013)
Announcing Microsoft Dynamics CRM December 2012 Service Update by CRM Community (21/01/2013)
Administrating Cross-Browser Support by Sonoma Partners (21/01/2013)
CRM 2011 Rollup 12 — No More Freezing PC while Publishing by Magnestism (19/01/2013)
You have deployed Dynamics CRM Online, but how do I deploy Polaris content? by Microsoft CRM Team (19/01/2013)
Summary of newly released YouTube videos on Polaris new functionality by Microsoft by Steve Foster (18/01/2013)
Script Errors After the December 2012 Service Update by Microsoft CRM US (18/01/2013)
Microsoft Dynamics CRM Polaris and UR12 Update by Sonoma Partners (18/01/2013)
Updated CRM 2011 Metadata Browser Released by Sonoma Partners (17/01/2013)
Update Rollup 12 for Microsoft Dynamics CRM 2011 is finally available! by Armanino CRM Team (16/01/2013)
Control Which Browsers Your Organization Supports by Microsoft CRM US (16/01/2013)
11 Microsoft Dynamics CRM December 2012 Service Update Videos by Microsoft Dynamics (16/01/2013)
Update on Microsoft Dynamics CRM 2011 Update Rollup 12 Release by CRM Community (15/01/2013)
Dynamics CRM 2011 SDK Query Limitations by API by Microsoft CRM Team (14/01/2013)
APAC Polaris Online Instance First Glance by Steve Foster (14/01/2013)
New and Improved Metadata Browser for Microsoft Dynamics CRM 2011 by Microsoft CRM US (14/01/2013)
Default Activity ‘Filter on’ to ‘All’ Dynamics CRM 2011 UR12 by Magnestism (12/01/2013)
The Dynamics CRM 2011 Rollup Release Fiasco — Call for Change by Microsoft CRM Forum (11/01/2013)
CRM 2011 Multi Browser Support by MSCRM Bing’d (11/01/2013)
Impact of Dynamics CRM December 2012 Service Update and SharePoint Online Service Update on CRM-SharePoint Integration by Microsoft CRM US (08/01/2013)
Use ExecuteMultiple to Improve Performance for Bulk Data Load by MSDN (08/01/2013)
CRM 2011 Polaris — New Xrm.Page Method by Magnetism (08/01/2013)
Retrieve and Detect Changes to Metadata by MSDN (07/01/2013)
CRM 2011 UR12 (POLARIS) — Release Update by Chris Cognetta (13/12/2012)
December 2012 Service Update — Latest Information by Zero2Ten (11/12/2012)

Вышел накопительный пакет обновлений №12 (KB 2795627) для Microsoft Dynamics CRM 2011.
Скачать можно здесь http://www.microsoft.com/ru-ru/download/details.aspx?id=36229

Правда, он весьма мал, доступны обновления только для клиента Outlook и языковых пакетов.
Где все остальное!?

Где браузерная совместимость, о которой кстати, сказано, что она будет в 12-ом апдейте см. Update Rollup 12 for Microsoft Dynamics CRM 2011 is available.

CRM2011 Browsers Support

По некоторым слухам, 12-й апдейт выйдет 22 января.

Возможно, это они его так неспешно выкладывают. 🙂
Подождем…
Кстати,вместе с пакетом обновился Software Development Kit (SDK) до версии 5.0.13, в котором, кстати, появился Developer Toolkit for Microsoft Dynamics CRM 2011 для VS 2012.

Обновление: Вышел наконец-то сегодня, 21.01.2013, но только для CRM OnLine, см. Announcing Microsoft Dynamics CRM December 2012 Service Update

Также, можно скачать Service Update Release Preview Guide или здесь

В новый год с новыми планами, набираем разработчиков в команду Dynamics CRM.

Кому интересно, пишите мне или откликнитесь на вакансию Стажер-разработчик Microsoft Dynamics CRM.

На днях вышла новая книга Microsoft Dynamics CRM 2011 Application Design, наверное, это первая книга поосвященная целиком разработке  под MS Dynamics CRM 2011.

Автора книги Mahender Pal, знаю по его блогу http://mahenderpal.wordpress.com, похоже, что это его первая книга и я очень надеюсь, что хорошая.

Я ее еще не купил, но планирую. Обязательно напишу пару строк про то, что внутри.

Что такое Solution Packager?

Solution packager это маленькое приложение командной строки, которое позволяет распаковывать и запаковывать zip-архивы решений MS Dynamics CRM 2011. Это приложение не просто распаковывает архив, оно разбивает решение на отдельные файлы для каждой формы, представления, веб-ресурса и т.д. Благодаря этому Solution packager позволяет перейти на новый уровень контроля версий для решений. Раньше было весьма трудно эффективно хранить Решения в системе контроля версий. Обычно все сводилось к тому, что в TFS чекинились архивы решений, что к контролю версий имело мало отношения.

Скачать его можно вместе с пакетом SDK скачать который можно здесь.

Использование Solution Packager

Обязательные параметры:

  • /action: {Extract|Pack} (Распаковать|Запаковать)
  • /zipfile: (Путь к файлу Решения)
  • /folder: {(Путь к папке с распакованным решением)

Для того чтобы распаковать решение c:\Solutions\TestSolution_1_0.zip в папку c:\Solutions\TestSolution_1_0
Полная команда

solutionpackager.exe /action:Extract /zipfile:c:\Solutions\TestSolution_1_0.zip /folder:c:\solutions\TestSolution_1_0

Сокращенная версия

solutionpackager.exe /a:Extract /z:c:\Solutions\TestSolution_1_0.zip /f:c:\solutions\TestSolution_1_0

В результате мы получим папку с довольно большим количеством подпапочек с файлами .xml, которые уже куда удобнее хранить в TFS.

SolPackager

Для того чтобы запаковать решение c:\Solutions\TestSolution_1_0 обратно в пакет c:\Solutions\TestSolution_1_0.zip
Полная команда

solutionpackager.exe /action:Pack /zipfile:c:\Solutions\TestSolution_1_0.zip /folder:c:\solutions\TestSolution_1_0

Сокращенная версия

solutionpackager.exe /a:Pack /z:c:\Solutions\TestSolution_1_0.zip /f:c:\solutions\TestSolution_1_0

Дополнительные параметры

Есть, также, дополнительные параметры (жирным выделены параметры по-умолчанию):

  • /packagetype: {Unmanaged|Managed|Both} (тип решения, пока не очень разобрался зачем);
  • /allowWrite: {Yes|No} (используется только при распаковке и регулирует удаление и перезапись уже существующих файлов в папке для распаковки);
  • /allowDelete: {Yes|No|Prompt} (используется только при распаковке и регулирует удаление лишних файлов в папке для распаковки);
  • /clobber (используется только при распаковке и разрешает удаление и перезапись уже существующих файлов с пометкой «Только для чтения» в папке для распаковки);
  • /map: (путь к файлу .xml с настройками маппинга);
  • /errorlevel: {Off|Error|Warining|Info|Verbose} (уровень логирования);
  • /log: (путь к файлу лога).

Более подробно смотрите документацию CRM 2011 SDK.

Что я успел заметить это то, что Solution packager не работает с русскими символами в путях и, так же, не забывайте заключать путь в кавычки если он имеет пробелы.

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

Итак, чтобы IntelliSence показвал нам функции и методы, предоставляемые нам скриптами CRM необходимо скачать и добавить файл XrmPage-vsdoc.js в проект и затем добавить на него ссылку в необходимый .js файл.

///<reference path="IntelliSense\XrmPage-vsdoc.js"/>

Продолжая эту тему добавляю так же ссылку на проект снипетов для студии CRM 2011 Code Snippets for Visual Studio.

Поменял тему на более соответствующую, Metro Style и все такое.

Хотелось как лучше а получилось сами видите как. 🙂

Со временем все поправлю и настрою, уж не обессудьте.

На днях возникла у меня, казалось бы, простая задача, сделать в отчете ссылки на форму сущности. В JScript это 5 секунд, в плагине сложнее но тоже можно. Где это искать в БД SQL непонятно.

После некоторых поисков и капаний обнаружилось, что есть некий скрытый параметр CRM_URL, который возвращает ссылку вида «http://имя_сервера/имя_организации/CRMReports/viewer/drillopen.aspx«, которая используется для так называемых Drill-Down отчетов.

Что использовать этот параметр надо добавить скрытый текстовый параметр с именем «CRM_URL» в проект отчета и поставить галочку напротив Allow null value.

В дизайнере в режиме Preview, этот параметр все-равно был пустой, но, при выгрузке в CRM он отрабатывал.

Далее дело техники, в моем случае мне надо было вывести древовидную структуру подразделений с ссылками на сами сущности.

Как сделать отчет с древовидной структурой написано здесь.

В отчете в свойствах нужного нам плейсхолдера на закладке General ставим Markup type — HTML, затем на закладке Action ставим Enable as an action: Go to URL.

Далее в поле Select URL: нужно вставить необходимую ссылку. Обычно ссылка выгладит так: «http://имя_сервера/имя_организации/biz/business/edit.aspx?id=%7bGuid_подразделения%7d» но в нашем случае сработает и вот так:  «http://имя_сервера/имя_организации/CRMReports/viewer/drillopen.aspx?LogicalName=businessunit&ID=%7bGuid_подразделения%7d«.

Для этого в поле Select URL: вставляем следующее выражение.

=Parameters!CRM_URL.Value + "?LogicalName=businessunit&amp;ID=" + Fields!businessunitid.Value.ToString()

Вот, собственно, и все.
Файл отчета можно скачать здесь.

Вместо параметра LogicalName можно использовать OTC, где LogicalName это имя схемы а OTC это код сущности. Полный список кодов можно посмотреть здесь http://msdn.microsoft.com/en-us/library/bb887791.aspx

Больше спасибо Андрею за наставление на путь истинный (см. комментарии).

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

Идея проста, написать общий скрипт для запуска диалога/отчета и дальше работать уже с только с CRM 2011 Visual Ribbon Editor, о котором я говорил ранее.

Итак, вот скрипт, в нем две функции, RunDialog() для запуска диалога и RunReport() для запуска отчета.

function RunDialog(dialogId, typeName, recordId) {
 /// <summary>Запускает диалог</summary>
 /// <param name="dialogId" type="String">GUID диалога (без скобок).</param>
 /// <param name="typeName" type="String">Имя сущности.</param>
 /// <param name="recordId" type="String">GUID сущности (без скобок).</param>
 var link = Mscrm.CrmUri.create("/cs/dialog/rundialog.aspx") + "?DialogId={" + dialogId + "}&EntityName=" + typeName + "&ObjectId=" + recordId;
 openStdDlg(link, null, 615, 480, false, false, null);
 window.location.reload(true);
 }
function RunReport(rdlName, reportGuid, entityGuid, entityType) {
 /// <summary>Determines the area of a circle that has the specified radius parameter.</summary>
 /// <param name="rdlName" type="String">Имя .rdl файла с отчетом.</param>
 /// <param name="reportGuid" type="String">GUID отчета (без скобок).</param>
 /// <param name="entityGuid" type="String">GUID сущности (без скобок).</param>
 /// <param name="entityType" type="String">Код сущности (без скобок).</param>
 var link = Mscrm.CrmUri.create("/crmreports/viewer/viewer.aspx") + "?action=run&context=records&helpID=" + rdlName + "&id={" + reportGuid + "}&records={" + entityGuid + "}&recordstype=" + entityType;
 openStdDlg(link, null, 800, 600, true, false, null);
 }

 

Сохраняем скрипт в CRM как веб-ресурс с названием new_ribbon, сохраняем и публикуем.

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

В моем случае мы добавляем кнопку на форму сущности Обращение (Incident).

Теперь запускаем Ribbon Editor и добавляем необходимую нам кнопку.

Переходим в раздел Action и жмем Add… -> JavaScriptFunction для добавления функции:

Вводим Function Name: RunDialog и Library: $webresource:new_ribbon
Теперь напротив только, что добавленной функции еще раз жмем Add… и добавляем следующие параметры:

  1. String Parameter AD119AC4-C589-4746-8AA2-AA74398B6C98
  2. String Parameter incident
  3. Crm Parameter -> FirstPrimaryItemId

Где 1 — Guid диалога, 2 — Имя схемы сущности и 3 — параметр, который является Guid-ом сущности с формы которой мы запускаем диалог.

Теперь жмем Save и, если мы все сделали правильно, наша кнопка будет вызывать диалог.
С отчетами все так же по аналогии.
И, что самое главное, теперь нам не надо никуда добавлять скрипты, на одну организацию достаточно одного скрипта. А это значит, что теперь этим могут заниматься Аналитики/Консультанты. 🙂