вторник, 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 г.

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

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