# Полезное # Управление видимостью меню (подменю) Иногда, чтобы отобразить/скрыть левое меню/подменю недостаточно использовать в контроллере привязку к привилегиям. Когда нужно реализовать свои проверки, например включен ли функционал в настройках системы, можно использовать следующий пример:

Отображение меню Канбан при условии что есть нужные привилегии, а так же в настройках он включен.

Создаем атрибут, где будем проверять, включен ли Канбан в настройках системы: ```C# /// public class KanbanEnabledAttribute : BasePermissionAttribute { /// public override bool HasPermission() { return Locator.GetServiceNotNull().Settings.EnableKanban; } } ``` Далее в котроллере проставляем указанный атрибут: ```C# /// [AnyPermission(CRMPermissionProvider.CRMAccessPermissionId, CRMPermissionProvider.SalesAccessPermissionId)] [RouteArea(RouteProvider.AreaName)] public class KanbanController : BPMController { /// /// Канбан по сделкам /// /// /// [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** (заменить на свое). Удаление сообщений об ошибках в ленте: ```SQL /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ delete FROM [ELMA].[dbo].[Feed] where Subject like '%Ошибка в процессе%' or Subject like '%Ошибка выполнения%' ``` Удаление сообщений об ошибках в архиве ленты: ```SQL /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ delete FROM [ELMA].[dbo].[FeedArchive] where Subject like '%Ошибка в процессе%' or Subject like '%Ошибка выполнения%' ``` Удаление записей о выполнении взаимоотношений: ```SQL /****** Скрипт для команды SelectTopNRows из среды SSMS ******/ delete FROM [ELMA].[dbo].[EntityActionHistory] where [ActionTypeUid] = '786919b5-d160-426a-a578-f74b503cf966' ``` Удаление записей о выполнении, добавлении комментариев, изменении времени: ```SQL /****** Скрипт для команды 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](https://kb.randmgroup.ru/attachments/7) Для ELMA4 - [ITino.ELMA.StoreGenerator4.exe](https://kb.randmgroup.ru/attachments/4) (Дополнительно ей потребуется библиотека [CommandLine.dll](https://kb.randmgroup.ru/attachments/5)) После этого необходимо в проект серверного модуля добавить два файла: Store.png и Store.xml. Пример последнего: ```xml Module Free IEE BPM | Интеграция с геосервисами и картами Интеграция с сервисами геокодинга и отображения карт: • Яндекс.Карты • Google Maps • 2ГИС • Azure Maps • MapBox TechSU LLC https://www.randmgroup.ru false GoogleApi ITino.ELMA.GIS ITino.ELMA.GIS.Web ``` Сделать батник для сборки всего нашего хозяйства: ```powershell 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.