🍬 IEE BPM | Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ELMA, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:
β€’ Π Π΅ΠΆΠΈΠΌ тСстирования/обучСния (Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²)
β€’ БобствСнный Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ систСмы Π½Π° страницС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
β€’ Π‘Π°Π½Π½Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² тСстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅
β€’ ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ± профилактичСских Ρ€Π°Π±ΠΎΡ‚Π°Ρ…
β€’ АвтосохранСниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡
β€’ ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊ сСрвСра ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ (устранСниС ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти)
β€’ Много Ρ€Π°Π·Π½Ρ‹Ρ… Ρ…Π΅Π»ΠΏΠ΅Ρ€ΠΎΠ²
β€’ Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² систСмы (Π°Π½Π°Π»ΠΎΠ³ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…)
β€’ Входящая ΠΏΠΎΡ‡Ρ‚Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
β€’ ΠšΠ²ΠΎΡ€ΡƒΠΌ сСрвисы
β€’ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рСдактирования ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ

Настройки

АдминистрированиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ настройки систСмы

Настройки

АвтоматичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² систСмы

Для автоматичСского удалСния старых Π»ΠΎΠ³ΠΎΠ² систСмы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΡ†ΠΈΡŽ Π² настройках:

1. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ мСню АдминистрированиС - Вюнинг систСмы.

image-1625481256235.png

2. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π₯ Π΄Π½Π΅ΠΉ, ΡΡ‚Π°Ρ€ΡˆΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»ΠΎΠ³ΠΈ систСмы Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, Π»ΠΈΠ±ΠΎ 0 для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ автоматичСской очистки.

image-1625481374337.png

Если Π±Ρ‹Π»ΠΎ установлСно количСство Π΄Π½Π΅ΠΉ большС 0, Ρ‚ΠΎ Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ появится Π·Π°Π΄Π°Π½ΠΈΠ΅ Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π»ΠΎΠ³ΠΎΠ² систСмы, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ старыС Π»ΠΎΠ³ΠΈ ΠΈ ΠΏΡ€ΠΈ нСобходимости ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΡ…:

image-1625481558939.png

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ очистки Π±ΡƒΠ΄Π΅Ρ‚ сформирован Π»ΠΎΠ³ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

image-1625481641118.png

Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

namespace ITino.ELMA.Common.Helpers

Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

ModelHelper

/// <summary>
/// ΠŸΡ€ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π»ΠΈ свойство Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
/// </summary>
/// <param name="pm">ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ свойства</param>
/// <returns></returns>
public static bool IsConfigProperty(PropertyMetadata pm)
/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Uid значСния пСрСчислСния
/// </summary>
/// <param name="value">Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСчислСния</param>
/// <returns></returns>
public static Guid GetEnumUid(object value)
/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ описаниС значСния пСрСчислСния
/// </summary>
/// <param name="value">Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСчислСния</param>
/// <returns></returns>
public static string GetEnumDescription(object value)
/// <summary>
/// НазваниС Ρ‚ΠΈΠΏΠ° сущности
/// </summary>
/// <param name="entity">Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ</param>
/// <returns></returns>
public static string GetEntityDisplayName(IEntity entity)
/// <summary>
/// ОписаниС Ρ‚ΠΈΠΏΠ° сущности
/// </summary>
/// <param name="entity">Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ</param>
/// <returns></returns>
public static string GetEntityDescription(IEntity entity)
/// <summary>
/// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта справочника ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости
/// </summary>
/// <param name="uid">Uid элСмСнта справочника</param>
/// <param name="values">ЗначСния свойств</param>
/// <typeparam name="T">Π’ΠΈΠΏ сущности</typeparam>
public static void CheckEntityPresent<T>(Guid uid, object values) where T : IEntity
/// <summary>
/// Π£Π΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт справочника (Ссли Π΅ΡΡ‚ΡŒ)
/// </summary>
/// <param name="uid">Uid элСмСнта справочника</param>
/// <typeparam name="T">Π’ΠΈΠΏ сущности</typeparam>
public static void RemoveEntityIfPresent<T>(Guid uid) where T : IEntity

ELMA4

 /// <summary>
/// ΠžΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
/// </summary>
/// <param name="dateTime"></param>
/// <param name="timeSpan"></param>
/// <returns></returns>
public static DateTime Truncate(this DateTime dateTime, TimeSpan timeSpan)
/// <summary>
/// ΠžΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ миллисСкунды
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime TruncateMs(this DateTime dateTime)
Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

