четверг, 26 августа 2010 г.

Счетчик записей для Microsoft Dynamics CRM 4.0: версия 2.1

Я публиковал счётчик записей в начале этого года - http://crmmagic.blogspot.com/2010/02/record-counter-for-microsoft-dynamics.html.

Пользователи, которые устанавливали его себе сообщили мне о возникающих ошибках. Теперь эти ошибки исправлены и Вы можете скачать последнюю версию счётчика здесь:


Также я добавил возможность контролировать вид строки итога. Это делается при регистрации плагина в плагинрегистраторе:

Execute step:


RetrieveMultiple step:

вторник, 13 июля 2010 г.

воскресенье, 20 июня 2010 г.

Расширенная обработка OnSave для форм в которых есть диалоги закрытия

Все разработчики кто занимался скриптами для CRM читал эту статью. Но в этой статье нет ни слова о том, как можно доступиться к данным из полей диалога закрытия (например в Возможной сделке. Я провёл небольшое исследованиями и пришёл к таким результатам:

пятница, 18 июня 2010 г.

Интеграция Google Maps v.3 в Microsoft Dynamics CRM 4.0

В этом посте я опишу как можно интегрировать Google Maps v.3 в Microsoft Dynamics CRM 4.0 используя IFrame.

среда, 16 июня 2010 г.

Форматирование даты и времени в бизнес процессах в Microsoft Dynamics CRM 4.0

В процессе работы с бизнес процессами CRM выяснилась одна интересная особенность - никоим образом отформатировать поле даты/времени при вставке в текстовое поле нельзя. Результат можно посмотреть на скриншоте:


воскресенье, 13 июня 2010 г.

Изменение отображения по умолчанию в сервисном календаре Microsoft Dynamics CRM 4.0

Один из моих клиентов сделать так, чтобы в сервисном календаре Microsoft Dynamics CRM 4.0 открывалось отображение 'Facility/Equipment'. Я не смог найти ни одного поддерживаемого способа сделать это, посему я решил применить неподдерживаемый способ - вставка JavaScript в страницу сервисного календаря.

пятница, 28 мая 2010 г.

Как отобразить данные полученные из Microsoft Dynamics CRM 4.0 в GridView на кастомной ASP.Net странице

Я видел эту статью одного из моих колег Hassan Hussain. Я решил прибегнуть к другому подходу для отображения данных в GridView - вместо BusinessEntitiesCollection я использовал Fetch.

вторник, 20 апреля 2010 г.

Использование маппинга атрибутов сущностей из JavaScript

Я - активный участник нескольких форумов посвящённых Microsoft Dynamics CRM. На этих форумах видел немало вопросов про маппинг - что это такое и как он работает. Особенность маппинга - что он срабатывает только раз - в момент, когда выполняется создание дочерней карточки из родительской. Если же в дочерней карточке обновить поле-лукап, ссылающееся на родительскую карточку - ничего не произойдёт. Я решил исправит данную ситуацию при помощи следующего скрипта:

вторник, 13 апреля 2010 г.

Отчёт использования CRM пользователями системы

Один из моих клиентов пожелал иметь возможность просматривать лог работы пользователей в CRM. Я знал, что MVP Дэвид Дженнавей (David Jennaway) создал такое решение основываясь на логах IIS. Но как я не бился - у меня не получилось заставить IIS записывать лог в базу. Также данный подход не будет работать в сценарие IFD, так как данная схема аутентификации (на уровне форм) не позволит нам отличить одного пользователя от другого.

понедельник, 29 марта 2010 г.

Изменение порта, на котором работает Reporting Services

У одного из моих клиентов возникла следующая проблема
SQL сервер и Microsoft CRM были установлены на один сервер. CRM был развёрнут на порту 5555. Потом на этот же сервер был установлен Апач на порт по умолчанию (80).

воскресенье, 21 февраля 2010 г.

Счетчик записей для Microsoft Dynamics CRM 4.0

Я разработал новую версию счётчика записей. Теперь счётчик работает не только в основных отображениях, но и в ассоциированных.

суббота, 20 февраля 2010 г.

Становлюсь независимым консультантом

5 марта станет последним мои рабочим днём в компании, где я работаю на данный момент. С уходом из компании я становлюсь независимым консультантом.

Если Вам необходимо установить/обновить/доработать Microsoft CRM - обращайтесь по почте, ICQ, MSN или Skype.

Мой опыт Microsoft Dynamics CRM:
- подготовка ИТ-инфраструктуры компании для разворачивания;
- установка и администрирование;
- импорт данных из других систем;
- настройка и разработка (настройка сущностей, разработка скриптов, настройка бизнес-правил, разработка плагинов и custom workflow activities, разработка отчётов).

воскресенье, 14 февраля 2010 г.

TechDays: Первый доклад

Начал выкладывать свои доклады по разработке под Microsoft Dynamics CRM 4.0. И параллельно буду складывать ссылки здесь под тегом доклады на Techdays.



PS - Никогда не мог подумать, что у меня такой препротивный голос =)

