[ELMA3] Отображение подробной информации о Контрагенте в стандартном элементе выбора сущности
В системе имеется возможность отображать элементы сущностей в "красивом" виде, используя HTML-разметку. В текущем примере отображается пиктограмма типа сущности, ИНН и КПП для Юридического лица (если они заполнены), а также сокращенно тип организационно-правовой формы.
Так как текущий элемент имеет возможность быстрой фильтрации, поиск контрагентов можно вести не только по названию, вводя часть названия, но и по ИНН и КПП, что позволяет отобразить сокращенный список и выбрать нужную запись, исходя из подробной отображаемой информации.
Пример отображения данных
Пример класса точки расширения
using System.Web.Mvc;
using EleWise.ELMA;
using EleWise.ELMA.BPM.Web.Common.ExtensionPoints;
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.CRM.Models;
using EleWise.ELMA.Model.Entities;
using EleWise.ELMA.Web.Mvc.ExtensionPoints;
using EleWise.ELMA.Web.Mvc.Extensions;
namespace ITino.ELMA.CRM.Web.Components
{
[Component(Order = 100)]
public class ContractorTitleResolver : IEntityTitleResolver
{
public bool CheckType(IEntity entity)
{
return entity as IContractor != null;
}
public MvcHtmlString GetTitle(IEntity entity, UrlHelper helper)
{
var contractor = (IContractor)entity;
var name = contractor.Name;
var extInfo = " ";
if (entity is IContractorLegal)
{
var cl = entity as IContractorLegal;
extInfo = SR.T("ИНН: {0}", string.IsNullOrEmpty(cl.INN) ? SR.T("Отсутствует") : cl.INN);
// Добавить КПП если есть
if (!string.IsNullOrEmpty(cl.KPP))
extInfo += ", " + SR.T("КПП: {0}", cl.KPP);
// Добавить сокращенное наименование ОПФ если есть
if (cl.LegalForm != null)
name += ", " + cl.LegalForm.ShortName;
}
// Сформировать HTML разметку для отображения в элементе выпадающего списка
return MvcHtmlString.Create(string.Format("<div><img src=\"{0}\" align=\"absmiddle\" style=\"padding-right:3px;\"/>{1}</div><div class=\"comment\">{2}</div>", helper.ObjectIcon(ObjectIconFormat.x16, contractor), name, extInfo));
}
}
}
Точка расширения (интерфейс) IEntityTitleResolver имеет два основных метода:
- bool CheckType(IEntity entity) – определяет, какие типы сущностей должны обрабатываться данной точной расширения. В данном примере определяем, поддерживает ли сущность интерфейс IContractor, если нет, то дальнейшее формирование HTML представления не требуется.
- public MvcHtmlString GetTitle(IEntity entity, UrlHelper helper) – формирует нужную HTML-разметку для отображения подробной информации о контрагенте в соответствии с атрибутами конкретной сущности. Для отображения пиктограммы сущности используется метод ObjectIcon.
Для отображения пиктограммы типа сущности, которая устанавливается в свойствах Дополнительно Дизайнера или плагина VS, используется метод помощника UrlHelper – ObjectIcon. Первый параметр (ObjectIconFormat.x16) отвечает за формат отображения пиктограммы, второй – определяет сам объект.