Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
MVP 2010, 2011
- Консалтинг
- Проектирование
- Разработка
- Обучение
MVP 2010, 2011
Фото контакта. Почти поддерживаеммое решение.
Запись от Артем Enot Грунин размещена 12.05.2010 в 14:39
Обновил(-а) Артем Enot Грунин 13.05.2010 в 08:09
Обновил(-а) Артем Enot Грунин 13.05.2010 в 08:09
Теги contact, dom, foto, java script, unsupport
Я думаю многие из нас сталкивались с проблемой вставки картинок на формы объектов. Это может быть логотип организации, фото контакта, или изображение продукта - вариантов множество. В первом приближении решением может выглядеть как попытка вложить фото в примечание, потом скопировать ссылку в специальное URL поле и использовать его как src для IFRAME. Вариант работает, но заказчику такое показывать стыдно. Кто-то решает писать для этого собственные приложения, после чего решает задачи где хранить файл и как бороться с кэшированием. Рассуждения на тему как это можно сделать можно найти на форуме и в интернете. Недавно мне самому пришла в голову мысль попробовать свои силы в решении этой проблемы и я представляю на ваш суд результат.
Форма создания контакта:
Форма обновления без фото:
Форма обновления с фото:
Прикрепленное изображение:
Как это реализовано? в каталог ISV помещается папка с решением. Оно состоит из одной aspx страницы (хотя это голый html) и js файла со скриптами. Страница fotoFrame.aspx предназначена для отображения в элементе IFRAME на форме CRM. Она содержит лишь разметку для будущей картинки и урезанную форму стандартного системного диалога добавления примечаний! Обработчики этой страницы принимают параметры передаваемые формой, чтобы отразить то что нужно там где нужно. При добавлении изображения, страница фиксирует его id на форме обекта (имя поля задается в настройках). После чего при загрузке будет проверять задано ли изображение для данного объекта. Загружаемый файл автоматически снабжается заголовком, чтобы у пользователя не возникло желание его удалить. Впрочем, если такое желание непреодолимо, то ничего страшного не случится: если нужный атачмент не будет найден при загрузке формы идентификатор затрется и будет показана форма по умолчанию.
Развертывание решения:
1. Разместите на форме IFRAME под решение со следующими настройками:
2. Разместите на форме поле для хранения идентификатора фотографии. Для этого можно перепрофилировать какие-то существующие поля или создать новый атрибут.
3. Поместите на событие загрузки формы следующий скрипт:
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
Форма создания контакта:
Форма обновления без фото:
Форма обновления с фото:
Прикрепленное изображение:
Как это реализовано? в каталог ISV помещается папка с решением. Оно состоит из одной aspx страницы (хотя это голый html) и js файла со скриптами. Страница fotoFrame.aspx предназначена для отображения в элементе IFRAME на форме CRM. Она содержит лишь разметку для будущей картинки и урезанную форму стандартного системного диалога добавления примечаний! Обработчики этой страницы принимают параметры передаваемые формой, чтобы отразить то что нужно там где нужно. При добавлении изображения, страница фиксирует его id на форме обекта (имя поля задается в настройках). После чего при загрузке будет проверять задано ли изображение для данного объекта. Загружаемый файл автоматически снабжается заголовком, чтобы у пользователя не возникло желание его удалить. Впрочем, если такое желание непреодолимо, то ничего страшного не случится: если нужный атачмент не будет найден при загрузке формы идентификатор затрется и будет показана форма по умолчанию.
Развертывание решения:
1. Разместите на форме IFRAME под решение со следующими настройками:
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"; }
5. Если на сервер установлен Update Rollup 7 и выше, то решение не будет работать из за описанной в этом посте проблемы. Если вы испытываете затруднения с английским, суть в следующем: разработчики microsoft по неизвестным причинам добавили в диалоги загрузки файлов дополнительные проверки безопасности, но отчего-то забыли исправить SDK (как и ряд собственных страниц) чтобы обеспечить поддержку нововведений. В результате решение не будет работать пока вы вручную не отключите эти проверки: не создадите в реестре DWORD ключ HKLM\SOFTWARE\Microsoft\MSCRM\IgnoreTokenCheck = 1.
6. Опубликуйте изменения формы, перезагрузите IIS и решение должно работать.
В данной реализации не делается проверка на то, что загружаемый файл является изображением!
При удалении старого изображения страница автоматически удалит весь атачмент.
Так как идентификатор изображения хранится на форме, потребуется сохранить контакт после выбора фото.
В зависимости от ваших настроек формы (например макета раздела с IFRAME), может потребоваться дополнительное форматирование элементов страницы. Для удобства внесения изменений их стили заданы через CSS.
ContactFoto.rar
Всего комментариев 2
Комментарии
-
Откликнитесь пожалуйста. Необходимо встроить фото в контакты, но не разберусь как.
Запись от nlweb размещена 29.10.2013 в 08:01 -
Запись от Артем Enot Грунин размещена 02.11.2013 в 13:16