ListenerHelper

/// <summary>ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</summary>
/// <typeparam name="T">Π’ΠΈΠΏ</typeparam>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <returns>Π‘Ρ‚Π°Ρ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</returns>
public static T GetOldValue<T>(PostUpdateEvent @event, string propertyName)
/// <summary>ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</summary>
/// <typeparam name="T">Π’ΠΈΠΏ</typeparam>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <returns>Π‘Ρ‚Π°Ρ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</returns>
public static T GetOldValue<T>(PreUpdateEvent @event, string propertyName)
/// <summary>ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства</summary>
/// <typeparam name="T">Π’ΠΈΠΏ</typeparam>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <returns>Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</returns>
public static T GetValue<T>(PostUpdateEvent @event, string propertyName)
/// <summary>ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойству</summary>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <param name="value">Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</param>
public static void SetValue(PreUpdateEvent @event, string propertyName, object value)
/// <summary>ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства</summary>
/// <typeparam name="T">Π’ΠΈΠΏ</typeparam>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <returns>Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</returns>
public static T GetValue<T>(PostInsertEvent @event, string propertyName)
/// <summary>ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойству</summary>
/// <param name="event">Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅</param>
/// <param name="propertyName">НазваниС свойства</param>
/// <param name="value">Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅</param>
public static void SetValue(PreInsertEvent @event, string propertyName, object value)
Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

ServerHelper

/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ срСднСС врСмя запуска сСрвСра
/// </summary>
public static string AverageStartTime
/// <summary>
/// ВСрсия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² IEE
/// </summary>
public static string IEEVersion
/// <summary>
/// Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‡Ρ‚ΠΎ систСма Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ тСстирования
/// </summary>
public static bool IsTesting
/// <summary>
/// ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСрвСр
/// </summary>
public static void RestartServer()
/// <summary>
/// Π›ΠΎΠ³Π³Π΅Ρ€ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
/// </summary>
public static ILog ImportLogger
/// <summary>
/// Π—Π°ΠΏΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² справочник
/// </summary>
/// <param name="name">Имя справочника</param>
/// <param name="total">ВсСго записСй</param>
/// <param name="new">Новых записСй</param>
/// <param name="update">ОбновлСний</param>
/// <param name="delete">Π£Π΄Π°Π»Π΅Π½ΠΈΠΉ</param>
public static void ImportLogCatalog(string name, int total, int @new = 0, int update = 0, int delete = 0)
/// <summary>
/// Π—Π°ΠΏΠΈΡΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ для справочника ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚
/// </summary>
/// <param name="name">Имя справочника</param>
public static void ImportLogCatalogNone(string name)
/// <summary>
/// ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра
/// </summary>
/// <returns></returns>
public static TimeSpan UpTime
/// <summary>
/// Π›ΠΎΠ³Π³Π΅Ρ€ обновлСния Π‘Π”
/// </summary>
public static ILog DbUpdateLogger
/// <summary>
/// Π›ΠΎΠ³Π΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
/// </summary>
public static ILog ProcessLogger

Β 

Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

UserHelper

/// <summary>
/// БистСмный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ
/// </summary>
public static IUser SystemUser
/// <summary>
/// ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ подсистСмы ΠΎΠ±ΠΌΠ΅Π½Π°
/// </summary>
public static IUser ExchangeUser
/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ нСпосрСдствСнного руководитСля для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
/// </summary>
/// <param name="user">ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ</param>
/// <returns>Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ (Ссли Π΅ΡΡ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ null)</returns>
public static IUser GetImmediateChiefByUser(IUser user)
/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹
/// </summary>
/// <param name="gUidStr">Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Uid Π³Ρ€ΡƒΠΏΠΏΡ‹</param>
/// <returns>Бписок ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ</returns>
public static IEnumerable<IUser> GetUsersInGroup(string gUidStr)
/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всСх Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹
/// </summary>
/// <param name="gUid">Uid Π³Ρ€ΡƒΠΏΠΏΡ‹</param>
/// <returns>Бписок ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ</returns>
public static IEnumerable<IUser> GetUsersInGroup(Guid gUid)
/// <summary>
/// ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»Ρ‹ Π² сокращСнныС
/// </summary>
/// <param name="fullName">ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»Ρ‹</param>
/// <param name="lastNameOrder">Ѐамилия Π² Π½Π°Ρ‡Π°Π»Π΅</param>
/// <returns>Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»Ρ‹</returns>
public static string ConvertToShortName(string fullName, bool lastNameOrder = true)
/// <summary>
/// Π’Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ Администраторы
/// </summary>
/// <returns></returns>
public static bool IsAdmin

