Полезное
Разные интересные примеры и важные решения
Управление видимостью меню (подменю)
Иногда, чтобы отобразить/скрыть левое меню/подменю недостаточно использовать в контроллере привязку к привилегиям.
Когда нужно реализовать свои проверки, например включен ли функционал в настройках системы, можно использовать следующий пример:
Отображение меню Канбан при условии что есть нужные привилегии, а так же в настройках он включен.
Создаем атрибут, где будем проверять, включен ли Канбан в настройках системы:
/// <inheritdoc />
public class KanbanEnabledAttribute : BasePermissionAttribute
{
/// <inheritdoc />
public override bool HasPermission()
{
return Locator.GetServiceNotNull<CRMSettingsModule>().Settings.EnableKanban;
}
}
Далее в котроллере проставляем указанный атрибут:
/// <inheritdoc />
[AnyPermission(CRMPermissionProvider.CRMAccessPermissionId, CRMPermissionProvider.SalesAccessPermissionId)]
[RouteArea(RouteProvider.AreaName)]
public class KanbanController : BPMController
{
/// <summary>
/// Канбан по сделкам
/// </summary>
/// <param name="filterId"></param>
/// <returns></returns>
[KanbanEnabled]
[ContentItem(Name = "SR.M('Канбан')", Image24 = Common.Web.RouteProvider.ImagesFolder + "kanban.svg")]
[FilterMenuItem(Id = CRMMenuItems.Kanban, /*Type = typeof(ICOMonthlyPayment),*/ FilterEditAction = "EditFilters")]
public ActionResult Index(long? filterId = null)
{
// TODO
}
}
После этого меню Канбан отображается не только исходя из прав (привилегий) пользователя, но и в соответствиями с настройками системы.
Точки расширения IMenuItemRenderer и IMenuCustomItems для подменю не работают!
Запросы в БД
Приведем несколько полезных запросов в БД для очистки старых данных и прочих служебных вкусностей. Для примера используется база ELMA (заменить на свое).
Удаление сообщений об ошибках в ленте:
/****** Скрипт для команды SelectTopNRows из среды SSMS ******/
delete
FROM [ELMA].[dbo].[Feed]
where Subject like '%Ошибка в процессе%' or Subject like '%Ошибка выполнения%'
Удаление сообщений об ошибках в архиве ленты:
/****** Скрипт для команды SelectTopNRows из среды SSMS ******/
delete
FROM [ELMA].[dbo].[FeedArchive]
where Subject like '%Ошибка в процессе%' or Subject like '%Ошибка выполнения%'
Удаление записей о выполнении взаимоотношений:
/****** Скрипт для команды SelectTopNRows из среды SSMS ******/
delete
FROM [ELMA].[dbo].[EntityActionHistory]
where [ActionTypeUid] = '786919b5-d160-426a-a578-f74b503cf966'
Удаление записей о выполнении, добавлении комментариев, изменении времени:
/****** Скрипт для команды SelectTopNRows из среды SSMS ******/
delete
FROM [ELMA].[dbo].[EntityActionHistory]
where [ActionTypeUid] = 'fa413130-d92d-41e4-9fba-b133c43fe02a' or [ActionTypeUid] = '3e3e8dd9-b4ea-4ad8-9aa1-19b4fe27ff80' or [ActionTypeUid] = '786919b5-d160-426a-a578-f74b503cf966'
Разработка компонентов и модулей
Утилитка сборки решений для стора
Для автоматизации сборки компонентов для стора можно использовать следующую утилиту (положить, например в каталог Dev):
Для ELMA3 - ITino.ELMA.StoreGenerator3.exe
Для ELMA4 - ITino.ELMA.StoreGenerator4.exe
(Дополнительно ей потребуется библиотека CommandLine.dll)
После этого необходимо в проект серверного модуля добавить два файла: Store.png и Store.xml. Пример последнего:
<?xml version="1.0" encoding="utf-8" ?>
<ElmaComponent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ProductType>Module</ProductType>
<ActivationType>Free</ActivationType>
<Title>IEE BPM | Интеграция с геосервисами и картами</Title>
<Description>
Интеграция с сервисами геокодинга и отображения карт:
• Яндекс.Карты
• Google Maps
• 2ГИС
• Azure Maps
• MapBox
</Description>
<Author>TechSU LLC</Author>
<Site>https://www.randmgroup.ru</Site>
<Dependencies>
<Component Id="EleWise.ELMA.SDK" Version="[4.1.39, 4.2)" />
</Dependencies>
<OrganizationItems>false</OrganizationItems>
<Entities />
<Packages>
<Package>
<Id>GoogleApi</Id>
</Package>
<Package>
<Id>ITino.ELMA.GIS</Id>
</Package>
<Package>
<Id>ITino.ELMA.GIS.Web</Id>
</Package>
</Packages>
</ElmaComponent>
Сделать батник для сборки всего нашего хозяйства:
rmdir /Q /S %~dp0!Store.Release
mkdir %~dp0!Store.Release
rmdir /Q /S %~dp0!Packages
mkdir %~dp0!Packages
# Предваритаельн особрать пакеты нашего решения
..\PackageManager\EleWise.ELMA.Packaging.Console.exe packSln C:\ELMA-Enterprise\Dev\WebApplication\Modules\ITino.ELMA.Release.sln -v 4.1.39.28604 -out !Packages -NoSelfUpdate -NoProjectDependencies -ProjectNames ITino.ELMA.GIS;ITino.ELMA.GIS.Web
# Собрать компоненты для стора
ITino.ELMA.StoreGenerator.exe -s C:\ELMA-Enterprise\Dev\WebApplication\Modules\ITino.ELMA.Release.sln -v 4.1.39.28604 -o !Store.Release -p !Packages -e ..\Packages
# Удалить хлам - утилита сама не может - не дает GC
del /Q /S /F C:\Users\<ПодКемЗашли>\AppData\Local\Temp\*.*
После этого мы должны получить нужный(е) компоненты в каталоге Store.Release.