Список критичных изменений системы версий 3.10.х
Список исправлений к версии 3.10.22
При создании документа (объекта, процесса) с обязательным полем «Вложение», текст загрузчика файла в вебе будет помечен стандартным жирным выделением и красной звёздочкой.
PublicAPI
Список исправлений к версии 3.10.21
Подключение через прокси сервер
Исправлена ошибка с подключением дизайнера под прокси: добавлена возможность переключать поведение 100-Continue при передаче заголовков на сервер:
При настройках по умолчанию флаг необходимо оставить снятым, подключение будет установлено успешно.
Список исправлений к версии 3.10.20
Нет критичных изменений.
Список исправлений к версии 3.10.19
Дизайнер
В дизайнере добавлена возможность редактировать часть метаданных базовой расширяемой системной сущности. На данным момент для редактирования открыто поле скрипта автозаполнения (если оно было заполнено ранее). Данных механизм распространяется только на расширяемые системные сущности, на объекты созданные в дизайнере – нет.
Изменен шаблон периодического события
Добавлена вкладка со списком всех экземпляров данного события.
Изменён функционал тулбара.
Список исправлений к версии 3.10.18
PublicAPI
Список исправлений к версии 3.10.17
PublicAPI
Добавлен метод вычисления прав на редактирование документа PublicAPI/REST/EleWise.ELMA.Documents/Document/{DOCUMENTID}/CanEditDocument
Процессы Workflow, Дизайнер
Реализовано исправление поведения (со старого на новое) опции «Нельзя переназначать» через параметр совместимости.
В старом поведении опция "Нельзя переназначать" в пользовательской задаче может влиять на автоматическое замещение. Например, во включенном состоянии она может запретить замещение. Такое поведение нелогично с точки зрения правил новой реализации замещений, но его необходимо поддерживать для обеспечения работоспособности уже существующих процессов. Правила новой реализации замещений:
- Опция «Нельзя переназначать» только запрещает или разрешает переназначать задачи с веб-страницы.
- Опция «Запретить замещение» в настройках зоны ответственности запрещает или разрешает замещение исполнителя.
- Опции полностью изолированы друг от друга, эффект от переключения одной не влияет на функционирование другой.
Было:
Опция "Нельзя переназначать" в пользовательской задаче может влиять на автоматическое замещение.
Например, пользователь замещается (через замещения), у участников нет привилегий на переназначение задач, установленных на уровне процесса. При выполнении процесса задача не уходит на сотрудника-заместителя, если в настройках пользовательской задачи стоит галочка «Нельзя переназначать». Если галочка отсутствует, то процесс отрабатывает как нужно.
Пользоваться опцией становится сложнее, так как она даёт побочные эффекты, которые необходимо учитывать в процессах.
Стало:
Параметр совместимости определяет, допускать ли влияние функции «Нельзя переназначать» на замещения. Он определён для каждой версии процесса на вкладке «Настройка» в сворачиваемой панели «Параметры совместимости»:
Установленное состояние означает функционирование старого поведения (см. пункт «Было»). У всех существующих процессов данный параметр автоматически установлен. Таким образом все существующие процессы продолжат работать как прежде.
Если возникнет необходимость перейти к новому поведению функции, то необходимо снять галочку и подтвердить переход к новому поведению. Внимание! Отключение необратимо, обратно включить уже будет невозможно. Поэтому при переходе потребуется проверить процесс на предмет использования опции «Нельзя переназначать» для запрета замещения и исправить все подобные места (запретом замещения управляет опция зоны ответственности).
У вновь созданных процессов данный параметр будет сразу отключен, т.е. в этих процессах влияние опции «Нельзя переназначать» на замещения будет исключено с самого начала.
Ограничение на выбор показателя
Создано ограничение на выбор показателя в сборе данных из задач. Если пользователь добавил показатель, то под периодом должна отображаться периодичность выбранного показателя. При добавлении последующих показателей вводится ограничение на периодичность, т.е. можно выбрать показатель только с периодичностью ранее выбранного показателя.
Список исправлений к версии 3.10.16
Точки расширения
В BaseDocumentFromElementResolver добавлен метод с двумя параметрами:
public virtual FormView GetView(IWorkflowInstance instance, Element element)
Старый метод отмечен как устаревший: FormView GetView(Element element).
Список исправлений к версии 3.10.15
API кода и публичных классов
Метод EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager.IsActiveForPublish(IProjectPlanItem planItem) устарел и вскоре будет удален в следующих версиях, следует использовать EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)
Метод EleWise.ELMA.Projects.Managers.ProjectTaskManager.IsActiveForPublish(IProjectPlanItem planItem) устарел и вскоре будет удален в следующих версиях, следует использовать EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)
JQuery
В библиотеке jquery.maskedinput-1.3.js в функции mask() добавлена возможность в маске указывать русские буквы, используя спец символ «r». Пример: $(’#nomber’).mask(’rr 999’)
Дизайнер
В редакторе типов документов и проектов убрана вкладка «Фильтр». Так же на вкладке «Дополнительно» убраны блоки «Настройки фильтра» и «Программные настройки».
Так же блоки «Настройки фильтра» и «Программные настройки» были убраны из визардов создания типов документов и проектов
Список исправлений к версии 3.10.14
API Кода. Публичные методы и интерфейсы
Адреса
Интерфейс точки расширения EleWise.ELMA.CRM.Components.IAddressProvider для реализации работы с адресами различных стран отмечен устаревшим, вместо него нужно использовать EleWise.ELMA.CRM.ExtensionPoints.IAddressProvider, EleWise.ELMA.CRM.Web.Extensions.IAddressProviderWeb и EleWise.ELMA.CRM.Web.Extensions.IAddressBaseSettings.
Классы EleWise.ELMA.CRM.Web.Models.AddrBaseCrm, EleWise.ELMA.CRM.RU.Web.Models.AddrBaseCrm отмечены устаревшими.
Переработаны представления, отвечающие за ввод адресов.
Изменение механизмов экспорта-импорта
- В хелпере EleWise.ELMA.Deploy.Import.Helpers. MetadataImportHelper:
- изменен метод ValidateEntityTableName: добавлен необязательный параметр string messageAdditionalInfo = null
- изменен метод ValidateTableName: добавлен необязательный параметр string messageAdditionalInfo = null
Пользовательский интерфейс
Календарь
В календаре добавлено выделение событий, требующих подтверждение:
Кроме выделения цветом в «тултип» было добавлено соответствующее сообщение.
PublicAPI
Раздел Docflow:
PublicAPI.Docflow.Objects.DmsObject.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Document.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.WebDocumentReport.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.BudgetExpense.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.Contract.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.Deed.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.File.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.ContractOutgoing.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.ContractIncoming.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.DisagreementsProtocol.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.ContractAttachment.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.AdditionalAgreement.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Types.BudgetIncome.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Objects.Folders.ActionFolder.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
PublicAPI.Docflow.Objects.Folders.FilterDocumentFolder.Filter() - есть изменения в фильтре:
Virtual(Boolean virtual) - Добавлен
Список исправлений к версии 3.10.13
Пользовательский интерфейс
1. Была убрана лишняя полоска в разметке на форме отчета по сделкам
2. При появлении серого блокера и блока «Пожалуйста подождите…», убирается фокус с активного элемента. При скрытии серого блокера фокус возвращается.
Безопасность, Процессы WorkFlow, Слой Платформа
При блокировке ответственного за экземпляр с таймером, когда пользователь был заблокирован до истечения таймера, приводил к ситуации, когда таймер было невозможно прервать, а текст ошибки просмотреть.
Также была изменена видимость одного пункта меню таймера. Пункт "Изменить запланированное время" отображается, когда таймер ещё не истёк. Когда таймер находится в состоянии ошибки, данный пункт уже не появляется.
Было:
Текст ошибки не отображался, а сам таймер прервать не удавалось.
Стало:
Таймер стало возможным прервать, когда был назначен новый ответственный за экземпляр, либо был разблокирован старый владелец экземпляра. Ошибка стала отображаться.
Настройка ограничений размера в свойствах
- Изменена логика настройки ограничений в свойствах. Если в свойстве установлен флаг "Может иметь пустое значение" и указано минимальное и максимальное значение свойства, при не заполненном свойстве проверка на мин/макс не делается.
- Для всех числовых типов если флаг "Может иметь пустое значение" НЕ установлен, незаполненное свойство автоматически заполняется значением "0".
- Для дробных чисел добавлено ограничение по точности, т.е. позволяется вводить столько знаков после запятой, сколько указано в настройках свойства.
Редактирование бизнес-процессов
Добавлена возможность сохранять изменения, сделанные в редакторе бизнес-процесса, при закрытии дизайнера (кроме вкладки «Регламент»)
При появлении окна пользователю на выбор предлагается три варианта: сохранить изменения во всех БП, которые он редактировал, продолжить изменения, а также выйти из дизайнера без сохранения изменений. Дерево кликабельное – при двойном нажатии можно попасть в тот БП, который был отредактирован.
PublicAPI
Изменений нет
Список исправлений к версии 3.10.12
API методов и интерфейсов
Изменение OracleTransformationProvider
- Свойство Connection класса EleWise.ELMA.Extensions.Oracle.OracleTransformationProvider вместо connection провайдера оракла возвращает EleWise.ELMA.Runtime.Db.Proxies.DbConnectionProxy.
- В классе EleWise.ELMA.Reports.Managers. ReportDataSourceSqlQueryManager убраны методы:
Изменение менеджера выполнения sql-запросов отчетов
- public virtual void SetParamValue(IDbCommand cmd, string name, object val)
- public virtual void SetInt32(IDbCommand cmd, string name, int val)
- public virtual void SetInt64(IDbCommand cmd, string name, long val)
- public virtual void SetInt16(IDbCommand cmd, string name, Int16 val)
- public virtual void SetByte(IDbCommand cmd, string name, byte val)
- public virtual void SetFloat(IDbCommand cmd, string name, float val)
- public virtual void SetDouble(IDbCommand cmd, string name, double val)
- public virtual void SetGuid(IDbCommand cmd, string name, Guid val)
- public virtual void SetString(IDbCommand cmd, string name, string val)
- public virtual void SetDecimal(IDbCommand cmd, string name, decimal val)
- public virtual void SetDateTime(IDbCommand cmd, string name, DateTime val)
- public virtual void SetImage(IDbCommand cmd, string name, byte[] val)
- public static void AddParameter(IDbCommand cmd, string name, object val)
Пользовательский интерфейс
Процессы Workflow
- Описание задачи «Настройка маршрута согласования» вынесено на форму задачи в веб часть
Изменения в Возможностях
Кнопка запуска процесса из раздела и карточки возможности перенесена из основного меню в подменю «Выбранные».
Теперь из числа процессов, у которых есть входная переменная типа «Возможность», в списке на запуск отображаются только те, которые добавлены в маршруты справочника «Возможность»
PublicAPI
Изменений нет
Список исправлений к версии 3.10.11
API Кода. Публичные методы и интерфейсы
Округление чисел с использование сценариев
При наличии сценария при изменении значения для целых и дробных чисел, если ввести значение в поле с большей точностью, чем указано в настройках свойства (ввести дробное значение для целого числа), то в сценарий придет уже округленное значение согласно настроек.
Оповещения
Добавление возможности шаблонизации имени автора в теле письма.
Для этого необходимо в шаблоне добавить тэг <Author></Author>. Данный тэг позволяет при необходимости переопределить создателя оповещения, которое отображается в теле письма (см. рисунок ниже).
Пример шаблона, позволяющий «обернуть» автора сообщения в некоторую функцию AALocalizeUser для вывода локализованного имени автора (данная функция используется только для примера), приведен ниже:
<?xml version="1.0" encoding="utf-8"?> <Notifications description="Оповещения по документу" version="3.9.0.29000"> <Default> <Filter> <Event>IEntityActionHandler.ActionExecuted</Event> <Object>EleWise.ELMA.Documents.Models.Document</Object> </Filter> <RecipientSet> <User>{$WatchList}</User> </RecipientSet> <URL> /Documents/Document/View/{$New.Id} </URL> <ObjectId>{$New.Id}</ObjectId> <Author> {AALocalizeUser({$Author})} </Author> </Default> </Notifications>
Локализация
Добавлена возможность слияния ресурсов, выгруженных из дизайнера.
При выгрузке ресурсов из дизайнера в указанный каталог выполняется слияние выгружаемых ресурсов с уже существующими в указанном каталоге. По окончании слияния в целевом каталоге создается доп. папка Logs с логом результатов слияния.
Пользовательский интерфейс
Отображение дублей для возможностей
Добавлен постраничный вывод для дублей возможностей
Работа с клиентами
- Добавлено оповещение для информируемых и участников работы при создании возможности
- Добавлено оповещение для ответственного при создании сделки
Уведомление участникам о создании периодического события
В отправленном в ленту сообщении о создании периодического события теперь корректная ссылка на шаблон события
Документооборот
Скрыта кнопка «Скопировать» для типов документов
Дизайнер, Модель данных, Процессы Workflow
Сделана проверка введённых пользователем имён классов и таблиц в БД на форме создания нового процесса в дизайнере. Вводимые в эти поля идентификаторы должны начинаться с латинской буквы, далее могут использоваться цифры, латинские буквы или знаки подчёркивания "_". Дополнительно, для имён классов запрещено использование ключевых слов языка C#, а для имён таблиц БД - ключевых слов языка запросов используемой СУБД.
Было:
При создании процесса в имени класса и имени таблицы в БД различных структур процесса можно было указать любые символы, и кириллицу в том числе. Проверки на корректность и сообщения об ошибке не выводилось, а сам процесс сохранялся. Однако такой процесс потом не публиковался, а имя класса в дизайнере поменять уже было нельзя.
Стало:
Сделана проверка введённых пользователем имён классов и таблиц в БД на форме создания нового процесса в дизайнере с выводом сообщений об ошибках.
Web, пользовательский интерфейс
Для документов, имеющих более одного маршрута регистрации, в окне отправки на регистрацию добавлена ссылка на отправляемый документ.
Генератор MS Word документов
- Реализована вставка текста в списки без создания дополнительных нумерованных пунктов, но с сохранением форматирования;
- Реализована вставка многострочного текста в циклах.
PublicAPI
Раздел Portal:
PublicAPI.Portal.Objects.Common.LastObjectInfo.Filter() - есть изменения в фильтре:
UniqueObjects(Nullable<Boolean> uniqueObjects) - Добавлен
Список исправлений к версии 3.10.10
API Кода. Публичные методы и интерфейсы
Представления для типов Email и Телефон
Добавлены представления для отображения отдельных Email и Телефона (не списком). Переработаны представления для отображения списков Email и Телефонов.
Представление Site.cshtml
Представление DisplayTemplates/Site.cshtml было удалено из системы, его логика перенесена в представление DisplayTemplates/Uri.cshtml
Изменение функций генератора шаблонов
- Изменено наименование следующих функций:
- RemindTime изменено на GetReminderTimeSpan
- TransformFile изменено на TransformFileToSignedText
- IsProjectTemplate изменено на IsProjectTaskTemplate
- GetObject изменено на LoadEntityByWorkLogItem
- ObjectDisplayName изменено на GetEntityDisplayNameByWorkLogItem
- В стандартные функции генератора шаблона EleWise.TemplateGenerator.Function.DefaultFunctions были перенесены следующие функции EleWise.ELMA.Tasks.Notifications.TaskTemplateGeneratorFunctions.HtmlString и EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.StringCut.
- Был удален класс EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.
Изменение работы автосинхронизации
В компоненте EleWise.ELMA.IntegrationLdap.Extensions. LdapExternalMembershipService убран метод AuthProviderSyncStart. Вместо него следует использовать методы AuthProviderManualSyncStart (ручной запуск синхронизации) или AuthProviderAutoSyncStart (автоматический запуск синхронизации).
Пользовательский интерфейс
Доработка прав доступа к страницам
При настройке портлетных страниц у пользователей, имеющих права на редактирование, появилась возможность переключиться на редактирование общих настроек.
Настройка прав доступа к странице возможна только с полными правами к странице и в режиме редактирования общих настроек.
Проекты
Выбор пользователей (исполнитель/соисполнитель/контролер) для проектных задач при публикации плана проекта. В случае если в задаче плана установлена проектная роль с количеством участников более 1, система предлагала при каждой публикации плана выбрать конкретного пользователя/пользователей из списка доступных. Теперь выбор пользователей не осуществляется для закрытых задач и для задач, в которых уже выбран пользователь в ходе одной из прошлых публикаций плана.
Дизайнер
В конфигурационный файл дизайнера (EleWise.ELMA.BPM.Designer.exe.config) добавлено два параметра:
- SvcUtilPath (путь до утилиты SvcUtil) будет использоваться чаще всего. В файле должен быть локальный путь до SvcUtil.exe.
- SvcUtilAdditionalParams (дополнительные параметры для запуска SvcUtil) практически не будет использоваться, но может понадобиться в редких случаях. Необходимо передавать параметры для запуска, про которые можно прочитать на сайте https://msdn.microsoft.com/ru-ru/library/aa347733(v=vs.110).aspx
Данные поля следует заполнять только в том случае, когда поставляемая версия SvcUtil отказывается работать. Если параметр SvcUtil не заполнен, или файл по данному пути не найден, запускается поставляемая версия SvcUtil.
Процессы Workflow
Исправлена проверка условия продолжения цикла для случая «После выполнения операции».
Было:
Вне зависимости от истинности условия операция не будет выполнена ни разу.
Стало:
Теперь операция выполнится как минимум 1 раз.
Общие доработки
- Реализовано удаление вложенных подпроцессов
- Свойство типа Цвет
- Дефолтный цвет свойства изменен на белый
- Цвет шрифта автоматически изменяется в зависимости от интенсивности цвета
- При изменении hex-coda цвет динамически меняется
- Исправлена ошибка при попытке открытия файла в переменной типа Вложение
- Убрана кнопка настройки таблицы в Трудозатраты – Поиск трудозатрат
- При использовании временных показателей и метрик процесса в портлетах "Спидометр" , "График", "Гистограмма" добавлена возможность настроить единицы измерения отображения информации на графике.
Lite-интерфейс
Дерево фильтров убрано из пункта меню Справочники в Lite-интерфейсе и отображается по нажатию на добавленную кнопку «Выбрать фильтр».
ELMA плагин для Visual Studio
В типы документов и типы проектов добавлена возможность изменять Namespace (пространство имен).
PublicAPI
Раздел KPI:
PublicAPI.KPI.Objects.SMART.SMARTTask.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
PublicAPI.KPI.Objects.KpiTask.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
Раздел Docflow:
PublicAPI.Docflow.Tasks.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
Раздел Projects:
PublicAPI.Projects.ProjectTaskBase.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - есть изменения в фильтре:
UnderControl(Boolean underControl) - Удалён
UnderControl(Nullable<Boolean> underControl) - Добавлен
Список исправлений к версии 3.10.9
Публичные методы и интерфейсы
- В классе EleWise.ELMA.Documents.Managers.AcquaintanceTaskGroupManager методы AddExecutors помечены как устаревшие, вместо них использовать AddSwimlaneExecutors.
- В классе EleWise.ELMA.Documents.Managers.ApprovementTaskGroupManager методы AddExecutors помечены как устаревшие, вместо них использовать AddSwimlaneExecutors.
- В классе EleWise.ELMA.Security.Managers.ReplacementManager методы AddUserToList и GetExecutor помечены как устаревшие, вместо них использовать AddUserToList<T> и GetExecutor<T>.
- В классе EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.BPMNActivity<TElement> методы Pair<IUser, IUser>[] GetExecutors помечены как устаревшие, вместо них использовать методы IUser[] GetSwimlaneExecutors. Методы AddUserToList помечены как устаревшие, вместо них использовать методы AddSwimlaneUserToList с другими наборами параметров. Метод Pair<IUser, IUser>[] IActivityWithExceptionFlowsImpl.GetExecutors помечен как устаревший, вместо него использовать метод IUser[] IActivityWithExceptionFlowsImpl.GetSwimlaneExecutors.
- В интерфейсе EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.IBPMNActivity методы Pair<IUser, IUser>[] GetExecutors помечены как устаревшие. Добавлены методы IUser[] GetSwimlaneExecutors(IWorkflowInstance instance) и IUser[] GetSwimlaneExecutors(IWorkflowInstance instance, out bool assignedToResponsible).
- В интерфейсе EleWise.ELMA.Workflow.Diagrams.Activities. IActivityWithExceptionFlowsImpl метод Pair<IUser, IUser>[] GetExecutors помечен как устаревший. Добавлен метод IUser[] GetSwimlaneExecutors(NativeActivityContext context, out bool assignedToResponsible).
- Точка расширения ISwimlaneChangedHandler помечена как устаревшая, вместо неё используется ISwimlaneChangedExecHandler.
Пользовательский интерфейс
Сортировка по умолчанию в списке связанных объектов
Для списка связанных объектов введена настройка сортировки по умолчанию. При настройке данного элемента в конструкторе форм можно выбрать одну из выбранных для отображения колонок и указать для нее направление сортировки. После публикации объекта (процесса/типа документа/проекта), в котором используется форма с измененными настройками списка связанных объектов, в веб-части пользователь увидит новые настройки (при этом все его настройки, которые он делал с данным списком, будут сброшены на те, которые задали в дизайнере в конструкторе форм).
Справочники
Справочники «Периодичность», «Статья расхода бюджета», «Статья дохода бюджета» визуально отображаются в «Общем модуле» в дереве объектов.
ELMA плагин для Visual Studio
В объекты и перечисления добавлена возможность изменять Namespace (пространство имен), а также указать отображаемое пространство имен объекта.
Дизайнер
Добавлена настройка для добавления префикса для таблицы блока. Данная настройка может быть полезна, если необходимо на определенных формах сохранять одинаковое состояние блока (сортировка, группировка, положение колонок, ширина колонок и т.д.). Если не указывать префикс, на всех формах, где используется блок будет одинаковое название таблицы, а значит одинаковое состояние таблицы блока.
Прочее
- В блоке процесса "Создание документа" убрана галочка "Не проверять обязательность заполнения контекстных переменных"
- Добавлен отдельный лог-файл для хранения информации по выполнению сценариев. Новые лог-файлы находятся по пути web\logs\ScriptLog.
Процессы
Кнопки в меню «Сделано» раскрашиваются так же, как и кнопки на основной странице
ELMA Агент
Добавлена новая опция командной строки MAKEDOCUMENTCURRENTVERSION. Реализовано сохранение последнего использованного значения флага "Сделать текущей версией"
PublicAPI
Раздел CRM:
PublicAPI.CRM.Objects.Category.Filter() - есть изменения в фильтре:
IsDeleted(Boolean isDeleted) - Добавлен
Раздел Docflow:
Добавленные методы:
Void PublicAPI.Docflow.Document.AddComment(Document document, Comment comment, IEnumerable<Attachment> attachments, IEnumerable<DocumentAttachment> documentAttachments)
Раздел Portal:
Добавленные менеджеры объектов:
PublicAPI.Portal.Objects.Security.ReplacementRule
ReplacementRuleFilterHelper PublicAPI.Portal.Objects.Security.ReplacementRule.Filter()
PublicAPI.Portal.Objects.Security.ReplacementRule.Filter() - есть изменения в фильтре:
Replacement(Replacement replacement) - Добавлен
TargetUser(User targetUser) - Добавлен
PropertyUid(Guid propertyUid) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
Список исправлений к версии 3.10.8
API Кода. Публичные методы и интерфейсы
В классе BinaryFile добавлено новое свойство:
/// <summary> /// Удалить временный файл после сохранения в базу /// </summary> bool DeleteTempFileAfterSave { get; set; }
а также метод:
/// <summary> /// Установить локальный путь до файла /// </summary> /// <param name="contentFilePath">Локальный путь до файла</param> /// <param name="deleteTempFileAfterSave">Удалить временный файл после сохранения в базу</param> void SetContentFilePath(string contentFilePath, bool deleteTempFileAfterSave = false);
Данное свойство указывает, что после сохранения файла в базу, физический файл-исходник необходимо удалить, для этого свойства автоматические ставится значение true, когда вызывается метод InitializeContentFilePath, и ставится значение false, когда присваивается в свойство ContentFilePath новое значение. Также добавлена очистка папки для хранения временных файлов ELMA, все файлы, созданные больше 24 часов назад, будут автоматически удаляться.
Изменение работы фильтров объектов
- В интерфейсе EleWise.ELMA.BPM.Web.Common.Controllers. IFilterController изменен метод FilterFields: добавлен параметр string filterGridId = "".
- В html-разметке формы фильтров введены уникальные id объектов и скриптов.
WebAPI
Изменен возвращаемый результат PublicAPI/REST/EleWise.ELMA.Documents.Docflow/SignDocument/SignEnabled, теперь отправляется guid активного криптопровайдера (guid empty – в случае отсутствия активного криптопровайдера)
Пользовательский интерфейс
Переназначение задач по бизнес-процессам
Только исполнитель задачи и его начальники могут переназначить задачу (при отсутствии запрета на переназначение в процессе). Инициатор процесса, являющийся автором задачи, лишен такой привилегии.
PublicAPI
Раздел Projects:
PublicAPI.Projects.Project.Filter() - есть изменения в фильтре:
Managers(User[] managers) - Добавлен
PublicAPI.Projects.Types.ProjectWork.Filter() - есть изменения в фильтре:
Managers(User[] managers) - Добавлен
Список исправлений к версии 3.10.7
API Кода. Публичные методы и интерфейсы
-
Точка расширения IPreBindResolver отмечена устаревшей, вместо нее необходимо использовать точку расширения
namespace EleWise.ELMA.Web.Mvc.Binders { /// <summary> /// Фабрика для ValueProvider /// </summary> [ExtensionPoint(ServiceScope.Shell)] public interface IValueProviderFactory { /// <summary> /// Создать ValueProvider для текущего <see cref="controllerContext"/> /// </summary> IValueProvider GetValueProvider(ControllerContext controllerContext); } }
-
Добавлена точка расширения EleWise.ELMA.Calendar.ICalendarItemSearchProvider, предназначенная для получения планируемых элементов календаря с поддержкой быстрого поиска
-
В методе GetUserChiefsHierarchy(Models.IUser user) менеджера EleWise.ELMA.Security.Managers.UserManager добавлена сортировка возвращаемого дерева иерархии руководителей.
Пользовательский интерфейс
Доработки модуля LDAP
Реализованы ручная и автоматическая синхронизации импортированных из LDAP пользователей с автоматической блокировкой пользователя в ELMA. (по условию, указанному в фильтре импорта/синхронизации)
Включение/выключение автоматической синхронизации, а также запуск ручной синхронизации осуществляется через настройки модуля LDAP.
Отображение родительских задач на диаграмме Гантта
Родительские задачи теперь отображаются по-разному (в зависимости от того, фазовая задача, или нет).
Не показывать проектные задачи в календаре
Добавлена настройка на уровне типа проекта "Не показывать задачи в календаре". Настройка включает/выключает показ элемента планирования в календаре для всех задач типа проекта.
В проекте появились персональные настройки (вызываются в меню по клику на иконку настройки страницы). Настройка "Не показывать задачи в календаре" в данном случае имеет тот же смысл что и в типе проекта, но переопределяет ее поведение для конкретного пользователя и проекта.
Добавлена возможность ручного планирования проектных задач в календаре (независимо от состояния настройки "Не показывать задачи в календаре").
В календаре добавлен быстрый поиск в списках Запланированные, Незапланированные.
Выбор групп и оргструктуры в дизайнере
В дизайнере при выборе входных/выходных атрибутов и в привязке атрибутов добавлены селекторы для групп пользователей и элементов оргструктуры.
При экспорте/импорте для передачи значений будут использоваться Uid-ы.
При создании своих BPMN элементов, в которых будет использоваться необходимо PropertyMap указать интерфейс IElementWithPropertyMap
Изменение информируемых при просрочке задачи
Для информируемых о просрочке пользовательских задач и задач документооборота в процессе:
-
добавлен информируемый "Контекстная переменная"
-
добавлен информируемый "Руководитель исполнителя" (первая должность с назначенным пользователем вверх от исполнителя по оргструктуре)
Общие доработки
-
Исправлено форматирование текста в поле Описание задачи.
-
Добавлено объединение ячеек в колонке для одиночных объектов (только заголовок, только поле для редактирования и т.п.).
-
Добавлена возможность скрывать заголовок блока, грида для таблиц с настраиваемой шириной колонок.
ELMA плагин для Visual Studio
В окно «О программе» добавлен пункт «Версия плагина», оповещающая пользователя о текущей версии плагина. Если версии плагина и сервера не совпадают, при открытии окна «О программе» пользователь получит соответствующее предупреждение.
Реализована возможность смены папки дизайнера/веб сервера/менеджера пакетов. Для активации соответствующих кнопок, необходимо запустить Visual Studio от имени администратора.
PublicAPI
Раздел CRM:
Добавленные менеджеры объектов:
PublicAPI.CRM.Objects.LeadDublicateState
LeadDublicateStateFilterHelper PublicAPI.CRM.Objects.LeadDublicateState.Filter()
Добавленные методы:
DublicateContractorFilterHelper PublicAPI.CRM.Objects.DublicateContractor.Filter()
PublicAPI.CRM.Objects.DublicateContractor.Filter() - есть изменения в фильтре:
Lead(Lead lead) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.LeadDublicateState.Filter() - есть изменения в фильтре:
Lead(Lead lead) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
Список исправлений к версии 3.10.6
API Кода. Публичные методы и интерфейсы
В ComplexCacheService появились новые методы для размещения и освобождения данных по регионам:
/// <summary> /// Получить значение из кэша или вычислить значение и записать в кэш, если не найдено /// </summary> /// <typeparam name="T">Тип значения</typeparam> /// <param name="key">Ключ для хранения в кэше</param> /// <param name="timestampKey">Ключ для временного отпечатка</param> /// <param name="timestampRegionKey">Ключ для временного отпечатка региона</param> /// <param name="valueAccessor">Функция, возвращающая значение. Вызывается, когда в кэше информация не найдена.</param> /// <returns>Значение</returns> T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor); /// <summary> /// Получить значение из кэша или вычислить значение и записать в кэш, если не найдено /// </summary> /// <typeparam name="T">Тип значения</typeparam> /// <param name="key">Ключ для хранения в кэше</param> /// <param name="timestampKey">Ключ для временного отпечатка</param> /// <param name="timestampRegionKey">Ключ для временного отпечатка региона</param> /// <param name="valueAccessor">Функция, возвращающая значение. Вызывается, когда в кэше информация не найдена.</param> /// <param name="timeout">Время хранения значения</param> /// <returns>Значение</returns> T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor, TimeSpan timeout); /// <summary> /// Обновить временной отпечаток /// </summary> /// <param name="timestampKey">Ключ для временного отпечатка</param> /// <param name="timestampRegionKey">Ключ для временного отпечатка региона</param> void RefreshTimestamp(string timestampKey, string timestampRegionKey); /// <summary> /// Обновить временной отпечаток региона /// </summary> /// <param name="timestampRegionKey">Ключ для временного отпечатка региона</param> void RefreshTimestampRegion(string timestampRegionKey);
Изменение экспорта-импорта
1. Для экспорта-импорта типов документов добавлен перенос простых настроек:
- Шаблон названия документа
- Разрешать менять названия документа
- Загрузка версии из файла
- Кнопка сканирования версии
- Генерация версии по шаблону
- Контроль отправки
- Разрешать регистрировать документы этого типа несколько раз
- Ограничить работу с документом через веб-интерфейс
- Использовать жизненный цикл для документов этого типа
2. Для экспорта-импорта типов документов добавлен перенос групп документов.
Привилегии в CRM
В CRM возвращена служебная категория «Без категорий» для Контрагентов и Возможностей. Алгоритм работы: если у Контрагента (Возможности) в правах стоит флаг «Наследовать из категорий» и отсутствует назначенная категория, то в раздел «Наследуемые права» автоматически добавляются права из категории «Без категорий».
Общие доработки телефонии
- Сохранение UniqueId звонка в RelationshipCall. Hidden поле на карточке звонка для UniqueId.
- Возможность передачи UniqueId на настраиваемый Url, который открывается вместо карточки звонка
Пользовательский интерфейс
Настройка форм в процессах
В конструкторе форм для задач процессов появились для добавления все элементы, доступные для задач, в том числе Вкладка журнала трудозатрат по задаче и Список трудозатрат по задаче.
При этом в конструкторе форм для запуска процесса были убраны лишние элементы, такие как Кнопки переходов по процессу, Информация о процессе и Контейнер свойств контекста процесса.
Экспорт карты диаграммы
Убрано наложение текста в логотипе экспортированных в виде изображения диаграмм, текст стал локализуемым.
Было:
Стало:
Задачи
- При создании подзадачи с несколькими исполнителями в историю пишется одна запись со всеми созданными задачами.
- Добавлен запрет на создание просроченных подзадач.
Настройки
В файле Settings.config добавлено описание для параметров, позволяющих настраивать приложение. Добавлено описание как для параметров по умолчанию, так и для параметров, которые являются ситуационными (скрытыми).
PublicAPI
Раздел Docflow:
Добавленные методы:
Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status)
Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status, String comment)
Boolean PublicAPI.Docflow.Document.CanChangeStatus(Document document, LifeCycleStatus status)
IEnumerable<LifeCycleStatus> PublicAPI.Docflow.Document.GetEnableStatuses(Document document)
Раздел Projects:
PublicAPI.Projects.Objects.MaterialResource.Filter() - есть изменения в фильтре:
NotIds(Int64[] notIds) - Добавлен
NotIds(List<Int64> notIds) - Добавлен
Список исправлений к версии 3.10.5
Изменен контрол редактирования документа
Изменен поиск документа в контроле редактирования документа:
- Вместо EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. Explorer используется EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorer
- Вместо EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. ExplorerUrl используется EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorerUrl
- Метод EleWise.ELMA.KPI.Managers.SmartTaskManager.CheckTaskExpiration(DateTime checkTime) помечен как устаревший.
- Точка расширения EleWise.ELMA.BPM.Web.Common.ExtensionPoints. IFilterPortletGridId помечена как устаревшая.
- Обновлен пакет NHibernate
- Обновлен пакет FluentNHibernate
Пользовательский интерфейс
Настройки исходящей почты
В настройках исходящей почты в разделе администрирования вместо свойства «Использовать ли SSL» введено новое свойство «Защита соединения», которая имеет 3 варианта значения: «Нет», «SSL», «TLS». При загрузке настроек из базы старые параметры автоматически конвертируются в новые: если в свойстве «Использовать ли SSL» было введено значение «Нет», тогда «Защита соединения» примет значение «Нет», в противном случае в зависимости от значения поля «Порт для отправки сообщений» будет выбрано соответствующее значение для поля «Защита соединения».
Конструктор форм
Добавлена возможность скрывать иконку создания объектов на формах объектов/процессных задач.
Настройка происходит в диалоговом окне свойства:
После выбора данной настройки на форме (в дизайнере) скроется иконка, а также скроется иконка на форму объекта в веб-части после его публикации. Важный момент: иконка создания объекта скроется у всех дочерних объектов, но изменить у дочерних объектов возможно индивидуально.
Возможность настройки шаблонов для свойств типа Перечисление, Выпадающий список, Сущность
Пример настройки свойства типа Сущность (В данном случае Задача)
В веб-части настроенные шаблоны выглядят следующим образом:
Проекты
1. Монитор публикации планов проектов теперь доступен всем пользователям с правами доступа к модулю Проекты. В мониторе отображаются проекты, к которым есть права на доступ. При наличии ошибки публикации и права управления планом проекта в мониторе также доступны управляющие элементы для перезапуска незавершенной публикации.
Телефония
- Настройка открытия карточки звонка до/после поднятия трубки, для всех пользователей.
2. Индивидуальная настройка вариантов открытия карточки у пользователей
Morpher
- Добавлены новые шаблонные теги для отображения целой и дробной части числа - тегам добавлен параметр для формата отображения числа (пример - {ЦЧ:Ф}, где Ф - один из стандартных форматов отображения числа.) Допустимые форматы можно посмотреть на https://msdn.microsoft.com/ru-ru/library/fzeeb5cd(v=vs.110).aspx
- В выбор документа через поиск добавлена форма расширенного поиска
Изменен контрол редактирования документа
В выбор документа через поиск добавлена форма расширенного поиска
Экспорт карты диаграммы
Теперь изображение экспортированной карты диаграммы содержит наименование диаграммы в заголовке.
Процессы
Добавлены настройки прерывания дочерних процессов при множественном запуске операции.
Добавлено отображение подписчиков на тип документа
Было:
Стало:
Теперь подписчики на тип документа отображаются во всплывающем окне в меню документа: «Действия» – «Просмотр подписок»
PublicAPI
Раздел Docflow:
Добавленные методы:
Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, String comment, Boolean sendNotification)
Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, Boolean sendNotification)
ApprovementListFilterHelper PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter()
Void PublicAPI.Docflow.Objects.Tasks.ApprovementTaskGroup.Terminate(ApprovementTaskGroup group, String comment, Boolean sendNotification)
PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter() - есть изменения в фильтре:
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
Раздел Processes:
PublicAPI.Processes.Objects.WorkflowQueueItem.Filter() - есть изменения в фильтре:
StatusExecutionError(Boolean statusExecutionError) - Добавлен
StatusExecutionActive(Boolean statusExecutionActive) - Добавлен
Раздел Enums:
Добавленные перечисления:
PublicAPI.Enums.IntegrationAsterisk
PublicAPI.Enums.IntegrationAsterisk.Model
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.DontOpen
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Dial_DialBegin
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Bridge
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.VarSetBridgePeer
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Join
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.LikeTelephonySettings
PublicAPI.Enums.Types.Settings.EnumDisplayType
PublicAPI.Enums.Types.Settings.EnumDisplayType.Standard
PublicAPI.Enums.Types.Settings.EnumDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.EnumDisplayType.VerticalGroup
PublicAPI.Enums.Types.Settings.EnumDisplayType.Switch
PublicAPI.Enums.Types.Settings.DropDownListDisplayType
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.Standard
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.VerticalGroup
PublicAPI.Enums.Types.Settings.EntityDisplayType
PublicAPI.Enums.Types.Settings.EntityDisplayType.Standard
PublicAPI.Enums.Types.Settings.EntityDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.EntityDisplayType.VerticalGroup
Список исправлений к версии 3.10.4
API Кода. Публичные методы и интерфейсы
Добавлена точка расширения IElementWithViewTransformation, отвечающая за получение необходимого представления для определенного типа задачи. Имеет следующие методы:
- bool AcceptableElement(IElementWithView element) - для какого типа задачи используется точка расширения;
- FormView GetFormView(IElementWithView element, IWorkflowTaskBase task) - получить форму для элемента.
Реализована базовая реализация данной точки расширения – BaseFormViewTransformation, которая выполняется для всех типов процессных задач и возвращает element.View, если не было найдено другой реализации. Реализованы два наследника от данного класса: UserTaskViewTransformation и DocflowViewTaskTransformation для пользовательских задач по процессу и для документных задач по процессу.
Документы
Убрана возможность создавать в сценарии документ без указания конкретного типа
Проекты
Появилась возможность добавлять пользовательские фильтры для диаграммы Ганта в плане проекта. Для этого необходимо создать файл:
WebApplication\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.js
согласно шаблону из файла:
Web\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.template.js
Пользовательский интерфейс
Добавлена настройка использования модуля интеграции LDAP в лесу
- Добавлена настройка «Использовать лес»
- Добавлены настройка импорта по шаблону для леса
Дизайнер
Добавлена отладка пользовательских расширений (по аналогии с отладкой скриптов процессов). Отладка доступна только после публикации пользовательского расширения.
PublicAPI
Раздел Docflow:
Устаревшие методы:
Document PublicAPI.Docflow.Document.Create(BinaryFile file, Folder folder, String name) (Этот метод устарел)
Document PublicAPI.Docflow.Document.Create(Folder folder, String name) (Этот метод устарел)
Document PublicAPI.Docflow.Document.Create() (Этот метод устарел)
Список исправлений к версии 3.10.3
API Кода. Публичные методы и интерфейсы
- Добавлен метод LoadMetadata(string filename, bool throwEx) в MetadataSerializer. Если метаданные не были найдены в файле, то в зависимости от throwEx будет возвращено null (throwEx == false) или возвратится ошибка (throwEx == true).
- В интерфейсе IElementWithExceptionFlows добавлено 3 метода: CanHandleException, QueueExecutionTimeoutSupported и GetQueueExecutionTimeout.
- В классе ActivityExceptionFlowHelper метод Execute помечен как [Obsolete].
- Для того, чтобы в собственных реализациях операций бизнес-процессов реализовать автоматическую эскалацию по ошибке и по таймеру, требуется реализовать интерфейс IElementWithExceptionFlows (либо при наследовании от BPMNFlowElement переопределить методы CanHandleExceptionByEscalation и QueueExecutionTimeoutSupported)
Пользовательский интерфейс
Маркетинг
Доработан раздел маркетинга
1. В раздел "Маркетинг" добавлены Календарь и Статистика.
2. В настройки доступа добавлен пункт "Доступ к разделу "Маркетинг".
3. При создании маркетингового мероприятия/воздействия отображается родительская метка если есть.
4. При создании воздействий с utm-метками создаются мероприятия с этими метками, если их нет.
5. Для мероприятий добавлена дата отправки в архив.
6. Изменена работа с бюджетом мероприятия, теперь для изменения бюджета необходимо добавить новый платеж.
7. Для всех маркетинговых воздействий тип бюджета изменен на "Сумма бюджетов вложенных объектов" (Сумма считается по платежам по бюджету)
8. Изменения в карточке мероприятия:
- добавлена вкладка статистика
- изменен алгоритм формирования списка количества возможностей
- изменилось отображение бюджета, показывается список платежей, если тип бюджета - "Сумма бюджетов вложенных объектов"
- добавлены дополнительные предупреждения при отправке мероприятий в архив и на удаление
Конвертация возможности
При конвертации возможности появился вариант не создавать ни сделку, ни взаимоотношение. При выборе создания сделки или взаимоотношения теперь проверяется обязательность заполнения полей на соответствующей форме.
Телефония
- Добавлена возможность настройки CallerId, при использовании Asterisk, для каждого пользователя.
- Добавлена Возможность настройки URL, открываемого при входящем звонке, вместо карточки звонка.
Также можно передать в адресе номер телефона и callId, используя в введенном url шаблоны {phoneString} и {callId}.
Например: https://yandex.ru/search/?text={phoneString}, при каждом входящем звонке будет открываться страница yandex.ru со входящим номером в строке поиска
ELMA плагин для Visual Studio
Убрана возможность создавать ELMA Entity в плагине ELMA для Visual Studio. Возможность редактировать существующие ELMA Entity осталась.
PublicAPI
Раздел CRM:
Добавленные менеджеры объектов:
PublicAPI.CRM.Objects.MarketingPayment
MarketingPaymentFilterHelper PublicAPI.CRM.Objects.MarketingPayment.Filter()
PublicAPI.CRM.Objects.MarketingPayment.Filter() - есть изменения в фильтре:
Name(String name) - Добавлен
CreationDate(DateTimeRange creationDate) - Добавлен
CreationAuthor(User creationAuthor) - Добавлен
MarketingObjectBase(MarketingBase[] marketingObjectBase) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.MarketingActivity.Filter() - есть изменения в фильтре:
DateRange(DateTimeRange dateRange) - Добавлен
PublicAPI.CRM.Objects.MarketingEffect.Filter() - есть изменения в фильтре:
DateRange(DateTimeRange dateRange) - Добавлен
Список исправлений к версии 3.10.2
ELMA плагин для Visual Studio
Добавлена поддержка Visual Studio 2015 плагином ELMA.
Добавлены новые функции в генератор документов по шаблону:
Функция отображения даты и времени в заданном формате - DateTimeFormat
Полный аналог DateTime.ToString("тут ваш формат")
* - обязательный параметр
Параметры:
[0]*: Дата\время (DateTime)
[1]: Формат отображения
Пример: {DateTimeFormat({$Date}; ‘yy-MM-dd’)}
Функция отображения числа в заданном формате - NumberFormat
Принимаются как стандартные форматы, так и формат ввиде числа количества знаков после запятой
* - обязательный параметр
Параметры:
[0]*: Число (все числовые типы, кроме byte)
[1]: Один из стандартных или кастомых форматов отображения (string)
[1]: Число количества знаков после запятой (все числовые типы, кроме byte)
-Примечание: если в качестве второго параметра будет передано число с плавающей запятой, то количество знаков будет равно целой части этого числа с учётом округления
Пример: {NumberFormat(2345.6789;3)}
Функция отображения числа в виде денег. Отображается только в формате русской культуры - MoneyFormat
Разделителем порядком числа является символ « » (пробел)
Так же принимает формат в виде количества знаков после запятой
* - обязательный параметр
Параметры:
[0]*: Число (все числовые типы, кроме byte)
[1]: Число количества знаков после запятой (все числовые типы, кроме byte)
-Примечание: если в качестве второго параметра будет передано число с плавающей запятой,
то количество знаков будет равно целой части этого числа с учётом округления
Пример: {MoneyFormat(23451234.6789;2)}
Пользовательский интерфейс
1. Добавлена возможность вставки изображений в подпись Email-письма. В настройках возможно выбрать какая подпись будет использоваться для базовых писем системы простая или HTML подпись. В HTML подпись можно добавить разметку и использовать изображения
2. На карту экземпляра процесса добавлены ссылки на карту внешних и внутренних экземпляров подпроцессов. На карту экземпляра подпроцесса добавлены ссылки на родительский экземпляр процесса
Публичные интерфейсы API
Криптопровайдеры
- Интерфейс ICryptoProvider расширен: добавлены свойства IsAttributesSupported и IsContentSupported
- Добавлен абстрактный класс AbstractCryptoProvider, реализующий интерфейс ICryptoProvider
- Все криптопровайдеры наследуются от AbstractCryptoProvider, вместо ICryptoProvider
Работа с файлами
В классе EleWise.ELMA.Web.Mvc.Controllers. BinaryFilesController методы:
- HasPermissionOnFile(BinaryFile file)
- HasPermissionOnFile(BinaryFile file, out string errorMessage)
- PrepareBinaryFile(BinaryFile file)
- GetRanges(string rangesHeader, long fileLength, out long[] RangesStartIndexes, out long[] RangesEndIndexes)
помечены как Obsolete, код данных методов перенес в класс EleWise.ELMA.Web.Service.FileUpDownHelper.
В классе EleWise.ELMA.Web.Service.FileUpDownHelper дополнительно реализованы следующие методы:
- GetContentRange(string rangeHeader, out long fileLength, out long startPos, out long endPos)
- BinaryFile GetStorableBinaryFile(string id, out string errMessage)
- GetCachedBinaryFile(string id, out string fileName, out string filePath, out string contentType)
- Stream GetPartialFileStream(string filePath, out long fileLength, out long startOffset, out long endOffset, out bool isPartial, out string errMessage)
- bool CreateOrAppendIncrementFile(ref Guid fileGuid, string fileName, Stream inputStream, long startPos, long endPos)
Из версии 3.10 перенес класс EleWise.ELMA.Files.RangeStreamWrapper.
PublicAPI
Раздел Docflow:
Добавленные методы:
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - есть изменения в фильтре:
User(User user) - Добавлен
Раздел Enums:
Добавленные перечисления:
PublicAPI.Enums.Documents.DigitalSignature.SignatureGeneratingType.TemplateAndContent
PublicAPI.Enums.Documents.DocumentsDigitalSignature.SignatureGeneratingType.TemplateAndContent
PublicAPI.Enums.KPI.Performance.PerformanceMatrixStatus.NoComplete
PublicAPI.Enums.KPI.KPIPerformance.PerformanceMatrixStatus.NoComplete
Список исправлений к версии 3.10.1
Пользовательский интерфейс
- Добавлена комбинация клавиш Ctrl+S для форм (представлений)
- Изменено поведение флага "Не проверять обязательность заполнений контекстных переменных" - валидация отключается только для контекстых переменных, для остальных переменных на форме валидация остается прежней.
Данное поведение работает только для элементов, указанных ниже: - Отправка на согласование
- Отправка на ознакомление
- Вынесение резолюции
- Формирование задач по резолюции
- Подписание
- Согласование
- Регистрация документа
- Создание документа
- Добавлен флаг "Не проверять обязательность заполнений контекстных переменных" для следующих элементов:
- Отправка документа
- Вынесение резолюции
- Формирование задач по резолюции
- Подписание
- Согласование
- Добавлен флаг "Проверять обязательность заполнений контекстных переменных" для следующих элементов:
- Регистрация документа
- Создание документа
PublicAPI (с версии 3.9.5)
Раздел Docflow:
Добавленные менеджеры объектов:
PublicAPI.Docflow.Permissions.TranslateSystemPermission
Раздел Processes:
Добавленные менеджеры объектов:
PublicAPI.Processes.Permissions.TranslateSystemPermission
Раздел Portal:
Добавленные менеджеры объектов:
PublicAPI.Portal.Security.PermissionsSecurity.TranslateSystemPermission
PublicAPI.Portal.CalendarEvent.PermissionsEvent.TranslateSystemPermission
Раздел Projects:
Добавленные менеджеры объектов:
PublicAPI.Projects.Permissions.TranslateSystemPermission
Список исправлений к версии 3.10.0
Библиотеки
Новый клиент для Oracle.
Oracle.DataAccess - больше не используется, используется Oracle.ManagedDataAccess. Если в скриптах есть прямое использование Oracle.DataAccess нужно либо вручную его сохранить, либо переделать на использование Oracle.ManagedDataAccess.
Пользовательский интерфейс
Дополнительный фильтр EQL на документах
Наложенный дополнительный фильтр EQL на свойство с документами фильтрует в том числе последние использованные документы.
Заблокированные пользователи в пользовательской группе
При выборе пользователей из пользовательской группы заблокированные пользователи исключаются.
Поиск пользователей по элементу оргструктуры
Если в поиске пользователей в поле оргструктуры выбрать отдел, то в результаты поиска попадут все сотрудники отдела и подчиненных подразделений. В администрировании в фильтре пользователей есть параметр, указывающий, что нужно искать пользователей, которые непосредственно включены в отдел (без учета подчиненных подразделений).
Привязка процесса к смене стадий сделки в активной воронке продаж
При настройке процессов в воронке продаж можно выбирать, в том числе, процессы, которые недоступны для запуска текущему пользователю.
Динамическое текстовое поле
Текстовые поля в веб-интерфейсе можно изменять по высоте при вводе данных.
Вложенные свойства объекта в блоке
В блоках можно настроить вывод вложенных свойств объекта, они будут отображаться в списке записей.
Трудозатраты
Добавлен согласующий трудозатрат по умолчанию. Его можно установить в профиле пользователя. Если его не указать, то согласующим по умолчанию будет подставляться автор объекта трудозатрат. Для проектов, согласующий по умолчанию вычисляется, как и раньше.
Публичные методы и интерфейсы
- Свойство EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinks отмечено устаревшим, оно не используется в приложении и будет удалено в будущих версиях. Вместо него используется свойство EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinksType.
- В интерфейсе EleWise.ELMA.Projects.Models.IProjectPlanItem добавлено свойство OriginalItem, из какой версии был скопирован данный элемент. Используется для идентификации разных версий одной и той же задачи плана проекта.
Действие при копировании объекта
Добавлено новое действие копирования свойств объектов «Сохранять исходную ссылку». При копировании свойства всегда будет сохраняться ссылка на исходный объект.
Старое действие "Всегда копировать по ссылке" работает аналогично действию "Сохранять исходную ссылку", но если объект, на который указывает ссылка, уже скопирован (при общей операции копирования), то будет использоваться этот скопированный объект.
Работа с клиентами
Возможности переведены на конструктор форм
Поиск и обработка дублей
Добавлена возможность поиска и обработки дублей.
Пункт в глобальных настройках CRM для включения/отключения поиска дублей.
Пункт в настройках CRM для настройки таблиц скоринга.
Настройка таблиц скоринга и пороговых значений.
В подраздел "Возможности" добавлены фильтры: текущая неделя, прошлая неделя, текущий месяц, прошлый месяц. Добавлена таблица для быстрой фильтрации возможностей по статусам.
На страницу с детальной информацией по возможности добавлена панель, которая отображает возможные дубли среди контрагентов и возможностей
Изменение работы отчетов
- Убран кэш отчетов FastReport EleWise.ELMA.Reports.Services. FastReportRunCache.
- Системные отчеты после импорта публикуются автоматически.
Изменение работы метаданных
- Введено ограничение на именование колонок таблиц для пользовательских свойств метаданных (Uid и TypeUid).
Поддержка PostgreSQL
- Добавлена поддержка базы данных PostgreSQL (начиная с версий 9.5) для всех редакций ELMA.
- В NHibernate драйвер диалекта PostgreSQL NpgsqlDriver заменен на PostgreSqlDriver.
Изменение работы системы компонентов BPM App
- Добавлена возможность устанавливать ограничения на компоненты Bpm App по редакциям, языку и БД.
- Добавлен функционал комплексных компонентов Bpm App, позволяющий вкладывать компоненты в компоненты.
- Добавлен функционал авторазвертывания компонентов Bpm App, позволяющий автоматически устанавливать пакеты при старте сервера ELMA.
Пользовательский интерфейс
Изменения в выгрузке компонентов BPM App
- Добавлена кнопка выгрузки комплексного компонента BPM App.
- Добавлены форма ввода и отображения ограничений на компонент BPM App.
Редактор сценариев
- В модуле сценариев отчетов добавлен автокомплит по PublicAPI.
- Изменён механизм генерации ссылки на веб-сервис. Новый механизм аналогичен добавлению веб-сервисов в Visual Studio. Генерация по старому способу так же доступна.
Было:
Стало:
Генератор документов по шаблону – поддержка склонений на Русском языке
Добавлены функции для работы со склонениями и прописными числами.
- Incline (рус. Аналог - Просклонять) – возвращает словосочетание в заданном падеже.
Параметры функции:
-
- Словосочетание, которое необходимо просклонять (тип string)
- Падеж (тип string)
- Дополнительные признаки для склонения словосочетания (тип IEnumarable<string> или params string[])
Пример: {Просклонять(‘Моё словосочетание’;‘П’)} (результат: «о Моём словосочетании»)
2. InclineMany (ПросклонятьМнож) - возвращает словосочетание в заданном падеже во множественном числе.
Параметры функции: см. 1.
Пример: {ПросклонятьМнож(‘Моё словосочетание’;‘П’)} (результат: «о Моих словосочетаниях»)
3. ChangeKind (ИзменитьРод) – изменить род прилагательного.
Параметры функции:
-
- Прилагательное в именительном падеже муж. рода (тип string)
- Род и число (тип string)
Пример: {ИзменитьРод(‘спокойный’;’ЕдинСред’)} (результат: «спокойное»)
4. AnotherGenderSecondName (ФамилияПротивоположногоПола) – получить фамилию противоположного пола
Параметры функции:
-
- Фамилия (тип string)
Пример: {ФамилияПротивоположногоПола(‘Петров’)} (результат: «Петрова»)
5. KindOrNumber (РодИлиЧисло) – получить род или число выражения
Параметры функции:
-
- Выражение (тип string)
- Дополнительные признаки (тип IEnumarable<string> или params string[])
Пример: {РодИлиЧисло(‘спокойный’)} (результат: «Мужской род»)
6. GetPartOfFullName (Фио) – Получить полное имя или его часть
Параметры функции:
-
- Выражение, содержащие полное имя (тип string)
- Часть, которую нужно получить (тип string)
Пример: {Фио(‘Пушкин Александр Сергеевич’;‘о’)} (результат: «Сергеевич»)
7. IsFullName (ЯвляетсяФио) – проверить, является ли выражение ФИО
Параметры функции:
-
- Выражение (тип string)
- Дополнительные признаки (тип IEnumarable<string> или params string[])
Пример: {ЯвляетсяФио(‘Пушкин Александр Сергеевич’)} (результат: «True»)
8. IsAnimated (ЯвляетсяОдушевленным) – проверить, является ли данное выражение одушевлённым.
Параметры функции: см.7
Пример: {ЯвляетсяОдушевленным(‘заяц’)} (результат: «True»)
9. NumberToString (ЧислоВСтроку) – возвращает заданное число в текстовом формате в определённом падеже
Параметры функции:
-
- Число (тип: long, int, float, double, decimal)
- Падеж (тип string)
- Единицы измерения (тип string)
- Объём десятичной части в единицах измерения (тип: long, int, float, double, decimal)
- Формат отображения числа (тип string)
Пример: { ЧислоВСтроку(123.5;’Р’;’бочка|литр’;122;’{ЦЧ} ({ПЦЧ} {НЦЧ}) {ДЧ} ({ПДЧ} {НДЧ})’)}
(результат: 123 (ста двадцати трёх бочек) 61 (шестидесяти одного литра))
Подробнее о значениях передаваемых параметров:
- Падеж. Передаётся в форме строки. Значение по умолчанию - Именительный
Допустимые значения:
-
- Полное имя падежа (именительный, родительный и т.д.)
- Первые буквы падежей (и, р, д, и т.д.)
2. Дополнительные признаки. Передается в форме строки или набора строк
Допустимые значения:
-
- Мужской род (сокр. значение: «м»)
- Женский рож («ж»)
- ФИО («ф»)
- Нарицательное («н»)
- Одушевленное («о»)
- Неодушевленное («но»)
3. Род или число. Передается в форме строки.
Допустимые значения:
-
- Мужской род (сокр. «м», «муж»)
- Женский род («ж», «жен»)
- Средний род («с», «ср»)
- Множественное число («мн», «множ»)
4. Часть ФИО. Передаётся в форме строки.
Допустимые значения:
-
- Фамилия («ф»)
- Имя («и»)
- Отчество («о»)
- ПолноеИмя («полн»)
5. Форматы отображения числа. Передается в форме строки. Является составным параметром, который можно собрать из приведённых ниже значений.
Формат по умолчанию - «{ПрописьЦелойЧасти} {НаименованиеЦелойЧасти} {ПрописьДробнойЧасти} {НаименованиеДробнойЧасти}»
Значения для составления формата:
-
- ЦелаяЧасть (сокр. ЦЧ) – для отображения целой части числа.
- ДробнаяЧасть (ДЧ) – для отображения дробной части числа.
- ПрописьЦелойЧасти (ПЦЧ) – для отображения целой части числа прописью.
- ПрописьДробнойЧасти (ПДЧ) – для отображения дробной части числа прописью.
- НаименованиеЦелойЧасти (НЦЧ) – для отображения единиц измерения целой части числа.
- НаименованиеДробнойЧасти (НДЧ) – для отображения единиц измерения дробной части числа.
Иногда форматы чисел могут быть большими, и один из таких форматов несколько раз встречаться в документе. Для того, чтобы каждый раз полностью не прописывать формат отображения числа, можно передавать его идентификатор. Чтобы вместо формата передавать идентификатор, нужно написать реализацию точки расширения IMorpherFormat, где указывается сам формат и его идентификатор.
Пример реализации точки расширения IMorpherFormat
Необходимо подключить сборку EleWise.ELMA.Morpher.Ru и добавить следующие юзинги:
using EleWise.ELMA.ComponentModel; using EleWise.ELMA.Morpher.Ru.Extensions; using EleWise.ELMA.Morpher.Ru.Models; [Component] public class DefaultMorpherFormat : IMorpherFormat { public IEnumerable Formats { get; set; } public void Init() { var formats = new List { new NumberToStringFormat { //идентификатор формата отображения Id = "A", //формат отображения числа Format = String.Format("{0} {1} {2} {3}", MorpherConsts.StringIntegerPart, MorpherConsts.IntegerPartUnit, MorpherConsts.StringFractionPart, MorpherConsts.FractionPartUnit) }, new NumberToStringFormat { Id = "B", Format = String.Format("{0} {1} {2} {3}", MorpherConsts.StringIntegerPart, MorpherConsts.IntegerPartUnit, MorpherConsts.FractionPart, MorpherConsts.FractionPartUnit) } }; Formats = formats; } }
Пользовательский словарь склонений.
Morpher умеет склонять не всё. В некоторых случаях он просто не знает, как правильно нужно просклонять словосочетание. Для этого введён пользовательский словарь склонений. В ELMA есть два способа заполнить этот словарь.
- Реализация точки расширения IMorpherUserDictionary.
- Заполнение файла UserDictionary.xml.
Пример реализации точки расширения IMorpherUserDictionary
Необходимо подключить сборку EleWise.ELMA.Morpher.Ru и добавить следующие юзинги:
using EleWise.ELMA.ComponentModel; using EleWise.ELMA.Morpher.Ru.Extensions; using EleWise.ELMA.Morpher.Ru.Models; [Component] public class UserDictionary : IMorpherUserDictionary { public IEnumerable Init() { var list = new List(); var entry = new Entry(); //Задаём род словосочетанию entry.Gender = Gender.Feminine; //Задаем варианты склонений для формы единственного числа var singleForm = new SingleNumberForms(); singleForm.Nominative = "Лежащая книга"; singleForm.Genitive = "Лежащей книги"; singleForm.Dative = "Лежащей книге"; singleForm.Accusative = "Лежащую книгу"; singleForm.Instrumental = "Лежащей книгой"; singleForm.Prepositional = "Лежащей книге"; entry.Singular = singleForm; //Задаем варианты склонений для формы множественного числа var pluralForm = new SingleNumberForms(); pluralForm.Nominative = "Лежащие книги"; pluralForm.Genitive = "Лежащих книг"; pluralForm.Dative = "Лежащим книгам"; pluralForm.Accusative = "Лежащие книги"; pluralForm.Instrumental = "Лежащими книгами"; pluralForm.Prepositional = "Лежащих книгах"; entry.Plural = pluralForm; list.Add(entry); return list; } }
Теперь для словосочетания "Лежащая книга" будут использоваться те варианты склонений, которые указаны в коде.
Заполнение файла UserDictionary.xml
Шаблон данного xml-файла лежит в папке шаблонов и называется UserDictionaryTemplate.xml.
Чтобы словосочетания брались из данной xml, её нужно переименовать в UserDictionary.xml и положить в папку Web (на одном уровне с connection.config)
Пример:
<РодИлиМножественноеЧисло>Женский род <ФормыЕдинственногоЧисла> <Именительный>Лежащая книга <Родительный>Лежащей книги <Дательный>Лежащей книге <Винительный>Лежащую книгу <Творительный>Лежащей книгой <Предложный>Лежащей книге <Местный>в Лежащей книге <ФормыМножественногоЧисла> <Именительный>Лежащие книги <Родительный>Лежащих книг <Дательный>Лежащим книгам <Винительный>Лежащие книги <Творительный>Лежащими книгами <Предложный>Лежащих книгах <Местный>в Лежащих книгах
Предпросмотр аудио/видео файлов
В документах реализована возможность просматривать/прослушивать видео/аудио файлы.
Добавлена возможность в качестве источника данных отчетов использовать внешнюю базу данных
Реализована концепция внешних источников данных.
Доработано диалоговое окно создания и редактирования источника данных в дизайнере.
Теперь тип источника может быть, как внутренним, использующим языки HQL, SQL так и внешним с языком SQL. В настоящий момент система поддерживает настройку на базы данных Firebird, MSSQL, Oracle, PostgreSQL.
Пользовательский интерфейс
1. Появилась возможность группового назначения контроля в плане проекта.
2. На вкладке подзадачи Проектных задач подзадачи из устаревших и производных от них неопубликованных версий плана отображаются с пометкой "(устаревший план)".
3. На карточке проектной задачи появилась возможность ввести прогнозные поля: Дата начала (прогноз), Срок завершения (прогноз), Оценка трудозатрат.
4. В плане проекта появилась возможность отображения диаграммы Ганта в одном из 3 режимов по срокам: План, Прогноз, Факт (в режиме редактирования режим Факт недоступен).
5. Появилась возможность сравнения версий планов проекта (действие осуществляется посредством нажатия на иконку на вкладке "Версии" страницы просмотра плана, либо через меню действия в тулбаре). Для сравнения доступны на выбор две версии плана и режимы отображения для каждого из них: План, Прогноз, Факт. Также возможно сравнение одной и той же версии плана по разным режимам сроков.
6. В дизайнере в конструкторе форм для строковых полей появилась возможность указать текст внутри строкового поля, для любых атрибутов объекта - добавление всплывающей подсказки.
7. Для объекта Оргструктура:
7.1. Выпадающий список. Добавлено отображение пользователей, назначенных на должность, или их количество, в случае, если их больше одного (опционально в настройках свойства).
7.2 Форма поиска. При нажатии на иконку оргструктуры реализовано иерархическое отображение.
Модель данных
- В интерфейс EleWise.ELMA.Projects.Models.IProjectTaskBase добавлено свойство Obsolete, указывающее, что данная задача не относится к текущей версии плана.
- В интерфейсе EleWise.ELMA.Projects.Models.IProjectPlanItem удалено свойство Duration.
Изменения в экспорте-импорте
1. Запрещен экспорт данных из справочников, помеченных не участвующими в экспорте-импорте данных.
2. Запрещен импорт данных, метаданные которых, помечены как не участвующие в экспорте-импорте.
Пользовательский интерфейс
Изменено окно выбора справочников при экспорте
Теперь, в случае если экспорт данных для справочника запрещен, галка заменяется на картинку с подсказкой.
Поддержка нового плагина Рутокен
В связи с отключением NPAPI в Chrome, код интеграции с Рутокен был переписан на асинхронные вызовы.
Портал
Добавлена настройка цветового решения веб интерфейса ELMA.
PublicAPI (с версии 3.9.5)
Раздел CRM:
Добавленные менеджеры объектов:
PublicAPI.CRM.Objects.DublicateContractor
PublicAPI.CRM.Objects.DublicateLead
DublicateLeadFilterHelper PublicAPI.CRM.Objects.DublicateLead.Filter()
PublicAPI.CRM.Objects.ExchangeCurrencyRate
ExchangeCurrencyRate PublicAPI.CRM.Objects.ExchangeCurrencyRate.GetExchangeRate(Currency currencyEstimated, Currency currencyValuation, DateTime date)
Double PublicAPI.CRM.Objects.ExchangeCurrencyRate.RecalculationSum(ExchangeCurrencyRate currencyRate, Double amounts)
ExchangeCurrencyRateFilterHelper PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter()
PublicAPI.CRM.Objects.RegularCurrencyRateImport
RegularCurrencyRateImportFilterHelper PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter()
Добавленные методы:
Void PublicAPI.CRM.Lead.NotDublicate(Lead lead)
CurrencyFilterHelper PublicAPI.CRM.Objects.Currency.Filter()
LeadPersonPermissionFilterHelper PublicAPI.CRM.Objects.LeadPersonPermission.Filter()
PublicAPI.CRM.Objects.Currency.Filter() - есть изменения в фильтре:
CodeISONumerical(Nullable<Int64> codeISONumerical) - Добавлен
CodeISOAlphabetic(String codeISOAlphabetic) - Добавлен
ExpiryDate(Nullable<DateTime> expiryDate) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.DublicateLead.Filter() - есть изменения в фильтре:
Lead(Lead lead) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter() - есть изменения в фильтре:
ValuationDate(DateTime valuationDate) - Добавлен
CurrencyEstimated(Currency currencyEstimated) - Добавлен
CurrencyValuation(Currency currencyValuation) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.LeadPersonPermission.Filter() - есть изменения в фильтре:
User(User user) - Добавлен
PermissionRole(Nullable<Guid> permissionRole) - Добавлен
Lead(Lead lead) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter() - есть изменения в фильтре:
Provider(Nullable<Guid> provider) - Добавлен
CurrencyEstimated(Currency currencyEstimated) - Добавлен
CurrencyValuation(Currency currencyValuation) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.CRM.Lead.Filter() - есть изменения в фильтре:
SummaryLeadStatus(Nullable<SummaryLeadStatus> summaryLeadstatus) - Добавлен
RelativeCreationDate(RelativeDateTime relativeCreationDate) - Добавлен
RelativeChangeDate(RelativeDateTime relativeChangeDate) - Добавлен
LeadDublicateStatus(Nullable<LeadDublicateStatus> leadDublicateStatus) - Добавлен
Раздел Docflow:
PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - есть изменения в фильтре:
Project(Project project) - Добавлен
ProjectPermissionId(Nullable<Guid> projectpermissionId) - Добавлен
Раздел Projects:
Удалённые менеджеры объектов:
PublicAPI.Projects.Objects.ProjectDatesPredictionTask
PublicAPI.Projects.Objects.ProjectDurationPredictionTask
Добавленные менеджеры объектов:
PublicAPI.Projects.Objects.Prediction
PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask
PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask
PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, IEnumerable<Attachment> attachments)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, User commentAuthor)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, CommentActionModel model)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, TaskPriority priority, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetTaskEndDate(Int64 taskId, DateTime newEndDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.CompleteTask(Int64 taskId, CompleteTaskModel model)
ProjectPredictionWorkLogTaskFilterHelper PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter()
PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask.Filter() - есть изменения в фильтре:
ApproveStatuses(List<ProjectApprovalStatus> approveStatuses) - Добавлен
ProjectPlan(ProjectPlan projectplan) - Добавлен
ApproveStatus(Nullable<ProjectApprovalStatus> approveStatus) - Добавлен
Statuses(List<TaskBaseStatus> statuses) - Добавлен
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Добавлен
IsPlanned(Nullable<Boolean> isPlanned) - Добавлен
TaskId(Nullable<Int64> taskId) - Добавлен
TypeUid(Nullable<Guid> typeUid) - Добавлен
CompleteStatus(TaskCompleteStatus completeStatus) - Добавлен
Executors(User[] executors) - Добавлен
DatePeriod(DateTimeRange datePeriod) - Добавлен
TypeUids(Guid[] typeUids) - Добавлен
TypeUids(List<Guid> typeUids) - Добавлен
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Добавлен
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Добавлен
CreationAuthors(User[] creationAuthors) - Добавлен
ExcludedTypeUids(Guid[] excludedTypeUids) - Добавлен
ExcludedTypeUids(List<Guid> excludedTypeUids) - Добавлен
Subject(String subject) - Добавлен
Description(String description) - Добавлен
CreationDate(RelativeDateTime creationDate) - Добавлен
CreationAuthor(User creationAuthor) - Добавлен
Executor(User executor) - Добавлен
StartDate(DateTimeRange startDate) - Добавлен
EndDate(RelativeDateTime endDate) - Добавлен
Priority(TaskPriority priority) - Добавлен
ParentTask(TaskBase parentTask) - Добавлен
Status(TaskBaseStatus status) - Добавлен
EndWorkDate(RelativeDateTime endWorkDate) - Добавлен
InformTo(User[] informTo) - Добавлен
NotShowInLists(Boolean notShowInLists) - Добавлен
Category(TaskCategory category) - Добавлен
IsEmulation(Boolean isEmulation) - Добавлен
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Добавлен
ProjectIds(Int64[] projectIds) - Добавлен
ProjectIds(List<Int64> projectIds) - Добавлен
Project(Project project) - Добавлен
InnerDocument(Document innerDocument) - Добавлен
InnerDocuments(Document[] innerDocuments) - Добавлен
FilterByEntity(Boolean filterByEntity) - Добавлен
Contractor(Contractor contractor) - Добавлен
Contact(Contact contact) - Добавлен
Lead(Lead lead) - Добавлен
Sale(Sale sale) - Добавлен
InstanceId(Int64 instanceid) - Добавлен
ProcessHeaderId(Nullable<Int64> processHeaderId) - Добавлен
ActivityUids(Guid[] activityUids) - Добавлен
ActivityUids(List<Guid> activityUids) - Добавлен
SwimlaneUid(Nullable<Guid> swimlaneUid) - Добавлен
ProcessHeaderIdList(Int64[] processHeaderIdList) - Добавлен
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Добавлен
InstanceFilter(Filter instanceFilter) - Добавлен
Resolution(Resolution resolution) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask.Filter() - есть изменения в фильтре:
ProjectPlan(ProjectPlan projectplan) - Добавлен
Statuses(List<TaskBaseStatus> statuses) - Добавлен
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Добавлен
IsPlanned(Nullable<Boolean> isPlanned) - Добавлен
TaskId(Nullable<Int64> taskId) - Добавлен
TypeUid(Nullable<Guid> typeUid) - Добавлен
CompleteStatus(TaskCompleteStatus completeStatus) - Добавлен
Executors(User[] executors) - Добавлен
DatePeriod(DateTimeRange datePeriod) - Добавлен
TypeUids(Guid[] typeUids) - Добавлен
TypeUids(List<Guid> typeUids) - Добавлен
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Добавлен
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Добавлен
CreationAuthors(User[] creationAuthors) - Добавлен
ExcludedTypeUids(Guid[] excludedTypeUids) - Добавлен
ExcludedTypeUids(List<Guid> excludedTypeUids) - Добавлен
Subject(String subject) - Добавлен
Description(String description) - Добавлен
CreationDate(RelativeDateTime creationDate) - Добавлен
CreationAuthor(User creationAuthor) - Добавлен
Executor(User executor) - Добавлен
StartDate(DateTimeRange startDate) - Добавлен
EndDate(RelativeDateTime endDate) - Добавлен
Priority(TaskPriority priority) - Добавлен
ParentTask(TaskBase parentTask) - Добавлен
Status(TaskBaseStatus status) - Добавлен
EndWorkDate(RelativeDateTime endWorkDate) - Добавлен
InformTo(User[] informTo) - Добавлен
NotShowInLists(Boolean notShowInLists) - Добавлен
Category(TaskCategory category) - Добавлен
IsEmulation(Boolean isEmulation) - Добавлен
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Добавлен
ProjectIds(Int64[] projectIds) - Добавлен
ProjectIds(List<Int64> projectIds) - Добавлен
Project(Project project) - Добавлен
InnerDocument(Document innerDocument) - Добавлен
InnerDocuments(Document[] innerDocuments) - Добавлен
FilterByEntity(Boolean filterByEntity) - Добавлен
Contractor(Contractor contractor) - Добавлен
Contact(Contact contact) - Добавлен
Lead(Lead lead) - Добавлен
Sale(Sale sale) - Добавлен
InstanceId(Int64 instanceid) - Добавлен
ProcessHeaderId(Nullable<Int64> processHeaderId) - Добавлен
ActivityUids(Guid[] activityUids) - Добавлен
ActivityUids(List<Guid> activityUids) - Добавлен
SwimlaneUid(Nullable<Guid> swimlaneUid) - Добавлен
ProcessHeaderIdList(Int64[] processHeaderIdList) - Добавлен
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Добавлен
InstanceFilter(Filter instanceFilter) - Добавлен
Resolution(Resolution resolution) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter() - есть изменения в фильтре:
ProjectPlan(ProjectPlan projectplan) - Добавлен
Statuses(List<TaskBaseStatus> statuses) - Добавлен
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Добавлен
IsPlanned(Nullable<Boolean> isPlanned) - Добавлен
TaskId(Nullable<Int64> taskId) - Добавлен
TypeUid(Nullable<Guid> typeUid) - Добавлен
CompleteStatus(TaskCompleteStatus completeStatus) - Добавлен
Executors(User[] executors) - Добавлен
DatePeriod(DateTimeRange datePeriod) - Добавлен
TypeUids(Guid[] typeUids) - Добавлен
TypeUids(List<Guid> typeUids) - Добавлен
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Добавлен
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Добавлен
CreationAuthors(User[] creationAuthors) - Добавлен
ExcludedTypeUids(Guid[] excludedTypeUids) - Добавлен
ExcludedTypeUids(List<Guid> excludedTypeUids) - Добавлен
Subject(String subject) - Добавлен
Description(String description) - Добавлен
CreationDate(RelativeDateTime creationDate) - Добавлен
CreationAuthor(User creationAuthor) - Добавлен
Executor(User executor) - Добавлен
StartDate(DateTimeRange startDate) - Добавлен
EndDate(RelativeDateTime endDate) - Добавлен
Priority(TaskPriority priority) - Добавлен
ParentTask(TaskBase parentTask) - Добавлен
Status(TaskBaseStatus status) - Добавлен
EndWorkDate(RelativeDateTime endWorkDate) - Добавлен
InformTo(User[] informTo) - Добавлен
NotShowInLists(Boolean notShowInLists) - Добавлен
Category(TaskCategory category) - Добавлен
IsEmulation(Boolean isEmulation) - Добавлен
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Добавлен
ProjectIds(Int64[] projectIds) - Добавлен
ProjectIds(List<Int64> projectIds) - Добавлен
Project(Project project) - Добавлен
InnerDocument(Document innerDocument) - Добавлен
InnerDocuments(Document[] innerDocuments) - Добавлен
FilterByEntity(Boolean filterByEntity) - Добавлен
Contractor(Contractor contractor) - Добавлен
Contact(Contact contact) - Добавлен
Lead(Lead lead) - Добавлен
Sale(Sale sale) - Добавлен
InstanceId(Int64 instanceid) - Добавлен
ProcessHeaderId(Nullable<Int64> processHeaderId) - Добавлен
ActivityUids(Guid[] activityUids) - Добавлен
ActivityUids(List<Guid> activityUids) - Добавлен
SwimlaneUid(Nullable<Guid> swimlaneUid) - Добавлен
ProcessHeaderIdList(Int64[] processHeaderIdList) - Добавлен
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Добавлен
InstanceFilter(Filter instanceFilter) - Добавлен
Resolution(Resolution resolution) - Добавлен
SearchString(String searchstring) - Добавлен
Id(Int64 id) - Добавлен
Query(String query) - Добавлен
Find() - Добавлен
PublicAPI.Projects.ProjectPlanItem.Filter() - есть изменения в фильтре:
NotIds(Int64[] notIds) - Добавлен
NotIds(List<Int64> notIds) - Добавлен
ItemTypes(List<ProjectPlanItemType> itemTypes) - Добавлен
Statuses(List<TaskBaseStatus> statuses) - Добавлен
HasChildrens(Nullable<Boolean> hasChildrens) - Добавлен
StartPredictionDate(DateTimeRange startPredictionDate) - Добавлен
EndPredictionDate(RelativeDateTime endPredictionDate) - Добавлен
PredictionWorkLog(Nullable<WorkTime> predictionWorkLog) - Добавлен
OriginalItem(ProjectPlanItem originalItem) - Добавлен
PublicAPI.Projects.ProjectTaskBase.Filter() - есть изменения в фильтре:
Obsolete(Boolean obsolete) - Добавлен
StartPredictionDate(DateTimeRange startPredictionDate) - Добавлен
EndPredictionDate(RelativeDateTime endPredictionDate) - Добавлен
PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - есть изменения в фильтре:
Obsolete(Boolean obsolete) - Добавлен
StartPredictionDate(DateTimeRange startPredictionDate) - Добавлен
EndPredictionDate(RelativeDateTime endPredictionDate) - Добавлен
PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - есть изменения в фильтре:
Obsolete(Boolean obsolete) - Добавлен
StartPredictionDate(DateTimeRange startPredictionDate) - Добавлен
EndPredictionDate(RelativeDateTime endPredictionDate) - Добавлен
Раздел Enums:
Добавленные перечисления:
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Closed
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Deleted
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.New
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.InHand
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Qualified
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Unqualified
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Dublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.New
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.PossibleDublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.NotDublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.Dublicate
PublicAPI.Enums.Projects.RelateLinks
PublicAPI.Enums.Projects.RelateLinks.RealTime
PublicAPI.Enums.Projects.RelateLinks.AllowLinks
PublicAPI.Enums.Projects.RelateLinks.Early
PublicAPI.Enums.CRM.LeadCompareType
PublicAPI.Enums.CRM.LeadCompareType.Equal
PublicAPI.Enums.Metadata.CopyAction.SaveRef
1. Реализовано удаление вложенных подпроцессов.
2. Свойство типа "Цвет":
- дефолтный цвет свойста изменен на белый;
- цвет шрифта автоматически изменяется в зависимости от интенсивности цвета;
- при изменении hex-coda цвет динамически меняется.
3. Исправлена ошибка при попытке открытия файла в переменной типа "Вложение".
4. Исчезла кнопка настройки таблицы в разделе "Трудозатраты - Поиск трудозатрат".
5. При использовании временных показателей и метрик процесса в портлетах "Спидометр", "График", "Гистограмма" добавлена возможность натсроить единицы измерения отображения информации на графике.
Кроме выделения цветом в "гуглтип" было добавлено соответствующее сообщение.