Волько ELMA4

/// <summary>
/// ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ push ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
/// </summary>
/// <param name="title">Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ увСдомлСния</param>
/// <param name="message">Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅</param>
/// <param name="clickUrl">Бсылка Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ</param>
/// <param name="tag">Вэг (для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ)</param>
/// <returns></returns>
public static bool WebPush(string message, string title = null, string clickUrl = null, string tag = null)
/// <summary>
/// ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ push ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
/// </summary>
/// <param name="user">ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ</param>
/// <param name="title">Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ увСдомлСния</param>
/// <param name="message">Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅</param>
/// <param name="clickUrl">Бсылка Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ</param>
/// <param name="tag">Вэг (для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ)</param>
/// <returns></returns>
public static bool WebPush(IUser user, string message, string title = null, string clickUrl = null, string tag = null)
Π₯Π΅Π»ΠΏΠ΅Ρ€Ρ‹

WorkflowHelper

/// <summary>
/// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ запускаСмыС процСссы ΠΏΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ сущности
/// </summary>
/// <param name="typeUid">UID Ρ‚ΠΈΠΏΠ° сущности</param>
/// <returns>Бписок процСссов Workflow</returns>
public static IEnumerable<IWorkflowProcess> GetStartableProcessesByInputEntity(Guid typeUid)
/// <summary>
/// ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ для процСссной Π·Π°Π΄Π°Ρ‡ΠΈ
/// </summary>
/// <param name="element">Uid элСмСнта Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° схСмС</param>
/// <param name="task">Π—Π°Π΄Π°Ρ‡Π°</param>
/// <param name="author">Автор коммСнтария</param>
/// <param name="date">Π”Π°Ρ‚Π° коммСнтария</param>
/// <param name="comment">ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ</param>
/// <param name="type">Π’ΠΈΠΏ коммСнтария</param>
public static void CommentForTask(Guid element, ITaskBase task, IUser author, DateTime date, string comment, EOWorkflowTaskCommentType type = EOWorkflowTaskCommentType.Info)
/// <summary>
/// Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠΊΠ°Π·Π°
/// </summary>
/// <param name="message">ВСкст сообщСния</param>
/// <param name="type">Π’ΠΈΠΏ сообщСния</param>
public static void Notify(string message, NotifyType type = NotifyType.Info)
/// <summary>
/// Π£Π±Ρ€Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρƒ Π·Π°Π΄Π°Ρ‡ΠΈ процСсса
/// </summary>
/// <param name="task">Π—Π°Π΄Π°Ρ‡Π° процСсса</param>
/// <param name="uid">Uid Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° схСмС</param>
/// <param name="ignoreUsers">Бписок ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ</param>
public static void RemoveReplacement([NotNull] this ITaskBase task, Guid uid, IEnumerable<IUser> ignoreUsers = null)
/// <summary>
/// Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ процСсс с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ошибки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ
/// </summary>
/// <param name="context"></param>
/// <param name="error"></param>
public static void CompleteWithError(object context, string error)
/// <summary>
/// Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ дСйствиС Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΡ€ΠΈ создании Π·Π°Π΄Π°Ρ‡ΠΈ
/// </summary>
/// <param name="element">Id Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅</param>
/// <param name="task">Бозданная Π·Π°Π΄Π°Ρ‡Π° Π² OnTaskCreate</param>
/// <param name="action">ДСйствиС</param>
public static void ProcessLongAction(Guid element, ITaskBase task, Action<LongActionModel, ISession> action)

МодСли

МодСли

LongActionModel

public class LongActionModel
{
	/// <summary>
  	/// Π›ΠΎΠ³Π³Π΅Ρ€
  	/// </summary>
  	public ILog Logger { get; }

  	/// <summary>
  	/// ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ процСсса
  	/// </summary>
  	public WorkflowInstanceContext Context { get; }

  	/// <summary>
  	/// Начало ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  	/// </summary>
  	public DateTime StartDate { get; }

  	/// <summary>
  	/// ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  	/// </summary>
  	public DateTime? EndDate { get; set; }

  	/// <summary>
  	/// НазваниС дСйствия
  	/// </summary>
  	public string Name { get; set; }

  	/// <summary>
  	/// Π—Π°Π΄Π°Ρ‡Π° бизнСс процСсса
  	/// </summary>
	public IWorkflowTaskBase Task { get; set; }