четверг, 11 февраля 2010 г.

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

Все данные, которые вы вводите при закрытии возможной сделки хранятся в отдельном объекте и недоступны из бизнес процесса. Я попытаюсь исправить это.

вторник, 26 января 2010 г.

Пришёл MVP Award Pack

Вот что в нём оказалось:

понедельник, 25 января 2010 г.

Трудности перевода или опять про локализацию

У моего клиента возникла проблема с русскоязычной локализацией Microsoft Dymanics CRM при наполнении документов, а именно - отображение документов выглядит примерно таким образом:



Казалось бы при чём тут заголовок документа и Должность... Но видимо тем, кто переводил - виднее. Задался вопросом как переименовать это поле, но наткнулся на ряд проблем:
1. У клиента развёрнут только один язык (русский), а следовательно добраться до значения того поля через Параметры-Импортировать метки для трансляции - не является возможным.
2. Сущность Документ (salesliteratureitem) является некастомизируемой и потому её нельзя даже выгрузить в виде файлов кастомизации, чтобы отредактировав xml файла кастомизации, импортировав обратно в CRM и опубликовав - получить требуемый результат (как делалось уже не раз с другими сущностями).

Отсюда вывод, что необходимо редактировать непосредственно место, где данные метки хранятся.

Всем метки перевода (как опубликованные так и нет) лежат в таблице MetadataSchema.LocalizedLabel.

При помощи следующего запроса я получил идентификатор метки:

Select 
LocalizedLabelId
From
MetadataSchema.LocalizedLabel Where
ObjectId =
(Select AttributeId From MetadataSchema.Attribute
Where
EntityId = (Select EntityId From MetadataSchema.Entity Where LogicalName = 'salesliteratureitem')
And name = 'title')
And ObjectColumnName = 'DisplayName'
And LanguageId = 1049


После чего прямым обновлением я установил значение на то, на которое хотел поменять:

Update 
MetadataSchema.LocalizedLabel
Set Label = 'Заголовок'
Where LocalizedLabelId = '90D8A218-2341-1049-898A-0007E9E17EBD'


После этого выполнил iisreset и получил требуемый результат:



Помните, что данная кастомизация является неподдерживаемой, так что бэкапируйтесь перед подобными манипуляциями.

пятница, 22 января 2010 г.

Обёртка для работы с 1С на .Net

Была найдена в интернете следующая ссылочка - http://umsoft.ru/news.aspx?ID=10. Со странички можно скачать обёртки на .Net для работы с объектами 1С. Думаю, что данная обёрка упростит разработчикам организацию взаимодействия и обмена данных между своими приложениями и 1С.

среда, 20 января 2010 г.

Кастомизация которая позволяет поле описания сделать обязательным для заполнения в диалоге закрытия возможной сделки

Это неподдерживаемая кастомизация, так что будьте аккуратны при её выполнении.

Откройте каталог с сайтом в котором развёрнут CRM. Откройте подкаталог SFA\opps. Откройте файл dlg_closeopp.aspx file при помощи notepad или другого текстового редактора и найдите в нём следующую функцию:

четверг, 7 января 2010 г.

Установка описания аттрибута в качестве всплывающей подсказки в Microsoft Dynamics CRM 4.0

Чтобы сделать это возможным просто необходимо следующий код поместить в обработчик onLoad формы любой сущности:

SetTooltips = function()
{
var request = "" +
"<?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>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"RetrieveEntityRequest\">" +
" <RetrieveAsIfPublished>true</RetrieveAsIfPublished>" +
" <EntityItems>IncludeAttributes</EntityItems>" +
" <LogicalName>" + crmForm.ObjectTypeName + "</LogicalName>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>";

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

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

var result = xmlHttpRequest.responseXML;


for(var i = 0; i < crmForm.all.length; i++)
if(crmForm.all[i].title != null && crmForm.all[i].title != 'undefined')
{
var fieldName = crmForm.all[i].id;

var desc = result.selectSingleNode("//EntityMetadata/Attributes/Attribute[LogicalName='" + fieldName + "']/Description/UserLocLabel/Label");
try
{
if(desc != null)
{
crmForm.all[fieldName + '_c'].title = desc.nodeTypedValue;
crmForm.all[fieldName + '_d'].title = desc.nodeTypedValue;
}
}
catch(e) {}
}
}

SetTooltips();


И собственно скриншот, который показывает результат работы данного скрипта:

вторник, 5 января 2010 г.

Обработка Rollup сообщения плагинами в Microsoft Dynamics CRM 4.0

Как известно, сообщение Rollup отсутствует в списке поддерживаемых сообщений в SDK. Приведённый далее приём позволит разработчикам обрабатывать данное сообщение своими плагинами.

пятница, 1 января 2010 г.

Плагин для копирования примечаний и файлов из интереса в контакт/компанию при конвертации интереса

Мне дали задание написать плагин, который при конвертации интереса в контакт все файлы-вложения и примечания скопирует в полученный контакт. Далее код плагина, который выполняет это: