AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Фото контакта. Почти поддерживаеммое решение.

Запись от Артем Enot Грунин размещена 12.05.2010 в 14:39
Обновил(-а) Артем Enot Грунин 13.05.2010 в 08:09

Я думаю многие из нас сталкивались с проблемой вставки картинок на формы объектов. Это может быть логотип организации, фото контакта, или изображение продукта - вариантов множество. В первом приближении решением может выглядеть как попытка вложить фото в примечание, потом скопировать ссылку в специальное URL поле и использовать его как src для IFRAME. Вариант работает, но заказчику такое показывать стыдно. Кто-то решает писать для этого собственные приложения, после чего решает задачи где хранить файл и как бороться с кэшированием. Рассуждения на тему как это можно сделать можно найти на форуме и в интернете. Недавно мне самому пришла в голову мысль попробовать свои силы в решении этой проблемы и я представляю на ваш суд результат.
Форма создания контакта:

Нажмите на изображение для увеличения
Название: create.jpg
Просмотров: 1386
Размер:	71.0 Кб
ID:	63

Форма обновления без фото:

Нажмите на изображение для увеличения
Название: nofoto.jpg
Просмотров: 1478
Размер:	79.5 Кб
ID:	64

Форма обновления с фото:

Нажмите на изображение для увеличения
Название: update.jpg
Просмотров: 1323
Размер:	89.3 Кб
ID:	65

Прикрепленное изображение:

Нажмите на изображение для увеличения
Название: fotoattach.jpg
Просмотров: 1481
Размер:	72.4 Кб
ID:	66

Как это реализовано? в каталог ISV помещается папка с решением. Оно состоит из одной aspx страницы (хотя это голый html) и js файла со скриптами. Страница fotoFrame.aspx предназначена для отображения в элементе IFRAME на форме CRM. Она содержит лишь разметку для будущей картинки и урезанную форму стандартного системного диалога добавления примечаний! Обработчики этой страницы принимают параметры передаваемые формой, чтобы отразить то что нужно там где нужно. При добавлении изображения, страница фиксирует его id на форме обекта (имя поля задается в настройках). После чего при загрузке будет проверять задано ли изображение для данного объекта. Загружаемый файл автоматически снабжается заголовком, чтобы у пользователя не возникло желание его удалить. Впрочем, если такое желание непреодолимо, то ничего страшного не случится: если нужный атачмент не будет найден при загрузке формы идентификатор затрется и будет показана форма по умолчанию.
Развертывание решения:
1. Разместите на форме IFRAME под решение со следующими настройками:

Название: frame.jpg
Просмотров: 1386

Размер: 79.6 Кб

2. Разместите на форме поле для хранения идентификатора фотографии. Для этого можно перепрофилировать какие-то существующие поля или создать новый атрибут.
3. Поместите на событие загрузки формы следующий скрипт:
Код:
// Прячем служебное поле в идентификатором фотографии
var fofoidfieldname = "<Имя служебного поля из пункта 2>";
smHide(fofoidfieldname );

function smHide(oElementID)
{
    var oControl = document.all(oElementID);
    var oControl_c = document.all(oElementID + "_c");
    var oControl_d = document.all(oElementID + "_d");
        
    if (oControl != null) oControl.style.display = "none";
    if (oControl_c != null) oControl_c.style.display = "none";
    if (oControl_d != null) oControl_d.style.display = "none";
}
4. Поместите каталог ContactFoto из архива в папку ISV. Откройте fotoFrame.aspx в любом редакторе и найдите определение константы fotoFieldId. Измените ее аналогично п.3 на имя служебного поля. Вы так же можете изменить значения всех прочих констант на странице для удовлетворения своих нужд.
5. Если на сервер установлен Update Rollup 7 и выше, то решение не будет работать из за описанной в этом посте проблемы. Если вы испытываете затруднения с английским, суть в следующем: разработчики microsoft по неизвестным причинам добавили в диалоги загрузки файлов дополнительные проверки безопасности, но отчего-то забыли исправить SDK (как и ряд собственных страниц) чтобы обеспечить поддержку нововведений. В результате решение не будет работать пока вы вручную не отключите эти проверки: не создадите в реестре DWORD ключ HKLM\SOFTWARE\Microsoft\MSCRM\IgnoreTokenCheck = 1.
6. Опубликуйте изменения формы, перезагрузите IIS и решение должно работать.

В данной реализации не делается проверка на то, что загружаемый файл является изображением!
При удалении старого изображения страница автоматически удалит весь атачмент.
Так как идентификатор изображения хранится на форме, потребуется сохранить контакт после выбора фото.
В зависимости от ваших настроек формы (например макета раздела с IFRAME), может потребоваться дополнительное форматирование элементов страницы. Для удобства внесения изменений их стили заданы через CSS.

ContactFoto.rar
Размещено в CRM
Просмотров 67174 Комментарии 2
Всего комментариев 2

Комментарии

  1. Старый комментарий
    Откликнитесь пожалуйста. Необходимо встроить фото в контакты, но не разберусь как.
    Запись от nlweb размещена 29.10.2013 в 08:01 nlweb is offline
  2. Старый комментарий
    Аватар для Артем Enot Грунин
    Доброго времени суток. Это решение было написано еще под версию 4.0, уверен что оно вам не подходит. В интернет есть множество аналогов, которые вы без труда найдете
    Запись от Артем Enot Грунин размещена 02.11.2013 в 13:16 Артем Enot Грунин is offline
 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:11.