  	/// <summary>
  	/// Кнопки ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ²
  	/// </summary>
  	public IEnumerable<string> Buttons { get; set; }

  	/// <summary>
  	/// Ошибка выполнСния
  	/// </summary>
  	public string Error { get; set; }

  	/// <summary>
  	/// ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
  	/// </summary>
  	public bool RefreshOnCompleted { get; set; }
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ HTML брэнд шаблона

ELMA4

<div style="font-family: Arial, Helvetica, sans-serif; font-weight: 100;">
	<table style="border-spacing: 0px; border: 0; width: 100%; border-collapse: collapse;">
		<tr style="background: #ffdddd; text-align: right;">
			<td style="width: 1%; padding: 10px;">
				<img src="https://www.elmastore.ru/img/emaillogo.png" width="128"/>
			</td>
			<td style="width: 99%; padding: 15px;  vertical-align: top;">
				<span style="font-size: 2.0em;">НазваниС Π’Π°ΡˆΠ΅ΠΉ систСмы</span>
			</td>
		</tr>
		<tr>
			<td colspan="2" style="background: #6495ed; font-size: 1.2em; padding: 10px;">
				{$Body}
			</td>
		</tr>
		<tr>
			<td colspan="2" style="color: gray; font-size: 0.7em; padding-top: 10px;">
				Π£Π’Π•Π”ΠžΠœΠ›Π•ΠΠ˜Π• О ΠšΠžΠΠ€Π˜Π”Π•ΠΠ¦Π˜ΠΠ›Π¬ΠΠžΠ‘Π’Π˜: Π­Ρ‚ΠΎ элСктронноС сообщСниС ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊ Π½Π΅ΠΌΡƒ, содСрТат ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Настоящим увСдомляСм Вас ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли это сообщСниС Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ Π’Π°ΠΌ, использованиС, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, распространСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, содСрТащСйся Π² настоящСм сообщСнии, Π° Ρ‚Π°ΠΊΠΆΠ΅ осущСствлСниС Π»ΡŽΠ±Ρ‹Ρ… дСйствий Π½Π° основС этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, строго Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. Если Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ это сообщСниС ΠΏΠΎ ошибкС, поТалуйста, сообщитС ΠΎΠ± этом ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŽ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ это сообщСниС.
			</td>
		</tr>
	</table>
</div>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚:

image-1627196011610.png

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования элСмСнтов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

РСализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π·Π°Π΄Π°Ρ‡Π΅

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² систСмС, ΠΊΠΎΠ³Π΄Π° использованиС Π±Π»ΠΎΠΊΠ° "Π‘ΠΊΡ€ΠΈΠΏΡ‚" ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ ΠΈ срыву процСсса, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠŸΡ€ΠΈ этом Π² самой Π·Π°Π΄Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ прогрСсс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ скрыты.

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ context. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ model.Context.

public override void OnTaskCreate(ITaskBase task, P_IA_AandP context)
{
	// 4f55dd98-5242-4633-88e8-4c745551b52c - Id Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ 
	WorkflowHelper.ProcessLongAction(new Guid("4f55dd98-5242-4633-88e8-4c745551b52c"), task, (model, session) =>
	{
		model.Name = "Π‘Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ"; // НазваниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² Π·Π°Π΄Π°Ρ‡Π΅
      
		// Π—Π΄Π΅ΡΡŒ любой ΠΊΠΎΠ΄ для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ
      	var instanceContext = model.Context as P_IA_AandP;
    });
}

Π’ ELMA4 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° сигнатура Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ пСрСдаСтся Ρ‚ΠΈΠΏ контСкста:

public override void OnTaskCreate(ITaskBase task, P_IA_AandP context)
{
	// 4f55dd98-5242-4633-88e8-4c745551b52c - Id Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ 
	WorkflowHelper.ProcessLongAction<P_IA_AandP>(new Guid("4f55dd98-5242-4633-88e8-4c745551b52c"), task, (model, session) =>
	{
		model.Name = "Π‘Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ"; // НазваниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² Π·Π°Π΄Π°Ρ‡Π΅
      
		// Π—Π΄Π΅ΡΡŒ любой ΠΊΠΎΠ΄ для Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ
            
      	var instanceContextVar1 = model.Context.Var1;
    });
}

ПослС окончания Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ контСкст процСсса ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ - это Π±ΡƒΠ΄Π΅Ρ‚ сдСлано автоматичСски, Ссли Π±Ρ‹Π»ΠΈ измСнСния.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈ создании Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ скрыты ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° информация ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со счСтчиком Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. НапримСр:

image-1630422165056.png

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² вновь появятся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ сообщСниС со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

image-1630423575147.png

Если Π² исполняСмом ΠΊΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ появится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Ρ‚Π°ΠΊ ΠΆΠ΅ появятся:

image-1630427822285.png

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅/ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π² процСссных Π·Π°Π΄Π°Ρ‡Π°Ρ…

Начиная с 4.0.28 ΠΈ 3.15.48

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ELMA4 Π 2 Π½Π΅ поддСрТиваСтся

Для скрытия ΠΈΠ»ΠΈ отобраТСния Π² сцСнарии процСсса ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ form.HideConnector:

using ITino.ELMA.Common.Helpers;

/// <summary>
/// Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
/// </summary>
/// <param name="context">ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ процСсса</param>
/// <param name="form"></param>
public virtual void HideOnChange (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
{
  	// Π§Ρ‚ΠΎ Ρ‚ΠΎ мСняСм Π² значСниях контСкста процСсса (для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°)
	context.Two = context.One;
  
	// Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π³Π΄Π΅ Uid ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ процСсса  
	form.HideConnector(new Guid("b29c9cc7-7068-4213-a6e3-987171a702aa"));
}

/// <summary>
/// ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
/// </summary>
/// <param name="context">ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ процСсса</param>
/// <param name="form"></param>
public virtual void ShowOnChange (Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
{
	// ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π³Π΄Π΅ Uid ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ процСсса  
	form.HideConnector(new Guid("b29c9cc7-7068-4213-a6e3-987171a702aa"), false);
}

ВсС ΠΊΠ½ΠΎΠΏΠΊΠΈ доступныС ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ:

image-1639307960009.png

И для ELMA4:

image-1639308155429.png

ПослС выполнСния скрипта, Ссли Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ скрытый ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Ρ‚ΠΎ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ мСню ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Π‘Π΄Π΅Π»Π°Π½ΠΎ, Ρ‚.ΠΊ. Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ динамичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄:

image-1639308073033.png

И для ELMA4:image-1639308216480.png

ΠšΠ²ΠΎΡ€ΡƒΠΌ сСрвисы

РаспрСдСлСнныС отказоустойчивыС сСрвисы Π² кластСрС ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ систСмы

ΠšΠ²ΠΎΡ€ΡƒΠΌ сСрвисы

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

Доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ

Бтатус установлСнных ΠΊΠ²ΠΎΡ€ΡƒΠΌ сСрвисов кластСра отобраТаСтся ΠΏΠΎ ссылкС АдминистрированиС - БистСма - ΠšΠ²ΠΎΡ€ΡƒΠΌ сСрвисы:

image-1635059448252.png

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ²ΠΎΡ€ΡƒΠΌ сСрвисами Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ссылкС Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ - Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ½ΠΎΠ³ΠΎ сСрвиса.

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹

CounterManager

public class CounterManager : EntityManager<ICOCounter, long>
{
    /// <summary>
    /// instance
    /// </summary>
    public new static CounterManager Instance => Locator.GetServiceNotNull<CounterManager>();

    /// <summary>
    /// Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ
    /// </summary>
    /// <param name="uid">Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ счСтчика</param>
    /// <param name="name">НазваниС</param>
    /// <param name="mask">Маска Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ string.Format</param>
    /// <returns></returns>
    public ICOCounter LoadOrCreate(Guid uid, string name = null, string mask = null);

    /// <summary>
    /// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ максС
    /// </summary>
    /// <param name="counter">Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ</param>
    /// <param name="save">Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π±Π°Π·Π΅</param>
    /// <param name="checkYear">Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ для Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°</param>
    /// <param name="args">Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡˆΡƒΠΌΠ΅Ρ‚Ρ‹ для маски</param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    public string FormatNewValue(ICOCounter counter, bool save = true, bool checkYear = false, params object[] args);

    /// <summary>
    /// ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    /// </summary>
    /// <param name="counter">Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊ</param>
    /// <param name="save">Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π±Π°Π·Π΅</param>
    /// <param name="checkYear">Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ для Π½ΠΎΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°</param>
    /// <returns></returns>
    /// <exception cref="ArgumentException"></exception>
    [Transaction]
    public virtual long GetNewId(ICOCounter counter, bool save = true, bool checkYear = false);
}

Β