Отображение подробной информации о Контрагенте в стандартном элементе выбора сущности

В системе имеется возможность отображать элементы сущностей в "красивом" виде, используя 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 имеет два основных метода:

  1. bool CheckType(IEntity entity) – определяет, какие типы сущностей должны обрабатываться данной точной расширения. В данном примере определяем, поддерживает ли сущность интерфейс IContractor, если нет, то дальнейшее формирование HTML представления не требуется.
  2. public MvcHtmlString GetTitle(IEntity entity, UrlHelper helper) – формирует нужную HTML-разметку для отображения подробной информации о контрагенте в соответствии с атрибутами конкретной сущности. Для отображения пиктограммы сущности используется метод ObjectIcon.

Для отображения пиктограммы типа сущности, которая устанавливается в свойствах Дополнительно Дизайнера или плагина VS, используется метод помощника UrlHelper – ObjectIcon. Первый параметр (ObjectIconFormat.x16) отвечает за формат отображения пиктограммы, второй – определяет сам объект.

Ссылки на элементы API