logo

Список критичных изменений системы версий 3.8.х

Список исправлений к версии 3.8.41

Нет критичных изменений.

Список исправлений к версии 3.8.40

Нет критичных изменений.

Список исправлений к версии 3.8.39

Нет критичных изменений.

Список исправлений к версии 3.8.38

Нет критичных изменений.

Список исправлений к версии 3.8.37

Нет критичных изменений.

Список исправлений к версии 3.8.36

Нет критичных изменений.

Список исправлений к версии 3.8.35

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)

Список исправлений к версии 3.8.34

Нет критичных изменений.

Список исправлений к версии 3.8.33

API кода и публичных классов

Настройка ограничений размера в свойствах

  1. Изменена логика настройки ограничений в свойствах. Если в свойстве установлен флаг "Может иметь пустое значение" и указано минимальное и максимальное значение свойства, при не заполненном свойстве проверка на мин/макс не делается.
  2. Для всех числовых типов если флаг "Может иметь пустое значение" НЕ установлен, незаполненное свойство автоматически заполняется значением "0".
  3. Для дробных чисел добавлено ограничение по точности, т.е. позволяется вводить столько знаков после запятой, сколько указано в настройках свойства

PublicAPI

Нет изменений

Список исправлений к версии 3.8.32

Нет критичных изменений.

Список исправлений к версии 3.8.31

API кода и публичных классов

Округление чисел с использование сценариев

При наличии сценария при изменении значения для целых и дробных чисел, если ввести значение в поле с большей точностью, чем указано в настройках свойства (ввести дробное значение для целого числа), то в сценарий придет уже округленное значение согласно настроек.

Дизайнер, Модель данных, Процессы Workflow

Сделана проверка введённых пользователем имён классов и таблиц в БД на форме создания нового процесса в дизайнере. Вводимые в эти поля идентификаторы должны начинаться с латинской буквы, далее могут использоваться цифры, латинские буквы или знаки подчёркивания "_". Дополнительно, для имён классов запрещено использование ключевых слов языка C#, а для имён таблиц БД - ключевых слов языка запросов используемой СУБД.

Было:

При создании процесса в имени класса и имени таблицы в БД различных структур процесса можно было указать любые символы, и кириллицу в том числе. Проверки на корректность и сообщения об ошибке не выводилось, а сам процесс сохранялся. Однако такой процесс потом не публиковался, а имя класса в дизайнере поменять уже было нельзя.

Стало:

Сделана проверка введённых пользователем имён классов и таблиц в БД на форме создания нового процесса в дизайнере с выводом сообщений об ошибках.

PublicAPI

Нет изменений

Список исправлений к версии 3.8.30

API Кода. Публичные методы и интерфейсы

Представления для типов Email и Телефон

Добавлены представления для отображения отдельных Email и Телефона (не списком). Переработаны представления для отображения списков Email и Телефонов.

Представление Site.cshtml

Представление DisplayTemplates/Site.cshtml было удалено из системы, его логика перенесена в представление DisplayTemplates/Uri.cshtml

Изменение функций генератора шаблонов

  1. Изменено наименование следующих функций:
    1. RemindTime изменено на GetReminderTimeSpan
    2. TransformFile изменено на TransformFileToSignedText
    3. IsProjectTemplate изменено на IsProjectTaskTemplate
    4. GetObject изменено на LoadEntityByWorkLogItem
    5. ObjectDisplayName изменено на GetEntityDisplayNameByWorkLogItem
  2. В стандартные функции генератора шаблона EleWise.TemplateGenerator.Function.DefaultFunctions были перенесены следующие функции EleWise.ELMA.Tasks.Notifications.TaskTemplateGeneratorFunctions.HtmlString и EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.StringCut.
  3. Был удален класс EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.

Пользовательский интерфейс

Доработка прав доступа к страницам

При настройке портлетных страниц у пользователей, имеющих права на редактирование, появилась возможность переключиться на редактирование общих настроек.

Настройка прав доступа к странице возможна только с полными правами к странице и в режиме редактирования общих настроек.

Проекты

Выбор пользователей (исполнитель/соисполнитель/контролер) для проектных задач при публикации плана проекта. В случае если в задаче плана установлена проектная роль с количеством участников более 1, система предлагала при каждой публикации плана выбрать конкретного пользователя/пользователей из списка доступных. Теперь выбор пользователей не осуществляется для закрытых задач и для задач, в которых уже выбран пользователь в ходе одной из прошлых публикаций плана.

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.8.29

Нет критичных изменений.

Список исправлений к версии 3.8.28

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 часов назад, будут автоматически удаляться.

Изменение работы фильтров объектов

  1. В интерфейсе EleWise.ELMA.BPM.Web.Common.Controllers. IFilterController изменен метод FilterFields: добавлен параметр string filterGridId = "".
  2. В html-разметке формы фильтров введены уникальные id объектов и скриптов.

Пользовательский интерфейс

Переназначение задач по бизнес-процессам

Только исполнитель задачи и его начальники могут переназначить задачу (при отсутствии запрета на переназначение в процессе). Инициатор процесса, являющийся автором задачи, лишен такой привилегии.

PublicAPI

Список исправлений к версии 3.8.27

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);
    }
}

Пользовательский интерфейс

Отображение родительских задач на диаграмме Гантта

Родительские задачи теперь отображаются по-разному (в зависимости от того, фазовая задача, или нет).

Общие доработки

  • Исправлено форматирование текста в поле Описание задачи.
  • Добавлено объединение ячеек в колонке для одиночных объектов (только заголовок, только поле для редактирования и т.п.).
  • Добавлена возможность скрывать заголовок блока, грида для таблиц с настраиваемой шириной колонок.

ELMA плагин для Visual Studio

В окно «О программе» добавлен пункт «Версия плагина», оповещающая пользователя о текущей версии плагина. Если версии плагина и сервера не совпадают, при открытии окна «О программе» пользователь получит соответствующее предупреждение.

Реализована возможность смены папки дизайнера/веб сервера/менеджера пакетов. Для активации соответствующих кнопок, необходимо запустить Visual Studio от имени администратора.

PublicAPI

Изменений нет.

Список исправлений к версии 3.8.26

Публичные методы и интерфейсы 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);

Пользовательский интерфейс

Настройки форм в процессах

В конструкторе форм для задач процессов появились для добавления все элементы, доступные для задач, в том числе Вкладка журнала трудозатрат по задаче и Список трудозатрат по задаче.

При этом в конструкторе форм для запуска процесса были убраны лишние элементы, такие как Кнопки переходов по процессу, Информация о процессе и Контейнер свойств контекста процесса.

Задачи

  • При создании подзадачи с несколькими исполнителями в историю пишется одна запись со всеми созданными задачами.
  • Добавлен запрет на создание просроченных подзадач.

Настройки системы

В файле Settings.config добавлено описание для параметров, позволяющих настраивать приложение. Добавлено описание как для параметров по умолчанию, так и для параметров, которые являются ситуационными (скрытыми).

PublicAPI

Раздел Projects:

PublicAPI.Projects.Objects.MaterialResource.Filter() - есть изменения в фильтре:

NotIds(Int64[] notIds) - Добавлен

NotIds(List<Int64> notIds) - Добавлен

Список исправлений к версии 3.8.25

Публичные методы и интерфейсы

  1. Точка расширения EleWise.ELMA.BPM.Web.Common.ExtensionPoints. IFilterPortletGridId помечена как устаревшая.

Пользовательский интерфейс

Настройки исходящей почты

В настройках исходящей почты в разделе администрирования вместо свойства «Использовать ли SSL» введено новое свойство «Защита соединения», которая имеет 3 варианта значения: «Нет», «SSL», «TLS». При загрузке настроек из базы старые параметры автоматически конвертируются в новые: если в свойстве «Использовать ли SSL» было введено значение «Нет», тогда «Защита соединения» примет значение «Нет», в противном случае в зависимости от значения поля «Порт для отправки сообщений» будет выбрано соответствующее значение для поля «Защита соединения».

Экспорт карты диаграммы

Теперь изображение экспортированной карты диаграммы содержит наименование диаграммы в заголовке.

Процессы

Добавлены настройки прерывания дочерних процессов при множественном запуске операции.

Добавлено отображение подписчиков на тип документа

Было:

Стало:

Теперь подписчики на тип документа отображаются во всплывающем окне в меню документа: «Действия» – «Просмотр подписок»

Список исправлений к версии 3.8.24

Интерфейсы API

Убрана возможность создавать в сценарии документ без указания конкретного типа

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.8.23

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)

Пользовательский интерфейс

Конвертация возможности

При конвертации возможности появился вариант не создавать ни сделку, ни взаимоотношение. При выборе создания сделки или взаимоотношения теперь проверяется обязательность заполнения полей на соответствующей форме.

ELMA плагин для Visual Studio

Убрана возможность создавать ELMA Entity в плагине ELMA для Visual Studio. Возможность редактировать существующие ELMA Entity осталась.

PublicAPI

Изменений нет.

Список исправлений к версии 3.8.22

Нет критичных изменений.

Список исправлений к версии 3.8.21

Нет критичных изменений.

Список исправлений к версии 3.8.20

Пользовательский интерфейс

Дополнительный фильтр EQL на документах

Наложенный дополнительный фильтр EQL на свойство с документами фильтрует в том числе последние использованные документы

Заблокированные пользователи в пользовательской группе

При выборе пользователей из пользовательской группы заблокированные пользователи исключаются.

Поиск пользователей по элементу оргструктуры

Если в поиске пользователей в поле оргструктуры выбрать отдел, то в результаты поиска попадут все сотрудники отдела и подчиненных подразделений. В администрировании в фильтре пользователей есть параметр, указывающий, что нужно искать пользователей, которые непосредственно включены в отдел (без учета подчиненных подразделений).

Привязка процесса к смене стадий сделки в активной воронке продаж

При настройке процессов в воронке продаж можно выбирать, в том числе, процессы, которые недоступны для запуска текущему пользователю.

Динамическое текстовое поле

Текстовые поля в веб-интерфейсе можно изменять по высоте при вводе данных.

Вложенные свойства объекта в блоке

В блоках можно настроить вывод вложенных свойств объекта, они будут отображаться в списке записей.

Проекты

1. Появилась возможность группового назначения контроля в плане проекта

2. На вкладке подзадачи Проектных задач подзадачи из устаревших и производных от них неопубликованных версий плана отображаются с пометкой “(устаревший план)”

Модель данных

1. В интерфейс EleWise.ELMA.Projects.Models.IProjectTaskBase добавлено свойство Obsolete, указывающее, что данная задача не относится к текущей версии плана.

Поддержка нового плагина Рутокен

В связи с отключением NPAPI в Chrome, код интеграции с Рутокен был переписан на асинхронные вызовы.

Изменение работы отчетов

  1. Убран кэш отчетов FastReport EleWise.ELMA.Reports.Services. FastReportRunCache.
  2. Системные отчеты после импорта публикуются автоматически.

Изменение работы метаданных

  1. Введено ограничение на именование колонок таблиц для пользовательских свойств метаданных (Uid и TypeUid).

PublicAPI

Раздел Projects:

PublicAPI.Projects.ProjectTaskBase.Filter() - есть изменения в фильтре:

Obsolete(Boolean obsolete) - Добавлен

PublicAPI.Projects.ProjectTaskBase.Filter() - есть изменения в фильтре:

Obsolete(Boolean obsolete) - Добавлен

PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - есть изменения в фильтре:

Obsolete(Boolean obsolete) - Добавлен

Список исправлений к версии 3.8.15

Пользовательский интерфейс

Настройка таймаута сессий для именованных лицензий

При варианте активации с конкурентными лицензиями в администрировании добавлена отдельная настройка таймаута для именованных лицензий.

Данная настройка суммирует время таймаута с основной настройкой. Если таймаут не установлен, то сессии именных лицензий не будут закрываться.

Выбор пользователя в фильтре

При выборе пользователя в фильтре заблокированные пользователи выводятся в отдельной группе в конце списка, в окне поиска пользователей они выводятся в алфавитном порядке со значком блокирования на фотографии

API Кода. Публичные методы и интерфейсы

Добавлена перегрузка для метода GetEntityActions(EntityMetadata metadata, bool inherit, bool onlyBase, bool loadextensions) в MetadataLoader, с помощью которой можно получить действия сущности с учетом расширений.

PublicAPI

Раздел Docflow:

PublicAPI.Docflow.Objects.Nomenclature.NomenclatureCache.Filter() - есть изменения в фильтре:

UseRegistrationPlacePermissions(Nullable<Boolean> useRegistrationPlacePermissions) - Добавлен

Раздел Portal:

Добавленные методы:

Void PublicAPI.Portal.Objects.Tasks.Question.AddComment(Question task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Portal.Objects.Tasks.Question.AddComment(Question task, String comment, User commentAuthor)

Void PublicAPI.Portal.Objects.Tasks.Question.AddComment(Question task, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.AddComment(Question task, CommentActionModel model)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime endDate)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, Comment comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, Comment comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, TaskPriority priority, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, Comment comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetTaskEndDate(Int64 taskId, DateTime newEndDate)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLog(Int64 taskId, Int64 minutes)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogHours(Int64 taskId, Int64 hours)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogDays(Int64 taskId, Int64 days)

Void PublicAPI.Portal.Objects.Tasks.Question.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)

Void PublicAPI.Portal.Objects.Tasks.Question.CompleteTask(Int64 taskId, CompleteTaskModel model)

Список исправлений к версии 3.8.14

Пользовательский интерфейс

Фильтрация по типу Файл (бинарный файл)

При добавлении в фильтр сущности поля типа Файл (бинарный файл) в веб части можно ввести только в текстовом поле идентификатор искомого файла, в случае указания не правильного идентификатора поиск не выдаст результаты.

Представления razor при копировании форм в конструкторе форм

При копировании форм в конструкторе форм все представления разор, которые используются в данной форме, копируются локально для объекта в новую форму. При копировании дочерней формы в другую дочернюю форму, копируются только те представления, которые настроены в копируемой форме.

API Кода. Публичные методы и интерфейсы

  1. При невозможности выполнить действие сервер возвращает ошибку HTTP с кодом 409 Conflict
  2. Изменён метод передачи данных из POST в GET модуля «Сообщения» для метода /Posts/GetMyFavorite

PublicAPI

Раздел KPI:

Добавленные методы:

Void PublicAPI.CRM.Contractor.AddComment(Contractor contractor, String comment, User commentAuthor)

Void PublicAPI.CRM.Contact.AddComment(Contact contact, String comment, User commentAuthor)

Void PublicAPI.CRM.Lead.AddComment(Lead lead, String comment, User commentAuthor)

Void PublicAPI.CRM.Sale.AddComment(Sale sale, String comment, User commentAuthor)

Void PublicAPI.CRM.Inpayment.AddComment(Inpayment inpayment, String comment, User commentAuthor)

Void PublicAPI.CRM.Relationship.AddComment(Relationship relationship, String comment, User commentAuthor)

Раздел KPI:

Добавленные методы:

Void PublicAPI.KPI.Objects.KpiTask.AddComment(KpiTask task, String comment, User commentAuthor)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, String comment, User commentAuthor)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, String comment, User commentAuthor)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.AddComment(SMARTTask task, String comment, User commentAuthor)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.AddComment(SMARTTask task, String comment, User commentAuthor)

Раздел Docflow:

Добавленные методы:

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.AddComment(SendDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.AddComment(AssignDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.AddComment(RegistrationDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.AddComment(CreateDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.AddComment(SendToAcquaintanceTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.AddComment(SendToApprovementTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendDocumentTask.AddComment(SendDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.AssignDocumentTask.AddComment(AssignDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.RegistrationDocumentTask.AddComment(RegistrationDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.CreateDocumentTask.AddComment(CreateDocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToAcquaintanceTask.AddComment(SendToAcquaintanceTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToApprovementTask.AddComment(SendToApprovementTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.AddComment(DocumentAcquaintanceTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.AddComment(DocumentTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.AddComment(ResolutionTask task, String comment, User commentAuthor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.AddComment(DocumentApprovementTask task, String comment, User commentAuthor)

Раздел Processes:

Добавленные методы:

Void PublicAPI.Processes.WorkflowInstance.AddComment(WorkflowInstance instance, String comment, User commentAuthor)

Void PublicAPI.Processes.WorkflowTaskBase.AddComment(TaskBase task, String comment, User commentAuthor)

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.AddComment(WorkflowTask task, String comment, User commentAuthor)

Раздел Portal:

Добавленные методы:

Void PublicAPI.Portal.TaskBase.AddComment(TaskBase task, String comment, User commentAuthor)

Void PublicAPI.Portal.TaskBase.Task.AddComment(Task task, String comment, User commentAuthor)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.AddComment(ApprovalTask task, String comment, User commentAuthor)

PublicAPI.Portal.CalendarEvent.Filter() - есть изменения в фильтре:

ConfirmParticipation(Boolean confirmParticipation) - Добавлен

PublicAPI.Portal.Objects.Calendar.CalendarEventPeriodical.Filter() - есть изменения в фильтре:

ConfirmParticipation(Boolean confirmParticipation) - Добавлен

Раздел Projects:

Добавленные методы:

Void PublicAPI.Projects.ProjectTaskBase.AddComment(ProjectTaskBase task, String comment, User commentAuthor)

Void PublicAPI.Projects.ProjectTask.AddComment(ProjectTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Tasks.AddComment(ProjectTaskBase task, String comment, User commentAuthor)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.AddComment(ProjectTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.AddComment(Milestone task, String comment, User commentAuthor)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.AddComment(WorkflowProjectTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Objects.ProjectComplexTask.AddComment(ProjectComplexTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Objects.CreateProjectTask.AddComment(CreateProjectTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.AddComment(ProjectPlanApprovalTask task, String comment, User commentAuthor)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.AddComment(ProjectBudgetApprovalTask task, String comment, User commentAuthor)

Список исправлений к версии 3.8.13

Пользовательский интерфейс

Добавлена возможность удаления мероприятий

Добавлена возможность поворота страницы в предпросмотр PDF- файла


Портлет «Решение задач»

При переназначении задачи с документом в случае недостаточности прав на документ выводится окно с предоставлением прав, аналогично работе переназначения с карточки задачи.

Список исправлений к версии 3.8.12

Изменения в экспорте-импорте объектов

1. Реализован алгоритм по переносу локальных сборок (которые подключены в скрип-модуле объекта) с сервера-источника на сервер-приёмник.

2. При импорте объектов, содержащих глобальные модули, будет выскакивать окно с оповещением. Импорт глобальных модулей следует проводить ОТДЕЛЬНО. Если импортировать объекты с глобальными модулями на сервер-приемник, где таковых глобальных модулей нет, импорт будет отменён с соответствующей ошибкой.

Пользовательский интерфейс

Выбор даты завершения для задачи при переназначении

При переназначении задач по бизнес-процессам, документообороту и др. появилась возможность не указывать сроки задачи (если они не были установлены, то поля останутся пустыми). В некоторых типах задач (например, SMART-задача) при переназначении сроки вообще нельзя менять: поля не доступны в данной форме.

Портлет «Решение задач»

В портлет «Решение задач» было добавлено отображение задач подписания документа. Если в процессной задаче выбрано «Требовать ЭЦП», тогда кнопки будут скрыты и выполнять задачу необходимо с карточки задачи. Аналогичное поведение будет наблюдаться, если в Администрировании при подписании документов выбрано «Требовать ЭЦП». Если в процессной задаче выбрано «Подписывать текущую версию», тогда в окне будет выбрана сразу текущая версия документа. Если у пользователя не будет хватать прав доступа, то в popup-окне появится соответствующая ошибка.

В портлете «Решение задач» изменен дизайн popup-окна для вынесения резолюции по задаче рассмотрения документа.

Проекты

Появилась возможность ввести наименование при создании/копировании версий плана проекта и бюджета.

Дизайнер

При добавлении конфигурации в дизайнере теперь доступно только удаленное подключение к серверу. Локальное подключение к конфигурации больше не поддерживается.

PublicAPI

Раздел KPI:

Добавленные методы:

Void PublicAPI.KPI.Objects.KpiTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.KPI.Objects.KpiTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.KPI.Objects.KpiTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Раздел Docflow:

Добавленные методы:

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.AssignDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.RegistrationDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.CreateDocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.DocumentsBPMN.SendToApprovementTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Раздел Processes:

Добавленные методы:

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Раздел Portal:

Добавленные методы:

Void PublicAPI.Portal.TaskBase.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Portal.TaskBase.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Portal.TaskBase.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Portal.TaskBase.Task.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Portal.TaskBase.Task.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Portal.TaskBase.Task.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Раздел Projects:

Добавленные методы:

Void PublicAPI.Projects.ProjectTaskBase.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.ProjectTaskBase.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.ProjectTaskBase.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.ProjectTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.ProjectTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.ProjectTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Budget PublicAPI.Projects.Budgets.BudgetBudgets.Create(Project project, Action<IBudget> preSave)

Budget PublicAPI.Projects.Budgets.BudgetBudgets.CreateFrom(Budget oldBudget, Boolean cloneItems, Project newProject, Action<IBudget> preSave)

Void PublicAPI.Projects.Objects.ProjectComplexTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.Objects.ProjectComplexTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.Objects.ProjectComplexTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.Objects.CreateProjectTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.Objects.CreateProjectTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.Objects.CreateProjectTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)

Список исправлений к версии 3.8.11

Публичный интерфейс методов

Добавлены методы вычислений с учетом календаря проекта:

    /// <summary> /// Проверить является ли дата рабочим днем /// </summary> /// <param name="dateTime">День</param>
    /// <returns><c>true</c>, если дата является рабочим днём</returns> public bool IsWorkDay(DateTime
    dateTime) /// <summary> /// Вычислить дату и время по истечении срока в соответствии с календарем /// </summary>
    /// <param name="startTime">Дата начала</param> /// <param name="interval">Интервал времени</param>
    /// <returns>Дата истечения срока</returns> public DateTime EvalTargetTime(DateTime startTime, TimeSpan interval)
    /// <summary> /// Вычислить дату и время по истечении срока в соответствии с календарем /// </summary> /// <param
    name="startTime">Дата начала</param> /// <param name="intervalHours">Интервал в часах</param> /// <returns>Дата
    истечения срока</returns> public DateTime EvalTargetTime(DateTime startTime, double intervalHours) /// <summary>
    /// Вычислить интервал рабочего времени между датами (значение в днях, часах, минутах и секундах) /// </summary> ///
    <param name="startTime">Дата начала</param> /// <param name="endTime">Дата окончания</param> ///
    <returns>Интервал рабочего времени</returns> public TimeSpan EvalWorkTimeDifference(DateTime startTime, DateTime
    endTime) /// <summary> /// Вычислить длительность в рабочих днях между датами. Рабочим днём считается день в котором
    есть рабочие часы. Независимо от их длительности. /// </summary> /// <param name="startTime">Дата начала</param>
    /// <param name="endTime">Дата окончания</param> /// <returns>Интервал рабочего времени</returns>
    public int EvalWorkDaysDifference(DateTime startTime, DateTime endTime) /// <summary> /// Вычислить дату завершения по дате начала и длительности /// </summary> /// <param name="start"></param> /// <param name="durationDays"></param>
    /// <returns></returns> public DateTime EvalEndDateByStartAndDuration(DateTime start, long durationDays) ///
    <summary> /// Получение даты конца предыдущего рабочего дня /// </summary> /// <param name="date">Исходная
    дата</param> /// <returns>Результирующая дата</returns> public DateTime GetPreviousWorkDayEnd(DateTime
    date) /// <summary> /// Получение даты начала следующего рабочего дня /// </summary> /// <param name="date">Исходная
    дата</param> /// <returns>Результирующая дата</returns> public DateTime GetNextWorkDayStart(DateTime date)
    /// <summary> /// Получить начало рабочего времени (если выходной - 0) /// </summary> /// <param name="day">День</param>
    /// <returns>Начало рабочего времени</returns> public TimeSpan GetWorkTimeStart(DateTime day) /// <summary>
    /// Получить конец рабочего времени (если выходной - 0) /// </summary> /// <param name="day">День</param>
    /// <returns>Конец рабочего времени</returns> public TimeSpan GetWorkTimeEnd(DateTime day) /// <summary>
    /// Добавление к дате определенного количества дней с учетом календаря (без учеты времени работы) /// </summary> ///
    <param name="startTime">Исходная дата</param> /// <param name="addDays">Добавляемое/вычитаемое количество
    дней</param> /// <returns>Результирующая дата</returns> public DateTime AddDays(DateTime startTime, long
    addDays) /// <summary> /// Получить продолжительность рабочего дня /// </summary> /// <returns>Продолжительность
    рабочего дня</returns> public TimeSpan GetWorkTimeInDay(DateTime day) /// <summary> /// Количество минут в рабочем
    дне /// </summary> /// <param name="day">День</param> /// <returns>Количество минут</returns>
    public long MinutesInDay(DateTime day)

Изменение работы экспорта-импорта

1. Добавлен перенос регламентов для процессов .

2. Добавлен перенос папок пользовательских расширений .

3. Изменен интерфейс действий с объектами при импорте EleWise.ELMA.Deploy.Import.ExtensionPoints. IEntityImportSaveActions:

  • метод ExecPostSaveActions(IEntity entity, Type type, Dictionary<string, object> values, Dictionary<string, string> serviceData, List<LinksDictionaryItem> links) заменен методом ExecPostSaveActions(IEntity entity, Type type, Dictionary<string, object> values, Dictionary<string, string> serviceData, LinksDictionary links).

4. Изменен класс сериализатора экспорта-импорта EleWise.ELMA.Deploy.Serialization.EntityXmlSerializer :

  • тип возвращаемого значения функции Deserialize(object obj, Dictionary<string, object> serObj) изменен на EleWise.ELMA.Deploy.Import.Links. LinksDictionary;
  • убрана функция ConvertFromSerializable(Dictionary<string, object> serObj, Type entityType, out IEntity tpItem);
  • убрана функция ConvertFromSerializable(object obj, Dictionary<string, object> serObj);

Общие доработки

1. Массовое вложение документов в задачу

2. Заполнение темы задачи при вложении документа.

3. Портлет «Решение задач»

В портлет «Решение задач» было добавлено отображение задач предварительного согласования задач с возможностью быстрого согласования/отказе в согласовании задач или согласования/отказе в согласовании задачи через popup-окно.

Public API

Нет изменений в Public API

Список исправлений к версии 3.8.10

Нет критичных изменений или изменений в PublicAPI

Список исправлений к версии 3.8.9

Пользовательский интерфейс

1. Изменены шаблоны отображения/редактирования для свойств типа План проекта и Бюджет проекта.

Раньше клик по наименованию плана выполнял переход на страницу просмотра плана, а клик по иконке справа – открывал план во всплывающем окне с возможностью редактирования и сохранения (если свойство с планом редактируемое), либо только для просмотра (если свойство с планом выводится на просмотр).

Теперь клик по наименованию плана открывает его во всплывающем окне с возможностью редактирования/просмотра, а клик по иконке справа - переход на страницу редактирования/просмотра плана (в зависимости от того, в каком режиме выводится свойство -редактирование или просмотр).
Аналогичные изменения коснулись шаблонов отображения свойств типа Бюджет проекта.

2. В фильтр плана проекта ‘задачи по ресурсу’ добавлена возможность множественного выбора ресурсов.

3. В список фильтров для плана проекта добавлены:

  • настраиваемый фильтр по срокам задач – указывается временной промежуток (дата начала, окончания) и выполняется поиск задач плана, которые попадают в выбранный интервал;
  • фильтр по просроченным задачам – задачи плана, которые опубликованы и опубликованная задача просрочена – фильтр только для режима просмотра плана.

4. Для режима импорта плана проекта добавлена настройка “ Импортировать задачи верхнего уровня как этапы ”. Данная настройка устанавливает переключатель "Этап проекта" в положение "Да" для всех импортируемых задач верхнего уровня. Если галочку не ставить, переключатель будет установлен согласно данным из импортируемого файла. По умолчанию перед началом импорта данная настройка установлена в состоянии, соответствующем настройке типа проекта “Устанавливать Этап проекта в Да для новых задач ”.

Публичные методы и интерфейсы

Добавлен интерфейс EleWise.ELMA.BPM.Web.Common.ExtensionPoints. IEntitySelectGroupResolver – точка расширения для группировки сущностей в выпадающем списке по заданным критериям.

bool CheckType(Guid typeUid); - метод для проверки на возможность использования точки расширения по Uid типа сущности

IEnumerable<EntitySelectGroup> GetGroups(Guid typeUid, string text, IEnumerable<IEntity> entities); - метод выполняет отбор сущностей и возвращает список групп, где typeUid - Uid типа сущности, text - введенный в выпадающем списке текст, entities - список сущностей для отбора в группы.

Редактор сценариев

1. Добавлена подсветка синтаксических ошибок. Добавлены тултипы по синтаксическим ошибкам. Добавлено отображение синтаксических ошибок на скролл баре (с возможностью клика и перехода к ошибке). Добавлены комбинации клавиш Alt PageUp и Alt PageDown для быстрого перехода к ближайшей синтаксической ошибке.

2. Обновлено контекстное меню – добавлены две новых команды: форматирование выделенного текста (Ctrl I) и форматирование всего документа (Ctrl Shift I). ВАЖНО!!! -> форматирование кода не будет работать, если в документе присутствуют синтаксические ошибки.

3. Добавлена подсветка скобочек (фигурные, круглые, квадратные). См. скрин выше

4. Добавлена поддержка регионов и сворачиваемого кода

5. Добавлено автоформатирование кода (переносы, отступы, автозакрытие скобочек, строк)

6. Из ошибок компиляции убраны предупреждения об отсутствующих комментариях.

7. Добавлена поддержка добавления веб-сервисов с basic-авторизацией. Добавлен прогресс бар при добавлении веб-сервиса (на легковесных веб-сервисах он будет почти незаметен)

8. Расширен стандартный набор ссылок в процессах

Проекты

При настройке переходов по жизненному циклу в случае выбора действия «Запустить процесс», появилась возможность включать родительские типы во входящих контекстных переменных проекта.

При подборе списка процессов запускаемых с карточки проекта добавилась возможность ограничить список в соответствии со стадиями жизненного цикла проекта.

При подборе списка процессов запускаемых с карточки проекта, появилась возможность включать родительские типы во входящих контекстных переменных проекта.

PublicAPI

Раздел KPI:

PublicAPI.KPI.Objects.Models.LinkWorkflowKpi.Filter() - есть изменения в фильтре:

IndicatorId(Guid indicatorid) - Добавлен

Раздел Docflow:

Добавленные методы:

Int64 PublicAPI.Docflow.Objects.Nomenclature.Numerator.GetNewId(Numerator numerator, Boolean save)

Раздел Processes:
PublicAPI.Processes.Objects.WorkflowProcessListRunning.Filter() - есть изменения в фильтре:

ProcessHeader(ProcessHeader processHeader) - Добавлен

Список исправлений к версии 3.8.8

Пользовательский интерфейс

Добавлена возможность запрета ввода значений не из базы ФИАС в поля адреса.

Редактор сценариев

1. Добавлены тултипы (всплывающие подсказки) в редактор кода. Информация в них аналогична информации в подсказках к автокомплиту.

2. Добавлена комбинация клавиш Ctrl Shift Space, которая открывает всплывающие окно с подсказкой по параметрам метода, в том числе и по перегрузкам.

3. Изменена сортировка значений автокомплита. Теперь все локальные поляметодысвойства (и т.д.) отображаются в первую очередь.

Список исправлений к версии 3.8.7

Пользовательский интерфейс

Появилась возможность массового назначения контроля задачам в плане проекта

Рис. 1. План проекта. Контекстное меню

Рис. 2. План проекта. Диалоговое окно "Групповое назначение"

Редактор сценариев

1. Добавлено контекстное меню (глобальные модули, процессы).

Рис. 3. Редактор сценариев. Контекстное меню

2. Добавлена сортировка дерева глобального модуля.

Рис. 4. Глобальные модули. Дерево

Добавлен шаблон примера готового модуля в плагин

При создании нового проекта через плагин для Visual Studio доступен шаблон готового модуля, который содержит в себе:

1. Серверная часть:

1.1. Простой объект со стандартными полями (наименование, автор создания, автор изменения, дата создания, дата изменения) и действием Rename (переименовать);

1.2. Менеджер объекта с действием переименования объекта;

2. Веб-часть:

2.1. Пункт меню для модуля;

2.2. Необходимые представления (таблица с записями объекта (грид), поиск по таблице, карточка объекта, перименование объекта при помощи всплывающего (попап) окна);

2.3. Контроллер с необходимыми методами для работы с таблицей, поиском, действиями в таблице, а также для переименования объекта и отображения его карточки.

Рис. 5. Новый пункт в установленных шаблонах ELMA

Рис. 6. Структура решения

Рис. 7. Пункт меню модуля, таблица (грид) со списком объектов и поиск по таблице

Рис. 8. Карточка объекта с основными полями, действие переименования объекта во всплывающем окне

Список исправлений к версии 3.8.6

Публичные методы и интерфейсы

Изменена сигнатура методов:

в классе NHibernate.QueryExtensions (из сборки EleWise.ELMA.SDK):

вместо

void ExecuteUpdate(this IQuery query, bool cleanUpCache)

теперь

int ExecuteUpdate(this IQuery query, bool cleanUpCache)

(в качестве результата возвращается количество измененных записей).

Добавлен класс DynamicEntityViewModel<T> производный от EntityModel<T>. Данный класс представляет собой модель отображения сущности с применением динамических форм. Использование динамических форм позволяет добавлять на форму сценарии, исполняемые при изменении значения свойства или при нажатии на кнопку.

Классы CommonInfoModel, ContractorBaseModel<T>, DocumentInfo, ProjectViewModel, SaleModel и SaleProductsModel теперь унаследованы не от EntityModel<T>, а от DynamicEntityViewModel<T>. Из перечисленных классов удалены методы FormViewItem FormViewItem(ViewType viewType) использовавшиеся в представлениях для получения формы. Вместо этого форма теперь содержится в модели, для доступа к ней используется свойство FormViewItem View. Тип представления, использовавшийся в качестве параметра метода FormViewItem, должен задаваться при создании модели в конструкторе.

Таким образом, динамические формы теперь поддерживаются для сущностей «Документ», «Контрагент», «Сделка», «Проект» и производных от них. Помимо этого, динамические формы доступны для процессов и объектов, созданных пользователями в дизайнере.

Ниже приведено описание класса DynamicEntityViewModel<T>.

    public class DynamicEntityViewModel<T> : EntityModel<T> where T : class, IEntity { /// <summary> /// Конструктор
    /// </summary> /// <param name="model">Модель</param> /// <param name="viewType">Тип представления</param>
    public DynamicEntityViewModel(T model, ViewType viewType); /// <summary> /// Конструктор /// </summary> public
    DynamicEntityViewModel(); /// <summary> /// Настройки динамической формы /// </summary> public DynamicFormSettings
    DynamicFormSettings { get; set; } /// <summary> /// Форма, используемая для представления модели /// </summary>
    public FormViewItem View { get; set; } /// <summary> /// UID формы /// </summary> public string FormId { get;
    set; } /// <summary> /// Тип представления /// </summary> public ViewType ViewType { get; set; } /// <summary>
    /// Инициализировать настройки динамической формы /// </summary> /// <param name=" executeOnViewLoadScript ">Выполнить
    ли сценарии при загрузке формы</param> public virtual void InitializeDynamicFormSettings (bool executeOnViewLoadScript
    = true); }

Добавлен статический класс EleWise.ELMA.Helpers.ButtonStyleHelper для получения информации об оформлении кнопки на основе значения перечисления ButtonStyle. Ниже приведено описание класса.

    public static class ButtonStyleHelper { /// <summary> /// Получить цвет кнопки /// </summary> /// <param
    name="style">Стиль кнопки</param> /// <returns>Цвет кнопки</returns> public static Color GetButtonColor(ButtonStyle
    style); /// <summary> /// Получить цвет границ кнопки /// </summary> /// <param name="style">Стиль кнопки</param>
    /// <returns>Цвет границ кнопки</returns> public static Color GetBorderColor(ButtonStyle style); /// <summary>
    /// Получить цвет текста кнопки /// </summary> /// <param name="style">Стиль кнопки</param> /// <returns>Цвет
    текста кнопки</returns> public static Color GetTextColor(ButtonStyle style); /// <summary> /// Получить CSS-класс для кнопки /// </summary> /// <param name="style">Стиль кнопки</param> /// <returns>Имя соответствующего
    CSS-класса</returns> public static string GetCssClass(ButtonStyle style); /// <summary> /// Получить hex-представление
    цвета кнопки /// </summary> /// <param name="style">Стиль кнопки</param> /// <returns>Цвет кнопки в виде строки формата #xxxxxx</returns> public static string GetColorString(ButtonStyle style); }

В класс EleWise.ELMA.DynamicForms.DynamicFormHelper добавлен статический метод

    public static FormViewItem FormWithExecutedLoadScripts(FormViewItem formViewItem, IEntity entity, ClassMetadata metadata,
    DynamicFormSettings dynamicFormSettings)

выполняющий сценарии при загрузке для указанной формы и возвращающий полученную форму.

Пользовательский интерфейс

Добавлен элемент формы «Строка» (RowViewItem).

Строку можно разместить внутри колонки, она состоит из двух ячеек (CellViewItem), в каждую из которых можно помещать различные элементы формы, включая части свойств (заголовок, значение, описание).

При создании строки в дизайнере, в ней всегда создается две ячейки: левая — для заголовков свойств — и правая — для значений и описаний. В любую из ячеек можно разместить несколько элементов. Использование строки позволяет создать пользовательское представление свойства, например, поместив в левую ячейку кнопку (гиперссылку) вместо стандартного заголовка, а в правую — значение свойства:

Было:

Стало:

Добавлен элемент формы «Кнопка» (ButtonViewItem).

Кнопка содержит текст и/или иконку. При нажатии на кнопку может осуществляться переход по ссылке либо выполнение сценария. Кнопка может иметь различные варианты оформления, в том числе ее можно отображать как простую гиперссылку. При добавлении нескольких кнопок и/или статического текста в колонку в дизайнере они будут отображаться в столбик друг под другом в веб-интерфейсе, при добавлении в другие элементы формы — панель, вкладку, строку — в строчку.

По нажатию на кнопку может осуществляться одно из двух действий:

  • выполнение сценария,
  • переход по ссылке.

Окно настроек кнопки показано на рисунке.

Обратите внимание на то, что в настройках кнопки нельзя указать и ссылку, и сценарий. Если выбрана ссылка, то выбор сценария будет недоступен.

Если Вы хотите создать кнопку со сценарием, то необходимо заполнить поля текст и/или иконка. Для кнопок со ссылкой данные поля не являются обязательными, так как ссылка уже содержит название и иконку.

Также для кнопок можно указать следующие параметры:

  • всплывающая подсказка — текст, появляющийся при наведении на кнопку;
  • способ отображения:
    • в виде ссылки,
    • в виде кнопки, в этом случае можно задать стиль и минимальную ширину кнопки.

На рисунке показано, как выглядят различные варианты оформления кнопок.

Убрана настройка для автопубликации номенклатуры – день публикации

Теперь автопубликация происходит 1-ого янаваря нового года (если это настроено)

Копирование задачи

В разовых задачах появилась команда «Копировать». Запрещено копировать задачи, созданные по резолюции документа.

Появилась возможность быстрого поиска значений в элементе ввода типа «Выпадающий список»

Открытие карточки звонка при входящем вызове

Добавлена возможность запрета открытия карточки звонка при входящем звонке с номера, зарегистрированного в системе ЭЛМА. Также добавлена возможность запрета для номеров, описанных одним из регулярных выражений.

Добавлена возможность отключать ручной ввод в поля адреса для адресного модуля Российской Федерации (EleWise.ELMA.CRM.RU).

Редактор сценариев

  1. Изменён алгоритм генерации веб-сервисов. Теперь генерируется так же, как в версиях 3.7, аналогично SharpDevelop. Вызываются веб-сервисы так же, как в версиях 3.7, аналогично SharpDevelop.
  2. Файл с исходным кодом редактора сценариев теперь не удаляется при публикации, проверке и запуске эмуляции процесса.

Пользовательский интерфейс (Дизайнер)

1. Добавлено окно перехода к строке в редакторе сценариев. Поведение аналогично окну в VisualStudio. Вызывается комбинацией клавиш Ctrl G.

2. Добавлены основные сниппеты в редактор кода. Чтобы активировать сниппет, нужно ввести его название и нажать tab. Названия сниппетов совпадают с базовыми циклами и условиями проверки.

Список сниппетов:

  1. foreach / for
  2. if / else / ifelse
  3. while / do
  4. switch

3. Добавлено предупреждение (в виде комментария) для новых пользователей в редакторе сценариев в процессах (только при создании нового процесса).

Visual Studio Plugin

Добавлена возможность выбора всех типов объектов при разработке собственного модуля

При создании объекта с помощью плагина VS появилась возможность добавлять в него свойства всех типов (как в дизайнере), при этом сборки подключаются автоматически при сохранении объекта.

Добавлена возможность выбирать необходимые сборки для модуля

Раньше при выборе пакета ELMA подключались все зависимые сборки, теперь можно выбрать необходимые сборки для Вашего модуля. Выбор необходимых пакетов теперь реализован в виде дерева. При выборе зависимой сборки – основная сборка будет подключаться автоматически, например, при подключении EleWise.ELMA.SDK.Web будет автоматически подключена родительская сборка EleWise.ELMA.SDK. Если снять выделение с родительской сборки – снимается выделение со всех зависимых сборок.

Public API

Раздел Docflow:

Добавленные методы:

DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, Boolean forceEndDateFromTask, User author, Nullable<DateTime> endDateFromTask, String customName)

DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Boolean forceEndDateFromTask, User author, Nullable<DateTime> endDateFromTask, String customName)

Список исправлений к версии 3.8.5

Появилась возможность импортировать данные в опубликованный/подписанный/устаревший план проекта (при импорте будет создан черновик-копия).

Пользовательский интерфейс (дизайнер)

1. Добавлено описание для стартовой страницы в разделе «Сценарии»

2. Кнопка публикации теперь недоступна, когда глобальный модуль открыт в режиме отладки. В режиме редактирования по-прежнему доступна.

Список исправлений к версии 3.8.4

Удалены сущности:

TerminateSendToApprovementShedulerJob (из пространства имен EleWise.ELMA.Documents. Models)

TerminateCustomActivityJob (EleWise.ELMA.Workflow. Models)

TerminateMessageReceiveSchedulerJobs (EleWise.ELMA.Workflow.Models)

Удалены типы:

TerminateSendToApprovementShedulerJobExecutor (EleWise.ELMA.Workflow.Scheduling)

TerminateTaskSchedulerJobManager (EleWise.ELMA.Workflow.Managers)

Изменен интерфейс EleWise.ELMA.Runtime.Managers.IFileManager

Добавлено:

    /// <summary> /// Папка для хранения предпросмотров /// </summary> string PreviewsPath { get; }

Изменение работы зависимых иерархических справочников

  1. Изменен интерфейс провайдера преобразования БД EleWise.ELMA.Runtime.Db.Migrator.Framework. ITransformationProvider :
    • в параметры функции GetSqlHierarchicalChilds добавлен параметр отступа int indent.
  2. Изменен интерфейс сервиса работы с иерархическими справочниками EleWise.ELMA.Model.Services. IHierarchicalMetadataService :
    • в параметры функции GetAllHierarchicalEntities добавлен параметр отступа int indent.
  3. Изменены атрибуты представления модели EleWise.ELMA.Model.Views. ViewAttributes :
    • тип поля HierarchicalChilds изменен на EleWise.ELMA.Model.Views. HierarchicalChild;
    • поле HierarchicalChilds помечено атрибутом [XmlIgnore] .

Изменение работы экспорта-импорта

1. Изменен интерфейс точки расширения обработки метаданных при импорте EleWise.ELMA.Deploy.Import.ExtensionPoints.IMetadataImport :

  • удалено поле MdType ;
  • удалена функция GetMetadata (string mdText) ;

2. Изменен класс для параметров в методах точек расширения для этапа проверки EleWise.ELMA.Deploy.Import.ExtensionPoints. PostCompleteTestImportParameters :

  • в конструктор PostCompleteTestImportParameters добавлен параметр настроек импорта EleWise.ELMA.Deploy.Import.ConfigImportSettings settings.

3. Изменен класс для параметров тестового прочтения файла конфигурации для этапа проверки EleWise. ELMA. Deploy. Import. ImportTestReadData :

  • в конструктор ImportTestReadData добавлен параметр настроек импорта EleWise.ELMA.Deploy.Import.ConfigImportSettings configImportSettings.

4. Удалено перечисление EleWise. ELMA. Deploy. Import. ExtensionPoints. MetadataType .

5. Реализация точки расширения действий при импорте заголовка процесса ProcessHeaderImportSaveActions перенесена в namespace EleWise.ELMA.Workflow.Deploy.Import.

Пользовательский интерфейс

Изменение настроек отображения зависимых иерархического справочника

1. В дизайнере изменены настройки свойства зависимого иерархического справочника:

  • добавлена настройка «Отступ», позволяющая пропускать несколько уровней иерархии;
  • введено ограничение 30 единиц на суммарный размер глубины и отступа.

2. В веб-части для  контрола отображения свойства, являющегося родительским иерархическим справочником верхнего уровня:

  • добавлено действие настроек «Отступ» и «Глубина»;
  • убрана возможности выбирать элемент в отдельном всплывающем

Изменение визарда импорта в Дизайнере

  1. После шага проверки импортируемой конфигурации добавлен шаг просмотра импортируемых данных .
  2. Изменен шаг импортирования :
  • добавлено дерево отображения процесса импорта данных;
  • текстовое представление логов импорта перенесено на отдельную вкладку.

Методы и интерфейсы

  1. В интерфейс EleWise. ELMA. CRM. Telephony. Extensions. ITelephonyProvider добавлен метод MakeCall( string phone) , осуществляющий телефонный вызов через настроенный провайдер телефонии.
  2. Добавлен публичный веб сервис I CallService ( EleWise.ELMA.CRM.Telephony.API.Service.v1.ICallService ), позволяющий совершить телефонный звонок через настроенный провайдер телефонии.
  3. Обработка ссылок с префиксом elmadms: callto={ phone} с помощью элма-агента для совершения телефонного звонка через настроенный провайдер телефонии.

Пользовательский интерфейс

1. Добавлена возможность вводить заменяемый префикс телефонного номера в настройках телефонии. Таким образом при наборе сохраненного номера с каким-то префиксом, например, 7, осуществляется автоматическая конвертация данного префикса на необходимый.

2. Если в системе настроена телефония, то при клике на ссылку с префиксом «callto:», будет предложен вариант совершения вызова с помощью системы (по умолчанию вызов совершается с помощью Skype).

3. Увеличение ограничения на вводимый номер квартиры до 10 символов.

Пользовательский интерфейс (Дизайнер)

1. Добавлено окно выбора версии Visual Studio при открытии сценария на редактирование или отладку (в процессах, объектах и глобальных модулях)

Также была изменена кнопка открытия сценария на редактирование в VS (скрипты глобальные модули).

Было:

Стало:

Количество отображаемых элементов зависит от количества установленных VS на компьютере. Если установлена только одна версия VS, окно отображаться не будет, дополнительная кнопка не будет отображаться (будет сразу же запущена установленная VS). Дополнительная кнопка будет отображаться только в том случае, если нажата галочка «Запомнить и больше не показывать». Чтобы скрыть кнопку и отменить выбор, достаточно снять галочку «Запомнить и больше не показывать».

2. Изменены выпадающие кнопки для открытия сценария в VS в целях отладки или редактирования (раздел «Сценарии»)

Сценарии в процессах

Было:

Стало:

Глобальные модули

Было:

Стало:

Количество отображаемых элементов зависит от количества установленных VS.

Примечание

На данный момент поддерживается 5 редакторов:

  • Visual CSharp 2010,
  • Visual Studio 2010,
  • Visual Studio 2012,
  • Visual Studio 2013,
  • Visual Studio 2015.

PublicAPI

Раздел KPI:

Добавленные методы:

SMARTTask PublicAPI.KPI.Objects.SMART.SMARTTask.Create()

Раздел Docflow:

Удалённые менеджеры объектов:

PublicAPI.Docflow.Objects.TerminateSendToApprovementShedulerJob

PublicAPI.Docflow.Objects.Nomenclature.Depository.Filter() - есть изменения в фильтре:

OnlyDepository(Nullable<Boolean> onlyDepository) - Добавлен

Раздел Processes:

Удалённые менеджеры объектов:

PublicAPI.Processes.Objects.TerminateCustomActivityJob

PublicAPI.Processes.Objects.TerminateMessageReceiveSchedulerJobs

Раздел Portal:

Добавленные методы:

Task PublicAPI.Portal.TaskBase.Task.Create()

Void PublicAPI.Portal.Security.UserSecurity.Save(User obj, Boolean saveAsBlocked)

Список исправлений к версии 3.8.3

API Кода. Публичные методы и интерфейсы

  1. Компонент PublishedProcessFilterProvider перенесен из пространства имен EleWise.ELMA.Workflow.Processes.Web.Components в  EleWise.ELMA.Workflow.Components .

Изменено формирование списка отчетов для отображения в вебе

  1. Изменена модель отображения дерева отчетов EleWise.ELMA.Reports.Models. ReportsListModel :
    1. тип поля ReportGroups изменен на List<EleWise.ELMA.Reports.Models.ReportGroupModel>;
    2. тип поля Reports изменен на List<EleWise.ELMA.Reports.Models. ReportModel>;
  2. В менеджере групп отчетов EleWise.ELMA.Reports.Managers. ReportGroupManager :
    1. возвращаемый тип функции GetPublishedReportGroups(bool checkViewPermission = true) изменен на EleWise.ELMA.Reports.Models. ReportsListModel;
    2. возвращаемый тип функции GetPublishedReportGroups(string searchString, bool checkViewPermission = true) изменен на EleWise.ELMA.Reports.Models. ReportsListModel;

Пользовательский интерфейс

Переименована кнопка на окне входа в Дизайнере

Было:

Стало:

Список исправлений к версии 3.8.2

Пользовательский интерфейс

  1. Проверка глобальных модулей
  2. Отладка глобальных модулей сценариев.
  3. Редактирование глобальных модулей сценариев.
  4. Изменение механизма синхронизации изменений из сторонней среды.

Методы и интерфейсы

  1. Генерация адреса по шаблону, общий шаблон (для всех стран без отдельного модуля) в виде локализуемой строки убран в EleWise.ELMA.CRM.Components.AddressHelper. Для стран со своим модулем возможны свои шаблоны, например, шаблон для РФ не локализуемая строка.
  2. Метод EleWise. ELMA. Projects. Managers. GetPlanItemByTask удален. Вместо него добавлен метод EleWise. ELMA. Projects. Managers. GetPlanItemsByTask , который получает все задачи плана, ссылающиеся на задачу.
  3. Добавлен метод расширения EleWise.ELMA.Web.Mvc.Extensions. ViewItemExtensions.HasItems(this RootViewItem rootViewItem), проверяющий, есть ли в RootViewItem (панели, колонке и пр.) какие-либо элементы.

Пользовательский интерфейс

1. Обязательный выбор типа клиента при импорте клиентов из Excel (Рис. 2). Если тип не выбран, продолжение импорта невозможно (Рис. 1).

Рис. 1

Рис. 2

2. Абонентский ящик (а/я) в типе помещения (Рис. 3).


Рис. 3

3. Автоматическое определение системой ссылок и установка их кликабельности при отображении многострочных строк в режиме "только для чтения".

4. Появилась возможность ставить анимированные аватары пользователям.

5. Выделение задачи запуска процесса в плане проекта красным цветом в случае просрочки хотя бы 1 задачи по процессу.

В дизайнере при просмотре свойств объектов в панель базовых свойств теперь сворачиваются только свойства, унаследованные от других объектов.

Например, у объекта «Юридическое лицо» теперь сворачиваются только свойства, унаследованные от объекта «Контрагент»

Было:

Стало:

Плагин VS

  1. Плагин для Visual Studio теперь поддерживает 12 версию Visual Studio.
  2. В плагине для Visual Studio появилась возможность смены языка.

PublicAPI

Раздел Projects:

Устаревшие методы:

Milestone PublicAPI.Projects.ProjectTask.CreateMilestone(Project project, String subject, User executor, DateTime executeDate) (Этот метод вскоре будет удалён)

Milestone PublicAPI.Projects.ProjectTaskBase.ProjectTask.CreateMilestone(Project project, String subject, User executor, DateTime executeDate) (Этот метод вскоре будет удалён)

Раздел Enums:

Добавленные перечисления:

PublicAPI.Enums.CRM.AppartmentType.POBox

Список исправлений к версии 3.8.1

Публичные методы и интерфейсы

1. В контроллере EleWise . ELMA . BPM . Web . Tasks . Controllers . WorkLogReportController изменены следующие публичные методы:

a. ActionResult ToApprov (List<long> selectedIds, bool onlySelected, string dayForWeek) на  ActionResult ToApprov (List<long> selectedIds, bool onlySelected, DateTime? dayForWeek)

b. ActionResult ObjectSearchPopup (string popupId, string scriptSelect, string scriptParameters, string date, WorkLogObjectSearchType searchType, WorkLogObjectSearchTabActive activeTab = WorkLogObjectSearchTabActive.History) на  ObjectSearchPopup (string popupId, string scriptSelect, string scriptParameters, DateTime? date, WorkLogObjectSearchType searchType, WorkLogObjectSearchTabActive activeTab = WorkLogObjectSearchTabActive.History)

c. ActionResult GetObject (Guid objectUid, long objectId, string dateStart, string dateEnd, long? harmonizatorId = null) на  ActionResult GetObject (Guid objectUid, long objectId, DateTime? dateStart, DateTime? dateEnd, long? harmonizatorId = null)

d. ActionResult ObjectGrid (GridCommand command, string gridId = null, string selectScript = null, string @from = null, [Bind(Prefix = "DataFilter")] IWorkLogObjectSearchFilter filter = null) на  ActionResult ObjectGrid (GridCommand command, string gridId = null, string selectScript = null, DateTime? @from = null, [Bind(Prefix = "DataFilter")] IWorkLogObjectSearchFilter filter = null)

e. ActionResult SaveDraft ([Bind(Prefix = "Item")]WorkLogReportItem item, string date) на  ActionResult SaveDraft ([Bind(Prefix = "Item")]WorkLogReportItem item, DateTime? date)

f. ActionResult WorkLogGroupUpdate (List<string> workLogIds, long? harmonizatorId, long? activityId, string date) на  ActionResult WorkLogGroupUpdate (List<string> workLogIds, long? harmonizatorId, long? activityId, DateTime? date)

g. ActionResult OvertimeValidate (string dayForWeek, List<long> selectedIds) на  ActionResult OvertimeValidate (DateTime? dayForWeek, List<long> selectedIds)

2. Методконтроллера EleWise . ELMA . BPM . Web . Tasks . Controllers . WorkLogReportController .DateTime? ParseDate удалён .

3. Изменениявмодели EleWise.ELMA.BPM.Web.Tasks.Models. WorkLogItemGridParams:

a. Свойство string DateTo заменено на  DateTime ? DateTo

b. Свойство string DateFrom заменено на  DateTime? DateFrom

4. Класс EleWise.ELMA.Web.Mvc.Components.WorkTimeHelper удален

Пользовательский интерфейс

Измерение трудозатрат и рабочего времени в часах/минутах.

Было:

Стало:

Отображение графиков-портлетов из раздела «Контрольные панели KPI» работает только для Firefox, Google Chrome и IE9

В браузере IE8 будет выведено сообщение, что «Браузер не поддерживается».

Глобальная настройка «Только для чтения» для формы (конструктор форм)

С версии 3.8.1 настройка формы только для чтения влияет на все свойства формы.

После установки этого флага все элементы становятся только для чтения, но для отдельных свойств можно снять флаг «Только для чтения» тем самым переписать глобальный параметр формы.

Если такая форма будет использоваться для отображения карточки объекта на просмотр, то все поля обязательно будет только на чтение (переписывание в отдельных свойствах не возымеет эффект).

Изменения в PublicAPI

Раздел Processes:

Добавленные менеджеры объектов:

PublicAPI.Processes.Objects.RecreateMonitorCacheJob

PublicAPI.Processes.Objects.OptimizeMonitorCacheJob

Добавленные методы:

MonitorUpdateActionQueueItemFilterHelper PublicAPI.Processes.Objects.MonitorUpdateActionQueueItem.Filter()

PublicAPI.Processes.Objects.MonitorUpdateActionQueueItem.Filter() - есть изменения в фильтре:

User(User user) - Добавлен

Список исправлений к версии 3.8.0

Модель данных

  1. Стандартным элементам справочника Статья дохода бюджета поставлены в соответствие постоянные Uid:
    Доходы от реализации продукции "7CBFC51E-73F5-4B2F-89BE-496B7447F68F"
    Консалтинг "DD4F2F80-B348-4CDA-88EB-0DDD0FDA02F6"
    Лицензионные отчисления "88FB658E-DC36-438E-B958-9D8F3C10EB7D"
    Прочее "41B15125-61F3-4257-A72D-A1AF10801114"
  2. Стандартным элементам справочника Статья расхода бюджета поставлены в соответствие постоянные Uid:
    Арендная плата "297E939B-A4D4-4D8B-9CF4-560C7125D2F0"
    Зарплата "22344C0D-601A-415C-8494-0FCE6FBEA06C"
    Командировочные расходы "57F5DDB5-909A-4CE4-8244-3ECE1AF17F4C"
    Страховые выплаты "4B920330-F942-4348-B36D-7BEDD5F77BF4"
    Выплаты по кредитам "9F4F445B-BAB8-451E-9CF5-AD396A0C1D04"
    Прочее "969D906A-CEE4-4EAE-AC04-5A221CC71050"
  3. Появилась сущность Бюджет EleWise.ELMA.Projects.Models.Budgets.IBudget , которая поддерживает версионность. Аналогично плану есть статус, номер версии, и.т.д. . Бюджет содержит ссылки на версионные элементы дохода (свойство IncomeItems – коллекция типа EleWise.ELMA.Projects.Models.Budgets.IBudgetVersionIncomeItem) и версионные элементы расхода (свойство ExpenseItems – коллекция типа EleWise.ELMA.Projects.Models.Budgets.IBudgetVersionExpenseItem). Данные версионные элементы после сохранения и публикации версии бюджета указывают на реальные элементы бюджета.

Публичные методы и интерфейсы

1. Добавлен объект IProjectPhaseType (этап проекта уровня типа проекта), наследуемый от  IProjectPhase . Свойство ProjectMetadataHead перенесено из базового IProjectPhase в  IProjectPhaseType .

2. Добавлен объект IProjectPhaseLevel (этап проекта уровня проекта), наследуемый от  IProjectPhase . Свойство Project перенесено из базового IProjectPhase в  IProjectPhaseLevel .

3. Изменения в контроллере EleWise . ELMA . BPM . Web . Common . Controllers . WatchController :

a. ActionResult Add(WatchesModel model) удалён .

b. ActionResult Info(Guid typeUid, long? entityId, string watchPanel, string addWatchScript, string removeWatchScript) заменён на  ActionResult Info(Guid typeUid, string entityId, string watchPanel, string addWatchScript, string removeWatchScript)

c. ActionResult Settings(Guid typeUid, long entityId, string popupId, string callback) заменён на  ActionResult Settings(Guid typeUid, string entityId, string popupId, string callback)

d. ActionResult Settings(WatchListModel model) заменён на  ActionResult Settings(Guid entityTypeUid, string entityId, WatchStatus globalWatchStatus, WatchStatus watchStatus)

e. ActionResult AddWatch(WatchInfo model) заменён на  ActionResult AddWatch(Guid typeUid, string entityId)

f. ActionResult RemoveWatch(WatchInfo model) заменён на  ActionResult RemoveWatch(Guid typeUid, string entityId)

g. ActionResult List(Guid typeUid, long entityId, string popupId) заменён на  ActionResult List(Guid typeUid, string entityId, string popupId)

h. ActionResult FullListPopup(Guid typeUid, long entityId, Guid? permissiontoValidate, Guid? typeUidForPermission, string popupId, bool canEdit) заменён на  ActionResult FullListPopup(Guid typeUid, string entityId, Guid? permissiontoValidate, Guid? typeUidForPermission, string popupId, bool canEdit)

i. ActionResult SaveList(WatchListInfoModel model, EditableListModel watchListMembers) заменён на  ActionResult SaveList(Guid entityTypeUid, string entityId, EditableListModel watchListMembers)

4. Изменён метод интерфейса EleWise.ELMA.BPM.Web.Common.ExtensionPoints.IWatchNotifier
Notify(long entityId, IEnumerable<IUser> addUsers, IEnumerable<IUser> deleteUsers)
на  Notify(object entityId, IEnumerable<IUser> addUsers, IEnumerable<IUser> deleteUsers)

5. Изменены методы класса EleWise.ELMA.BPM.Web.Common.Services. WatchListService :
IEnumerable<AssignedRoleTypeModel> CreateAssignedRoleTypeModel(Guid typeUid, long? entityId = null)
на  IEnumerable<AssignedRoleTypeModel> CreateAssignedRoleTypeModel(Guid typeUid, object entityId = null)
void SaveFromModel(Guid typeUid, EditableListModel model, long? entityId = null)
на  SaveFromModel(Guid typeUid, EditableListModel model, object entityId = null)

6. Винтерфейс EleWise.ELMA.Common.ExtensionPoints.IWatchProvider добавлены методы:
bool NeedConfirmFromDelete(Guid entityTypeUid, [NotNull]object entityId)
string TextConfirmFromDelete(Guid entityTypeUid, [NotNull]object entityId)
bool IsAvailable(Guid entityTypeUid, object entityId)
bool CanSendToUser(IEntity entity, IUser user)

7. Изменены методы в  EleWise.ELMA.Common.Managers. WatchManager :
List<IWatch> GetWatches(Guid typeUid, long? entityId, bool onlyForEntity = false, bool excludeExtensions = true)
на  List<IWatch> GetWatches(Guid typeUid, object entityId, bool onlyForEntity = false, bool excludeExtensions = true)
List<IWatch> BuildWatchList(Guid typeUid, long? entityId, Guid[] parentTypeUid, long? parentEntityId)
на  List<IWatch> BuildWatchList(Guid typeUid, object entityId, Guid[] parentTypeUid, object parentEntityId)
List<IWatch> GetWatchByUser(Guid typeUid, long? userId, long? entityId = null)
на  List<IWatch> GetWatchByUser(Guid typeUid, long? userId, object entityId = null)
bool IsWatchExsist(Guid typeUid, long? entityId, IUser user = null)
на 
bool IsWatchExsist(Guid typeUid, object entityId, IUser user = null)
CreateWatchByUser(Guid typeUid, long? entityId, IUser user)
на  CreateWatchByUser(Guid typeUid, object entityId, IUser user)
DeleteWatchesByUser(IUser user, long entityId, Guid typeUid)
на  DeleteWatchesByUser(IUser user, object entityId, Guid typeUid)

8. Изменены свойства сущности EleWise.ELMA.Common.Models.Watch :
System.Nullable<long> EntityId
на  string EntityId
System.Nullable<long> ParentEntityId
на  string ParentEntityId

9. Метод EleWise.ELMA.Projects.Managers.ProjectPlanManager.PublishForProject(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, bool addToParticipants) стал приватным ( был публичным ).

10. Добавлен метод string CloseFunctionName ( string uniquePrefix) в  точке расширения IFilePreviewCreatorRenderer , отвечающий за  название OnClose функции JavaScript

11. Класс ProjectObjectViewItemProvider перенесен из пространства имен EleWise.ELMA.Documents.Web.Components в  EleWise.ELMA.Projects.Components .

12. Метод EleWise.ELMA.Projects.Managers.ProjectTaskManager.MakeTaskPhase удален

13. Метод EleWise.ELMA.Projects.Managers.ProjectTaskManager.MakeTaskNotPhase удален

14. Из класса EleWise.ELMA.Projects.Models.ProjectTaskActions удалены действия MakeTaskPhase , MakeTaskNotPhase .

15. Свойство . ResponsiblesForPhaseTask перенесено из  EleWise.ELMA.Projects.Models.IProjectTask в  EleWise.ELMA.Projects.Models.IProjectTaskBase c заменой Uid на  "12a777a5-8ff3-421f-bb1f-2d399d6c5212"

16. Свойство Task интерфейса EleWise.ELMA.Projects.Models.IResponsibleForPhaseTask сменило Uid на  "7349893c-dd7e-44d1-a5f2-c30a418a3969" и  сменило тип c EleWise.ELMA.Projects.Models.IProjectTask на  EleWise.ELMA.Projects.Models.IProjectTaskBase

17. Системные процессы Входящие деньги , Исходящие деньги удалены и помещены в магазин .

18. EleWise . ELMA . Projects . Models . IBudgetIncomeItem и  EleWise . ELMA . Projects . Models . IBudgetExpenseItem поддерживают мягкое удаление

19. Свойства BudgetIncomeItems и  BudgetExpenseItems удалены из интерфейса EleWise . ELMA . Projects . Models . IProject . Теперь сущность бюджета IBudget указывает на версионные элементы дохода и расхода, которые в свою очередь при публикации указывают на реальные элементы.

20. Свойства Amount и  Substantiation удалены из интерфейсов EleWise . ELMA . Projects . Models . IBudgetIncomeItem и  EleWise . ELMA . Projects . Models . IBudgetExpenseItem . Данные свойства доступны в элементах сумм ( IBudgetVersionIncomeAmount , IBudgetVersionExpenseAmount ) версионных элементов бюджета.

21. Из менеджеров EleWise . ELMA . Projects . Managers . BudgetIncomeItemManager и  EleWise . ELMA . Projects . Managers . BudgetExpenseItemManager удалены методы IsAvailableCreate , IsAvailableEdit , IsAvailableDelete , GetName ; свойства EmptyItemName , EmptyPlanName , EmptyPhaseName

22. Из менеджеров EleWise . ELMA . Projects . Managers . BudgetIncomeItemRefManager и  EleWise . ELMA . Projects . Managers . BudgetExpenseItemRefManager удалены свойства TypeUid .

23. Из менеджера EleWise . ELMA . Projects . Managers . ProjectManager удалены методы SetParticipantsFromProject , IsAvailableProjectsPlanPublish (перенесен в EleWise.ELMA.Projects.Managers. ProjectPlanManager )

24. Из менеджера EleWise . ELMA . Projects . Managers . ProjectPhaseManager удален метод MergeFilter .

25. И зменены параметры в  IWorkflowProcessListRunningDTOManager .
Было
List<ProcessHeaderDTO> Load(Guid typeId);
void Save(List<ProcessHeaderDTO> data, Guid typeId);
Стало
List<ProcessHeaderDTO> Load(Guid typeId);
void Save(List<WorkflowProcessListRunningDTO> data, Guid typeId);

26. Добавлена точка расширения EleWise.ELMA.Web.Mvc.ExtensionPoints.IPropertyViewItemAdjustment сметодом Adjust(PropertyViewItem propertyViewItem, object model, ViewType viewType) дляизменения PropertyViewItem’ овнепосредственнопередихрендерингом . Те реализации точки расширения IFormViewItemTransformate , которые относились к  PropertyViewItem переделаны на новую точку расширения, так как на этапе трансформации формы еще не все PropertyViewitem ’ы могут быть на форме:

a. В пространстве имен EleWise.ELMA.CRM.Web.Components:

i. ContractorFormViewItemTransformate заменен на  ContractorDublicatesPropertyViewItemAdjustment

ii. SaleDublicatesFormViewItemTransformate заменен на  SaleDublicatesPropertyViewItemAdjustment

iii. SaleSaleFunnelFormViewItemTransformate заменен на  SaleSaleFunnelPropertyViewItemAdjustment

b. В пространстве имен EleWise.ELMA.Documents.Web.Components:

i. DocumentNameFormViewItemTransformate заменен на  DocumentNamePropertyViewItemAdjustment

ii. DocumentRestrictChangeFolderFormViewItemTransformate заменен на  DocumentRestrictChangeFolderPropertyViewItemAdjustment

c. В пространстве имен EleWise.ELMA.Projects.Web.Components.FormViews:

i. ProjectFormViewItemTransformate заменен на  ProjectPropertyViewItemAdjustment

d. В пространстве имен EleWise . ELMA . Projects . Web . Components :

i. DocumentRestrictChangeFolderFormViewItemTransformate заменен на  DocumentRestrictChangeFolderPropertyViewItemAdjustment

ii. ProjectFormViewItemTransformate заменен на  ProjectPropertyViewItemAdjustment

e. В пространстве имен EleWise.ELMA.Workflow.Web.Components:

i. Часть логики работы класса WorkflowTaskPropertyReadOnlyFormViewItemTransformate перенесана в  WorkflowTaskPropertyViewItemAdjustment

f. Добавлен класс EleWise.ELMA.Web.Mvc.Components.HideEmptyPropertyViewItemAdjustment для сокрытия пустых свойств.

27. Для PropertyViewItem добавлено расширение EleWise . ELMA . Web . Mvc . Extensions . Adjust ( this PropertyViewItem propertyViewItem ) , которое находит все реализации точки расширения IPropertyViewItemAdjustment и применяет предусмотренные ими изменения.

28. Для работы класса EleWise.ELMA.Web.Mvc.Components.HideEmptyPropertyViewItemAdjustment добавлена точка расширения EleWise.ELMA.Web.Mvc.ExtensionPoints.IHideEmptyPropertyViewItemAdjustment с методами IsApplicable(PropertyViewItem propertyViewItem, object entity) для проверки применимости метода Adjust к конкретному PropertyViewItem (метод HideEmptyPropertyViewItemAdjustment применяет только первую точку расширения, которая вернет true ) и с методом Adjust(PropertyViewItem propertyViewItem, object entity) для изменения PropertyViewItem ’а. У точки расширения три реализации:

a. EleWise . ELMA . Workflow . Web . Components . HideEmptyContextPropertyViewItemAdjustment для контекстных переменных процессов.

b. EleWise . ELMA . Documents . Docflow . Web . Components . HideEmptyRegistrationCardPropertyViewItemAdjustment для свойств регистрационных карточек.

c. EleWise . ELMA . Web . Mvc . Components . DefaultHideEmptyPropertyViewItemAdjustment для проверки свойств сущностей.

29. Добавлена точка расширения EleWise.ELMA.Web.Mvc.ExtensionPoints. IPropertyIsEmpty с методом IsEmpty(PropertyViewItem propertyViewItem, object entity, EntityMetadata metadata) для проверки пусто ли значение PropertyViewItem’а. Метод возвращает true , если свойство пусто, false , если нет, null  — если не удалось выполнить проверку. Метод EleWise.ELMA.Web.Mvc.Components.HideEmptyPropertyViewItemAdjustment.Adjust последовательно вызывает реализации этой точки расширения, пока не вернется непустое значение. У точки расширения две реализации:

a. EleWise . ELMA . CRM . Web . Components . PropertyMarketingEffectIsEmpty для проверки маркетингового воздействия (поскольку оно может отображать вместо себя значение другого свойства — маркетиноговой группы или метроприятия).

b. EleWise . ELMA . Web . Mvc . Components . PropertyIsEmpty для всех остальных свойств.

30. В классе EleWise . ELMA . Model . Views . FormViewItem добавлено свойство HideEmptyChildProperties , указывающее, скрывать ли пустые свойства на данной форме.

31. Для структуры EleWise . ELMA . Common . Models . WorkTime добавлены операторы неявного приведения в  long ? и обратно.

32. Добавлены производные от EntitySubTypeDescriptor< T > классы EleWise.ELMA.CRM.Descriptors.AddressDescriptor , EleWise.ELMA.CRM.Descriptors.EmailDescriptor , EleWise.ELMA.CRM.Descriptors.PhoneDescriptor и  EleWise . ELMA . Documents . Descriptors . DocumentAttachmentDescriptor . для учета особенностей адресов, e mail ’ов, телефонов и документов с вложениями при проверке их на пустоту методом IsEmpty(PropertyMetadata propertyMetadata, object val) . В классе EleWise.ELMA.Model.Types.MoneyDescriptor переопределен метод IsEmpty(PropertyMetadata propertyMetadata, object val) .

33. В метаданные типов документов добавлен атрибут UseLifeCycle EleWise . ELMA . Documents . Metadata . UseLifeCycleAttribute указывающий, используются ли жизненные циклы для документов данного типа.

34. Удален менеджер EleWise . ELMA . CRM . RU . Managers . RuAddrManager , все необходимые методы перенесены в  EleWise.ELMA.CRM.Managers.AddressManager ;

35. Добавлен публичный класс EleWise.ELMA.CRM.RU.Components.CountryInfo с константами COUNTRY_NAME и  COUNTRY_CODE для Российской Федерации.

Изменен интерфейс IGlobalSettingsModule

Добавлен метод:

    /// <summary> /// Очисть кэш (для перезагрузки настроек) /// </summary> void ClearCache();

Изменен интерфейс IUser

Добавлено:

    /// <summary> /// Локаль пользователя /// </summary> string Lang { get; set; } /// <summary> /// Системная
    ли локаль /// </summary> bool IsSystemLocal { get; set; }
    
         
    

Изменен IObjectCreator

Добавлен метод:

    /// <summary> /// Дополнительные парамертры с сервера /// </summary> /// <param name="container"></param>
    /// <param name="propertyMetadata"></param> /// <returns></returns> Dictionary<string, object>
    GetServerParams(object container, IPropertyMetadata propertyMetadata);
    
         
    

Изменена точка расширения IConfigExportExtension

Изменена сигнатура метода AddExportObjects (вместо нескольких параметров сделан один, содержащий в себе эти же значения в виде свойств):

    /// <summary> /// Добавить в списке объектов экспорта объекты из расширения, которые будут экспортированы /// </summary>
    /// <param name="parameters">Параметры выгрузки объектов</param> void AddExportObjects(ExportExtensionParams
    parameters);
    
         
    

Изменена точка расширения IEntityImportSaveActions, а также ее базовая реализация - EntityImportSaveActions

Изменена сигнатура методов ExecPreSaveActions и TestRead (также сделана передача классов вместо набора отдельных параметров):

    /// <summary> /// Выполняет дополнительные действия перед сохранением сущности определенного типа /// </summary>
    /// <param name="entity">Экземпляр сущности</param> /// <param name="data">Дополнительные служебные данные</param>
    /// <returns></returns> List<TestImportMessages> ExecPreSaveActions(IEntity entity, ImportEntityPreSaveData
    data); /// <summary> /// Проверка сущности перед импортом /// </summary> void TestRead(ImportTestReadData data,
    ImportTestReadResult result);

Изменена точка расширения IConfigImportExtension

Полностью переработана структура методов

    [ExtensionPoint(ComponentType.Server)] public interface IConfigImportExtension { /// <summary> /// После проверки
    файла /// </summary> /// <param name="parameters"></param> void OnPostCompleteTest(PostCompleteTestImportParameters
    parameters); /// <summary> /// Перед стартом импорта /// </summary> /// <param name="parameters"></param>
    void OnPreStartImport(PreStartImportParameters parameters); /// <summary> /// Перед чтением пакетов /// </summary>
    /// <param name="parameters"></param> void OnPreReadPackets(PreReadPacketsParameters parameters); /// <summary>
    /// После чтения пакетов /// </summary> /// <param name="parameters"></param> void OnPostReadPackets(PostReadPacketsParameters
    parameters); /// <summary> /// Выполнить необходимые действия после завершения импорта /// </summary> /// <param
    name="parameters"></param> void OnPostCompleteImport(PostCompleteImportParameters parameters); }

Удалена точка расширения IImportSaveActions

Вместо нее можно использовать IConfigImportExtension

Добавлены параметры командной строки для автоматизации установки системы

  • /ConfigDirExist ="" - путь до существующей конфигурации
  • /ConfigDirNew ="" - путь до новой конфигурации
  • /DB = - СУБД (FIREBIRD или FB, ORACLE, MSSQL или SQL)
  • /FBPor t= - порт Fb
  • /OracleConnectionString ="" - строка подключения к ораклу
  • /MSSQLServer ="" - имя сервера
  • /MSSQLBase ="" - имя базы
  • /MSSQLUser ="" – пользователь
  • /MSSQLPassword ="" - пароль к базе
  • /WebPort = - порт веб-приложения
  • /Internal - ставить на внутренний сервер ELMA
  • /IIS - ставить на iis
  • /IISSiteName ="" - имя сайта в iis
  • /IISPoolName ="" - имя пула в iis
  • /IISCredentials = - Удостоверение для пула приложений (LocalSystem, LocalService, NetWorkService, AppPool, User)
  • /IISUser ="" - имя пользователя iis
  • /IISPassword ="" - пароль пользователя iis

Там, где в ключах написаны кавычки - лучше использовать их в написании параметров, иначе параметры с пробелами не подставятся.

Пример использования ключей:
ELMA3-Enterprise.exe /ConfigDirNew="c:newdir" /DB=MSSQL /MSSQLServer="SERVERNAME" /MSSQLBase="ELMA3" /MSSQLUser="sa" /MSSQLPassword="!Q2w3e4r5t" /WebPort=7777 /IIS /IISCredentials=LocalSystem
Это означает:
1. ELMA будет установлена по стандартному пути установки (если нужно изменить,то существует стандартный ключ /DIR="")
2. Конфигурация будет расположена по пути c:newdir
3. Выбран сервер MSSQL, с именем сервера SERVERNAME, имя базы ELMA3, имя пользователя sa, и пароль !Q2w3e4r5t
4. Порт веб-приложения 7777
5. Установлено на IIS как LocalSystem

Изменена логика получения сообщения из очереди MSMQ

  1. Для метода Receive менеджера EleWise. ELMA. MessageQueue. Manager.MSMQMessageManager изменена логика получения сообщения. Ранее в случае, если параметр type был равен null , метод возвращал значение null . Теперь он возвращает бинарное представление тела сообщения.
  2. Для активити «Получить сообщение» изменена логика получения сообщения сценарием обработки полученных данных. Ранее в случае, если возвращаемое значение скрипта определения типа объекта было равно null , то сценарий обработки полученных данных получал null . Теперь он получает бинарное представление тела сообщения.

Изменения модели на представлениях регистрации на DocumentInfoExt

Если какое-то из ниже перечисленных представлений переопределено в конфигурации, нужно правильно переписать их с учетом изменений.

  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsRegistrationCardCreate.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsRegistrationCardEdit.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardActionAfterRegistrationScripts.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardCreateForm.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardCreateFormWrapper.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardInfoPanel.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardRegistrationCardFormHiddens.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationCardRegistrationNumberSelector.cshtml
  • WebModulesEleWise.ELMA.Documents.Docflow.WebViewsSharedRegistrationDocumentTaskTaskInfo.cshtml

Пользовательский интерфейс

Трудозатраты

Изменено название глобальной настройки трудозатрат « Запретить переработку » на « Включить лимиты на трудозатраты ». Также расширен функционал этой настройки на все лимиты и ограничения по трудозатратам.

Добавлена цветовая раскраска фона строк в отчёте о подаваемых трудозатратах:

  • красный – есть лимит/ограничения на подачу трудозатрат;
  • жёлтый – не полностью заполненные трудозатраты;
  • зелёный – трудозатраты заполнены и готовы к отправке на согласование.

Добавлена возможность копирования указанных записей в подаваемом отчёте о трудозатратах в другие дни.

В подаваемом отчёте о трудозатратах, добавлена возможность создавать черновые записи трудозатрат без привязки к объектам трудозатрат. Выбор объекта трудозатрат остался обязательным , но теперь это можно отложить на потом, заполнив в первую очередь часы и описание.

Бюджеты проектов

1. Для отображения бюджета используется новый компонент.

2. Появилась возможность сформировать отчет по бюджету за конкретный период.

Изменились настройки для переходов в задачах

Было:

Стало:

Было:

Стало:

Документооборот

Администраторские настройки документооборота разбиты на группы

Было:

Стало:

Было:

Стало:

В дизайнере добавлена галочка «Скрывать пустые свойства» на формах

Было:

Стало:

В дизайнере добавлена галочка «Показывать даже если пусто» в настройках свойства на форме

Галочка отображается только если в настройках формы стоит «Скрывать пустые свойства».

Было:

Стало:

На формах просмотра документов скрыты пустые свойства. В списке атрибутов документа описание и штрих-код перемещены вниз

Было:

Стало:

В дизайнере базовые свойства объекта сгруппированы в сворачиваемую панельку

Было:

Стало:

В дизайнере в настройках типа документа появилась галочка «Использовать жизненный цикл»

Когда она не установлена, вкладка «Жизненный цикл» не отображается и при просмотре карточки документа в вебе панель с текущим статусом также не отображается. Также все прочие настройки типа документа вынесены в отдельную группу.

Было:

Стало:

В дизайнере в настройках типа документа на вкладке «Дополнительные» убраны разделы «Программные настройки» и «Настройки фильтра»

Было:

Стало:

В дизайнере в настройках типа документа убраны вкладки «Таблица» и «Фильтр».

Было:

Стало:

Модуль KPI

Ввод значений

Было:

Стало:

Шкала показателя

Было:

Стало:

Карты целей и цели вынесены из раздела Показатели в отдельный раздел

Убраны кнопки из тулбара. Все действия через контекстное меню

Мероприятий в дизайнере больше нет – их создание и редактирование теперь возможно только в веб-браузере

Нельзя удалить опубликованную карту целей – можно отправить в архив

Настройка редактирования – либо веб-браузер, либо дизайнер

Панели управления объявляются устаревшими. Для визуализации данных используйте портлеты-графики в веб-части.

Настройка периода для задачи сбора – теперь можно выбирать несколько периодов

Редизайн стартового окна

Было:

Стало:

Измененный редактор скриптов C#

В новой версии системы были внесены изменения в редактор кода в дизайнере ELMA.

Новый диалог добавления ссылок на сборки

Данный диалог позволяет добавлять ссылки на сборки из глобального кэша, ссылки на сборки ELMA, ссылки на глобальные модули сценариев, а также добавить ссылку на сборку указав путь до сборки в файловой системе.

Редактирование и отладка в Visual Studio и SharpDevelop

В новой версии системы появилась возможность разрабатывать сценарий в стороннем приложении.

Для перехода в режим редактирования, используются соответствующие кнопки интерфейса.

После открытия сценария в среде разработки, при сохранении и переходе в окно дизайнера, вам будет предложено загрузить внесенные изменения.

В разделе «Сценарии» появилась возможность отладки сценариев в среде разработки. При попытке отладки Вам требуется выбрать процесс, к которому требуется подключится отладчику, и дождаться загрузки.


Изменения в  PublicAPI

Раздел CRM :

PublicAPI.CRM.Contractor.ContractorIndividual.Filter() -  есть изменения в  фильтре :

DocumentEndDate(DateTimeRange documentEnddate) -  Добавлен

Раздел KPI:

Добавленные менеджеры объектов :

PublicAPI.KPI.Objects.KpiActionPermission

KpiActionPermissionFilterHelper PublicAPI.KPI.Objects.KpiActionPermission.Filter()

PublicAPI.KPI.Objects.Models.KpiWorkflowTask

KpiWorkflowTaskFilterHelper PublicAPI.KPI.Objects.Models.KpiWorkflowTask.Filter()

Добавленные методы :

MindMapPermissionFilterHelper PublicAPI.KPI.Objects.MindMapPermission.Filter()

Void PublicAPI.KPI.Objects.KpiTask.AddComment(KpiTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.KPI.Objects.KpiTask.AddComment(KpiTask task, CommentActionModel model)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.KPI.Objects.Performance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, CommentActionModel model)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.KPI.Objects.KPIPerformance.ApprovalTaskPerformance.AddComment(ApprovalTaskPerformance task, CommentActionModel model)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.AddComment(SMARTTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.KPI.Objects.SMART.SMARTTask.AddComment(SMARTTask task, CommentActionModel model)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.AddComment(SMARTTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.KPI.Objects.KPISMART.SMARTTask.AddComment(SMARTTask task, CommentActionModel model)

PublicAPI.KPI.Objects.Models.KpiWorkflowTask.Filter() -  есть изменения в  фильтре :

Statuses(List<TaskBaseStatus> statuses) -  Добавлен

PublicAPI.KPI.Objects.KpiActionPermission.Filter() -  есть изменения в  фильтре :

KpiAction(KpiAction kpiAction) -  Добавлен

PublicAPI.KPI.Objects.MindMapPermission.Filter() -  есть изменения в  фильтре :

MindMap(MindMap mindmap) -  Добавлен

PublicAPI.KPI.Objects.SMART.SMARTTask.Filter() -  есть изменения в  фильтре :

KpiActions(KpiAction[] kpiActions) -  Добавлен

PublicAPI.KPI.Objects.KpiTask.Filter() -  есть изменения в  фильтре :

KpiActions(KpiAction[] kpiActions) -  Добавлен

PublicAPI.KPI.Objects.MindMap.Filter() -  есть изменения в  фильтре :

EditType(Nullable<MindMapEditType> editType) -  Добавлен

PublicAPI.KPI.Objects.KpiAction.Filter() -  есть изменения в  фильтре :

Statuses(ActionStatus[] statuses) -  Добавлен

PublicAPI.KPI.Objects.Target.Filter() -  есть изменения в  фильтре :

UserResponsible(User userResponsible) -  Добавлен

Раздел Docflow:

Добавленные методы :

BinaryFile PublicAPI.Docflow.Document.GetFileByDocumentId(Document document)

String PublicAPI.Docflow.Document.Register(Document document, RegistrationVariant registrationVariant, ReservedRegNumber reservedRegNumber)

String PublicAPI.Docflow.Document.Register(Document document, Depository deal, DocumentFlowType documentFlow, ReservedRegNumber reservedRegNumber)

IEnumerable<Document> PublicAPI.Docflow.Folder.GetAllDocuments(Folder folder)

IEnumerable<Document> PublicAPI.Docflow.Folder.GetAllDocuments(Folder folder, Boolean searchInInnerFolders)

Void PublicAPI.Docflow.DocumentVersion.GenerateByCurrentVersion(Document document, String fileName, Boolean saveOldExtension)

Void PublicAPI.Docflow.DocumentVersion.GenerateByTemplateFile(Document document, String fileName, Boolean saveOldExtension)

Void PublicAPI.Docflow.DocumentVersion.GenerateByFile(Document document, BinaryFile file, String fileName, Boolean saveOldExtension)

DocumentAttachment PublicAPI.Docflow.Objects.DocumentAttachment.Create(Document document, User creationAuthor)

DocumentAttachment PublicAPI.Docflow.Objects.DocumentAttachment.Create(Document document)

MyLegalPersonFilterHelper PublicAPI.Docflow.Objects.MyLegalPerson.Filter()

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.AddComment(SendDocumentTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.SendDocumentTask.AddComment(SendDocumentTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.AddComment(AssignDocumentTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.AssignDocumentTask.AddComment(AssignDocumentTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.AddComment(RegistrationDocumentTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.RegistrationDocumentTask.AddComment(RegistrationDocumentTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.AddComment(CreateDocumentTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.CreateDocumentTask.AddComment(CreateDocumentTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.AddComment(SendToAcquaintanceTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.SendToAcquaintanceTask.AddComment(SendToAcquaintanceTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.AddComment(SendToApprovementTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.BPMN.SendToApprovementTask.AddComment(SendToApprovementTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.AddComment(DocumentAcquaintanceTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.Tasks.DocumentAcquaintanceTask.AddComment(DocumentAcquaintanceTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.AddComment(DocumentTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.Tasks.DocumentTask.AddComment(DocumentTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.AddComment(ResolutionTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.Tasks.ResolutionTask.AddComment(ResolutionTask task, CommentActionModel model)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.AddComment(DocumentApprovementTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Docflow.Objects.Tasks.DocumentApprovementTask.AddComment(DocumentApprovementTask task, CommentActionModel model)

Boolean PublicAPI.Docflow.Objects.Nomenclature.ReservedRegNumber.CanReservRegNumber(RegistrationVariant variant)

ReservedRegNumber PublicAPI.Docflow.Objects.Nomenclature.ReservedRegNumber.ReservRegNumberByVariant(RegistrationVariant variant)

ReservedRegNumber PublicAPI.Docflow.Objects.Nomenclature.ReservedRegNumber.ReservRegNumberByDepository(Depository depository)

ReservedRegNumber PublicAPI.Docflow.Objects.Nomenclature.ReservedRegNumber.CreateReservedRegNumberModel(Depository depository) ( Этот метод устарел )

Numerator PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator()

Numerator PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator(Int64 increment)

Numerator PublicAPI.Docflow.Objects.Nomenclature.Numerator.CreateNumerator(Int64 increment, Guid uid)

Устаревшие методы :

ReservedRegNumber PublicAPI.Docflow.Objects.Nomenclature.ReservedRegNumber.CreateReservedRegNumberModel(Depository depository) ( Этот метод устарел )

PublicAPI.Docflow.Objects.RegistrationCard.Filter() -  есть изменения в  фильтре :

GlobalDepositorySearch(Boolean globalDepositorySearch) -  Удалён

PublicAPI.Docflow.Objects.MyLegalPerson.Filter() -  есть изменения в  фильтре :

HeadOrganizationItem(OrganizationItem headOrganizationItem) -  Добавлен

PublicAPI.Docflow.Types.BudgetExpense.Filter() -  есть изменения в  фильтре :

ExcludeObsolete(Nullable<Boolean> excludeObsolete) -  Добавлен

PublicAPI.Docflow.Types.BudgetIncome.Filter() -  есть изменения в  фильтре :

Budget(Budget budget) -  Добавлен

PublicAPI.Docflow.Objects.Nomenclature.Numerator.Filter() -  есть изменения в  фильтре :

OnlyUsers(Nullable<Boolean> onlyUsers) -  Добавлен

PublicAPI.Docflow.Tasks.Filter() -  есть изменения в  фильтре :

KpiActions(KpiAction[] kpiActions) -  Добавлен

Раздел Processes:

Добавленные методы :

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.AddComment(WorkflowTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Processes.WorkflowTaskBase.WorkflowTask.AddComment(WorkflowTask task, CommentActionModel model)

ProcessMetric PublicAPI.Processes.Objects.ProcessMetricValue.GetMetricByName(WorkflowProcess process, String metricName)

Void PublicAPI.Processes.Objects.ProcessMetricValue.SetMetricValue(ProcessMetric processMetric, Nullable<Double> value)

Void PublicAPI.Processes.Objects.ProcessMetricValue.SetMetricValue(ProcessMetric processMetric, TimeSpan value)

Void PublicAPI.Processes.Objects.ProcessMetricValue.SetMetricValue(ProcessMetric processMetric, TimeSpan value, DateTime period, User executor)

Void PublicAPI.Processes.Objects.ProcessMetricValue.SetMetricValue(ProcessMetric processMetric, Nullable<Double> value, DateTime period, User executor)

Void PublicAPI.Processes.Objects.ProcessMetricValue.IncrementMetricValue(ProcessMetric processMetric, Nullable<Double> value, DateTime period, User executor)

Void PublicAPI.Processes.Objects.ProcessMetricValue.IncrementMetricValue(ProcessMetric processMetric, TimeSpan value, DateTime period, User executor)

Void PublicAPI.Processes.Objects.ProcessMetricValue.IncrementMetricValue(ProcessMetric processMetric, Nullable<Double> value)

Void PublicAPI.Processes.Objects.ProcessMetricValue.IncrementMetricValue(ProcessMetric processMetric, TimeSpan value)

Nullable<Double> PublicAPI.Processes.Objects.ProcessMetricValue.GetMetricValueDouble(ProcessMetric processMetric, DateTime period, User executor)

TimeSpan PublicAPI.Processes.Objects.ProcessMetricValue.GetMetricValueTimeSpan(ProcessMetric processMetric, DateTime period, User executor)

PublicAPI.Processes.Objects.WorkflowProcessListRunning.Filter() -  есть изменения в  фильтре :

IsParent(Nullable<Boolean> isParent) -  Добавлен

Раздел Portal:

Удалённые методы :

Void PublicAPI.Portal.Security.OrganizationItemSecurity.Appoint(User user, IOrganizationItem[] organizationItems)

Добавленные менеджеры объектов :

PublicAPI.Portal.Objects.Tasks.WorkLogTaskChange

PublicAPI.Portal.Objects.Content.PageProfile

PublicAPI.Portal.Objects.Common.PaperPin

PaperPinFilterHelper PublicAPI.Portal.Objects.Common.PaperPin.Filter()

Добавленные методы :

Void PublicAPI.Portal.TaskBase.AddComment(TaskBase task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Portal.TaskBase.AddComment(TaskBase task, CommentActionModel model)

Boolean PublicAPI.Portal.CalendarEvent.CheckEvents(DateTime startDate, DateTime endDate, User user)

Boolean PublicAPI.Portal.CalendarEvent.CheckEvents(DateTime startDate, DateTime endDate, Schedule schedule)

CalendarItemCollection PublicAPI.Portal.CalendarEvent.GetCalendarItems(DateTime startDate, DateTime endDate, Schedule schedule)

SendMessageBuilder PublicAPI.Portal.Messages.MessageBuilder(String messageSubject)

SendMessageBuilder PublicAPI.Portal.Messages.SendMessageBuilder(String messageSubject) ( Этот метод устарел . Используйте метод MessageBuilder)

Void PublicAPI.Portal.TaskBase.Task.AddQuestion(Task task, User recipient, String description, Boolean showAll, IEnumerable<Attachment> attachments)

Void PublicAPI.Portal.TaskBase.Task.AddQuestion(Task task, User recipient, String description, Boolean showAll)

Void PublicAPI.Portal.TaskBase.Task.AddQuestion(Task task, Question question)

Void PublicAPI.Portal.TaskBase.Task.AddComment(Task task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Portal.TaskBase.Task.AddComment(Task task, CommentActionModel model)

Void PublicAPI.Portal.Security.OrganizationItemSecurity.Appoint(User user, OrganizationItem organizationItems)

HierarchyChiefDisplayModel PublicAPI.Portal.Security.OrganizationItemSecurity.GetUserChiefsHierarchy(User user)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.AddComment(ApprovalTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Portal.Objects.Tasks.ApprovalTask.AddComment(ApprovalTask task, CommentActionModel model)

Attachment PublicAPI.Portal.Objects.Common.Attachment.Create(BinaryFile file)

Attachment PublicAPI.Portal.Objects.Common.Attachment.Create(BinaryFile file, User creationAuthor)

Устаревшие методы :

SendMessageBuilder PublicAPI.Portal.Messages.SendMessageBuilder(String messageSubject) ( Этот метод устарел . Используйте метод MessageBuilder)

Скрытые из  дерева PublicAPI:

PublicAPI.Portal.Objects.Tasks.WorkLogTaskChange

PublicAPI.Portal.Objects.Content.PageProfile

PublicAPI.Portal.Objects.Common.Watch.Filter() -  есть изменения в  фильтре :

EntityId(Nullable<Int64> entityId) -  Удалён

PublicAPI.Portal.Objects.Common.PaperPin.Filter() -  есть изменения в  фильтре :

TypeUids(Guid[] typeUids) -  Добавлен

Раздел Projects:

Удалённые менеджеры объектов :

PublicAPI.Projects.Objects.ProjectBudgetApprovalTask

PublicAPI.Projects.Objects.BudgetIncomeItemRef

PublicAPI.Projects.Objects.BudgetExpenseItemRef

Удалённые методы :

Void PublicAPI.Projects.ProjectPlan.SendToApprove(User harmonizator, ProjectPlan plan, DateTime startDate, DateTime endDate, String comment)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Project project, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Project project, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount, String substantiation)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Project project, ProjectPhase phase, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount, String substantiation)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Project project, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Project project, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount, String substantiation)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Project project, ProjectPhase phase, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount, String substantiation)

Добавленные менеджеры объектов:

PublicAPI.Projects.Budgets

PublicAPI.Projects.Budgets.Budget

Budget PublicAPI.Projects.Budgets.Budget.Create(Project project)

Budget PublicAPI.Projects.Budgets.Budget.CreateFrom(Budget oldBudget, Boolean cloneItems, Project newProject)

Budget PublicAPI.Projects.Budgets.Budget.Publish(Budget budget)

Budget PublicAPI.Projects.Budgets.Budget.CreateFrom(Budget oldBudget)

Budget PublicAPI.Projects.Budgets.Budget.CreateFrom(Budget oldBudget, Boolean cloneItems)

Budget PublicAPI.Projects.Budgets.Budget.CreateFrom(Budget oldBudget, Project newProject)

ProjectBudgetApprovalTask PublicAPI.Projects.Budgets.Budget.SendToApprove(User harmonizator, Budget budget, DateTime startDate, DateTime endDate, String comment)

ProjectBudgetApprovalTask PublicAPI.Projects.Budgets.Budget.SendToApprove(User harmonizator, Budget budget, DateTime startDate, DateTime endDate)

Budget PublicAPI.Projects.Budgets.Budget.GetCurrentBudget(Project project)

BudgetFilterHelper PublicAPI.Projects.Budgets.Budget.Filter()

Void PublicAPI.Projects.Budgets.Budget.Approve(ProjectBudgetApprovalTask task)

Void PublicAPI.Projects.Budgets.Budget.Approve(ProjectBudgetApprovalTask task, CommentActionModel model)

Void PublicAPI.Projects.Budgets.Budget.Approve(ProjectBudgetApprovalTask task, String comment)

Void PublicAPI.Projects.Budgets.Budget.Refuse(ProjectBudgetApprovalTask task, CommentActionModel model)

Void PublicAPI.Projects.Budgets.Budget.Refuse(ProjectBudgetApprovalTask task)

Void PublicAPI.Projects.Budgets.Budget.Refuse(ProjectBudgetApprovalTask task, String comment)

PublicAPI.Projects.Budgets.BudgetVersionExpenseItem

BudgetVersionExpenseItem PublicAPI.Projects.Budgets.BudgetVersionExpenseItem.Create(Budget budget, String subject, BudgetExpenseItemRef itemRef, ProjectPhase projectPhase, IEnumerable<BudgetVersionExpenseAmount> amounts)

BudgetVersionExpenseItem PublicAPI.Projects.Budgets.BudgetVersionExpenseItem.Create(Budget budget, String subject, BudgetExpenseItemRef itemRef, IEnumerable<BudgetVersionExpenseAmount> amounts)

BudgetVersionExpenseItem PublicAPI.Projects.Budgets.BudgetVersionExpenseItem.Create(Budget budget, String subject, BudgetExpenseItemRef itemRef)

BudgetVersionExpenseItem PublicAPI.Projects.Budgets.BudgetVersionExpenseItem.Create(Budget budget, String subject, BudgetExpenseItemRef itemRef, ProjectPhase projectPhase)

PublicAPI.Projects.Budgets.BudgetVersionIncomeItem

BudgetVersionIncomeItem PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Create(Budget budget, String subject, BudgetIncomeItemRef itemRef, ProjectPhase projectPhase, IEnumerable<BudgetVersionIncomeAmount> amounts)

BudgetVersionIncomeItem PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Create(Budget budget, String subject, BudgetIncomeItemRef itemRef, IEnumerable<BudgetVersionIncomeAmount> amounts)

BudgetVersionIncomeItem PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Create(Budget budget, String subject, BudgetIncomeItemRef itemRef)

BudgetVersionIncomeItem PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Create(Budget budget, String subject, BudgetIncomeItemRef itemRef, ProjectPhase projectPhase)

BudgetVersionIncomeItemFilterHelper PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Filter()

PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount

BudgetVersionExpenseAmount PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount.Create(Nullable<DateTime> date, Double amount, String substantiation, BudgetVersionExpenseItem expenseItem)

BudgetVersionExpenseAmount PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount.Create(Nullable<DateTime> date, Double amount, String substantiation)

BudgetVersionExpenseAmount PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount.Create(Nullable<DateTime> date, Double amount)

BudgetVersionExpenseAmountFilterHelper PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount.Filter()

PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount

BudgetVersionIncomeAmount PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount.Create(Nullable<DateTime> date, Double amount, String substantiation, BudgetVersionIncomeItem incomeItem)

BudgetVersionIncomeAmount PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount.Create(Nullable<DateTime> date, Double amount, String substantiation)

BudgetVersionIncomeAmount PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount.Create(Nullable<DateTime> date, Double amount)

BudgetVersionIncomeAmountFilterHelper PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount.Filter()

PublicAPI.Projects.Budgets.BudgetExpenseItemRef

BudgetExpenseItemRef PublicAPI.Projects.Budgets.BudgetExpenseItemRef.Create(String name)

BudgetExpenseItemRef PublicAPI.Projects.Budgets.BudgetExpenseItemRef.Create(String name, String description)

BudgetExpenseItemRefFilterHelper PublicAPI.Projects.Budgets.BudgetExpenseItemRef.Filter()

PublicAPI.Projects.Budgets.BudgetIncomeItemRef

BudgetIncomeItemRef PublicAPI.Projects.Budgets.BudgetIncomeItemRef.Create(String name)

BudgetIncomeItemRef PublicAPI.Projects.Budgets.BudgetIncomeItemRef.Create(String name, String description)

BudgetIncomeItemRefFilterHelper PublicAPI.Projects.Budgets.BudgetIncomeItemRef.Filter()

PublicAPI.Projects.Objects.ProjectTaskBase

PublicAPI.Projects.Objects.ProjectTaskBase.ProjectTask

PublicAPI.Projects.Objects.ProjectTaskBase.Milestone

PublicAPI.Projects.Objects.ProjectTaskBase.WorkflowProjectTask

PublicAPI.Projects.Objects.Budgets

PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.AddComment(ProjectBudgetApprovalTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.AddComment(ProjectBudgetApprovalTask task, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.AddComment(ProjectBudgetApprovalTask task, CommentActionModel model)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, Comment comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, Comment comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, TaskPriority priority, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, Comment comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetTaskEndDate(Int64 taskId, DateTime newEndDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLog(Int64 taskId, Int64 minutes)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogHours(Int64 taskId, Int64 hours)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogDays(Int64 taskId, Int64 days)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)

Void PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.CompleteTask(Int64 taskId, CompleteTaskModel model)

ProjectBudgetApprovalTaskFilterHelper PublicAPI.Projects.Objects.Budgets.ProjectBudgetApprovalTask.Filter()

PublicAPI.Projects.Objects.ProjectPlanItem

ProjectPlanItemFilterHelper PublicAPI.Projects.Objects.ProjectPlanItem.Filter()

PublicAPI.Projects.Tasks

ProjectTaskBuilder PublicAPI.Projects.Tasks.CreateProjectTask(Project project) ( Этот метод устарел . Используйте метод ProjectTaskBuilder)

MilestoneBuilder PublicAPI.Projects.Tasks.CreateMilestone(Project project) ( Этот метод устарел . Используйте метод MilestoneBuilder)

WorkflowProjectTaskBuilder PublicAPI.Projects.Tasks.CreateWorkflowProjectTask(Project project) ( Этот метод устарел . Используйте метод WorkflowProjectTaskBuilder)

Void PublicAPI.Projects.Tasks.AddQuestion(ProjectTaskBase projectTask, User recipient, String description, Boolean showAll, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Tasks.AddQuestion(ProjectTaskBase projectTask, User recipient, String description, Boolean showAll)

Void PublicAPI.Projects.Tasks.AddQuestion(ProjectTaskBase projectTask, Question question)

Void PublicAPI.Projects.Tasks.CompleteTask(ProjectTaskBase projectTask, CommentActionModel model, Boolean alertCoexecuters)

Void PublicAPI.Projects.Tasks.CompleteTask(ProjectTaskBase projectTask, String comment, Boolean alertCoexecuters)

Void PublicAPI.Projects.Tasks.CompleteTask(ProjectTaskBase projectTask, Boolean alertCoexecuters)

Void PublicAPI.Projects.Tasks.AddComment(ProjectTaskBase task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Tasks.AddComment(ProjectTaskBase task, String comment)

Void PublicAPI.Projects.Tasks.AddComment(ProjectTaskBase task, CommentActionModel model)

Void PublicAPI.Projects.Tasks.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)

Void PublicAPI.Projects.Tasks.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)

Void PublicAPI.Projects.Tasks.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)

Void PublicAPI.Projects.Tasks.SetFactWorkLog(Int64 taskId, Int64 minutes)

Void PublicAPI.Projects.Tasks.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)

Void PublicAPI.Projects.Tasks.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)

Void PublicAPI.Projects.Tasks.SetFactWorkLogHours(Int64 taskId, Int64 hours)

Void PublicAPI.Projects.Tasks.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)

Void PublicAPI.Projects.Tasks.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)

Void PublicAPI.Projects.Tasks.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)

Void PublicAPI.Projects.Tasks.SetFactWorkLogDays(Int64 taskId, Int64 days)

Void PublicAPI.Projects.Tasks.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)

ProjectTaskBuilder PublicAPI.Projects.Tasks.ProjectTaskBuilder(Project project)

MilestoneBuilder PublicAPI.Projects.Tasks.MilestoneBuilder(Project project)

WorkflowProjectTaskBuilder PublicAPI.Projects.Tasks.WorkflowProjectTaskBuilder(Project project)

Добавленные методы :

Project PublicAPI.Projects.Project.Create(String name, ProjectMetadataHead metadataHead, DateTime startDate, DateTime finishDate, User projectManager)

Project PublicAPI.Projects.Project.Create(String name, ProjectMetadataHead metadataHead, DateTime startDate, DateTime finishDate, User projectManager, Folder folder)

Void PublicAPI.Projects.Project.CloseProject(Project project, WorkflowInstance currentInstance)

Void PublicAPI.Projects.Project.AddUserToProject(Project project, User user)

ProjectPhase PublicAPI.Projects.Project.CreatePhase(Project project, String name, String description, Int64 number)

ProjectPhase PublicAPI.Projects.Project.CreatePhase(Project project, String name, String description)

ProjectPhase PublicAPI.Projects.Project.CreatePhase(Project project, String name)

ProjectPlanApprovalTask PublicAPI.Projects.ProjectPlan.SendToApprove(User harmonizator, ProjectPlan plan, DateTime startDate, DateTime endDate, String comment)

Void PublicAPI.Projects.ProjectPlan.Approve(ProjectPlanApprovalTask task, String comment)

Void PublicAPI.Projects.ProjectPlan.Refuse(ProjectPlanApprovalTask task, String comment)

ProjectTaskBuilder PublicAPI.Projects.ProjectTaskBase.CreateProjectTask(Project project) ( Этот метод устарел . Используйте метод ProjectTaskBuilder)

MilestoneBuilder PublicAPI.Projects.ProjectTaskBase.CreateMilestone(Project project) ( Этот метод устарел . Используйте метод MilestoneBuilder)

WorkflowProjectTaskBuilder PublicAPI.Projects.ProjectTaskBase.CreateWorkflowProjectTask(Project project) ( Этот метод устарел . Используйте метод WorkflowProjectTaskBuilder)

Void PublicAPI.Projects.ProjectTaskBase.AddQuestion(ProjectTaskBase projectTask, User recipient, String description, Boolean showAll, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTaskBase.AddQuestion(ProjectTaskBase projectTask, User recipient, String description, Boolean showAll)

Void PublicAPI.Projects.ProjectTaskBase.AddQuestion(ProjectTaskBase projectTask, Question question)

Void PublicAPI.Projects.ProjectTaskBase.CompleteTask(ProjectTaskBase projectTask, CommentActionModel model, Boolean alertCoexecuters)

Void PublicAPI.Projects.ProjectTaskBase.CompleteTask(ProjectTaskBase projectTask, String comment, Boolean alertCoexecuters)

Void PublicAPI.Projects.ProjectTaskBase.CompleteTask(ProjectTaskBase projectTask, Boolean alertCoexecuters)

Void PublicAPI.Projects.ProjectTaskBase.AddComment(ProjectTaskBase task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTaskBase.AddComment(ProjectTaskBase task, CommentActionModel model)

Void PublicAPI.Projects.ProjectTask.AddComment(ProjectTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTask.AddComment(ProjectTask task, CommentActionModel model)

ProjectWork PublicAPI.Projects.Types.ProjectWork.Create(String projectName, User projectManager, DateTime startDate, DateTime endDate, Folder folder)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.AddComment(ProjectTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTaskBase.ProjectTask.AddComment(ProjectTask task, CommentActionModel model)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.AddComment(Milestone task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTaskBase.Milestone.AddComment(Milestone task, CommentActionModel model)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.AddComment(WorkflowProjectTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.AddComment(WorkflowProjectTask task, CommentActionModel model)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Budget budget, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Budget budget, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount, String substantiation)

BudgetIncomeItem PublicAPI.Projects.Budget.BudgetIncome.CreateItem(Budget budget, ProjectPhase phase, BudgetIncomeItemRef budgetIncomeItemRef, String theme, Double amount, String substantiation)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Budget budget, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Budget budget, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount, String substantiation)

BudgetExpenseItem PublicAPI.Projects.Budget.BudgetExpense.CreateItem(Budget budget, ProjectPhase phase, BudgetExpenseItemRef budgetExpenseItemRef, String theme, Double amount, String substantiation)

Void PublicAPI.Projects.Objects.ProjectComplexTask.AddComment(ProjectComplexTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Objects.ProjectComplexTask.AddComment(ProjectComplexTask task, CommentActionModel model)

Void PublicAPI.Projects.Objects.CreateProjectTask.AddComment(CreateProjectTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Objects.CreateProjectTask.AddComment(CreateProjectTask task, CommentActionModel model)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.AddComment(ProjectPlanApprovalTask task, String comment, IEnumerable<Attachment> attachments)

Void PublicAPI.Projects.Objects.ProjectPlanApprovalTask.AddComment(ProjectPlanApprovalTask task, CommentActionModel model)

ProjectPhase PublicAPI.Projects.Objects.ProjectPhase.CreatePhase(Project project, String name, String description, Int64 number)

ProjectPhase PublicAPI.Projects.Objects.ProjectPhase.CreatePhase(Project project, String name, String description)

ProjectPhase PublicAPI.Projects.Objects.ProjectPhase.CreatePhase(Project project, String name)

Устаревшие методы :

Void PublicAPI.Projects.Project.SaveNew(Project project) ( Этот метод устарел )

ProjectPhase PublicAPI.Projects.Project.CreateProjectPhase(ProjectMetadataHead metadataHead, String name) ( Этот метод устарел )

ProjectPhase PublicAPI.Projects.Project.CreateProjectPhase(ProjectMetadataHead metadataHead, String name, String description) ( Этот метод устарел )

ProjectTaskBuilder PublicAPI.Projects.ProjectTaskBase.CreateProjectTask(Project project) ( Этот метод устарел . Используйте метод ProjectTaskBuilder)

MilestoneBuilder PublicAPI.Projects.ProjectTaskBase.CreateMilestone(Project project) ( Этот метод устарел . Используйте метод MilestoneBuilder)

WorkflowProjectTaskBuilder PublicAPI.Projects.ProjectTaskBase.CreateWorkflowProjectTask(Project project) ( Этот метод устарел . Используйте метод WorkflowProjectTaskBuilder)

BudgetIncomeItemRef PublicAPI.Projects.Budget.BudgetIncome.CreateRef(String name) ( Этот метод устарел . Используйте Create(string name))

BudgetIncomeItemRef PublicAPI.Projects.Budget.BudgetIncome.CreateRef(String name, String description) ( Этот метод устарел . Используйте Create(string name, string description))

BudgetExpenseItemRef PublicAPI.Projects.Budget.BudgetExpense.CreateRef(String name) ( Этот метод устарел . Используйте Create(string name))

BudgetExpenseItemRef PublicAPI.Projects.Budget.BudgetExpense.CreateRef(String name, String description) ( Этот метод устарел . Используйте Create(string name, string description))

Скрытые из  дерева PublicAPI:

PublicAPI.Projects.ProjectTaskBase.ProjectTask

PublicAPI.Projects.ProjectTaskBase.Milestone

PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask

PublicAPI.Projects.ProjectTaskBase

Устаревшие менеджеры объектов:

PublicAPI.Projects.Budget.BudgetIncome (Этот раздел для работы с бюджетом устарел.)

PublicAPI.Projects.Budget.BudgetExpense (Этот раздел для работы с бюджетом устарел.)

PublicAPI.Projects.Budget (Этот раздел для работы с бюджетом устарел.)

PublicAPI.Projects.Budgets.BudgetVersionIncomeItem.Filter() - есть изменения в фильтре:

SearchString(String searchstring) -  Добавлен

PublicAPI.Projects.Budgets.BudgetVersionExpenseAmount.Filter() -  есть изменения в  фильтре :

BudgetVersionExpenseItem(BudgetVersionExpenseItem budgetVersionExpenseItem) -  Добавлен

PublicAPI.Projects.Budgets.BudgetVersionIncomeAmount.Filter() -  есть изменения в  фильтре :

BudgetVersionIncomeItem(BudgetVersionIncomeItem budgetVersionIncomeItem) -  Добавлен

PublicAPI.Projects.Objects.ProjectBudgetApprovalTask.Filter() -  есть изменения в  фильтре :

ApproveStatuses(List<ProjectApprovalStatus> approveStatuses) -  Добавлен

PublicAPI.Projects.Objects.BudgetIncomeItem.Filter() -  есть изменения в  фильтре :

ProjectPhase(ProjectPhase projectphase) -  Добавлен

PublicAPI.Projects.Objects.BudgetExpenseItem.Filter() -  есть изменения в  фильтре :

ProjectPhase(ProjectPhase projectphase ) -  Добавлен

Раздел Enums:

Добавленные перечисления:

PublicAPI.Enums.Projects.BudgetVersionStatus

PublicAPI.Enums.Projects.BudgetVersionStatus.Draft

PublicAPI.Enums.Projects.BudgetVersionStatus.Obsolete

PublicAPI.Enums.Projects.BudgetVersionStatus.Current

PublicAPI.Enums.Projects.BudgetVersionStatus.OnApprovalExecutor

PublicAPI.Enums.Projects.BudgetVersionStatus.Signed

PublicAPI.Enums.KPI.Common.Models.ScaleValueType

PublicAPI.Enums.KPI.Common.Models.ScaleValueType.Value

PublicAPI.Enums.KPI.Common.Models.ScaleValueType.Percent

PublicAPI.Enums.KPI.Common.Models.ScaleValueType.Offset

PublicAPI.Enums.KPI.KPICommon.Models.ScaleValueType

PublicAPI.Enums.KPI.KPICommon.Models.ScaleValueType.Value

PublicAPI.Enums.KPI.KPICommon.Models.ScaleValueType.Percent

PublicAPI.Enums.KPI.KPICommon.Models.ScaleValueType.Offset

PublicAPI.Enums.KPI.MindMapEditType

PublicAPI.Enums.KPI.MindMapEditType.Designer

PublicAPI.Enums.KPI.MindMapEditType.Web

PublicAPI.Enums.KPI.CollectionSubject.Readonly

Раздел Services:

Добавленные менеджеры объектов:

PublicAPI.Services.WatchEntity

Void PublicAPI.Services.WatchEntityServices.ClearForObject(Guid objectUid, Object entityId)

Void PublicAPI.Services.WatchEntityServices.CreateWatchByUser(Guid typeUid, Nullable<Int64> entityId, User user)

PublicAPI.Services.BlobStore

Byte[] PublicAPI.Services.BlobStore.LoadOrNull(String key)

Void PublicAPI.Services.BlobStore.Remove(String key)

PublicAPI.Services.WorkflowMessaging

IList<WorkflowMessageBookmarkInfo> PublicAPI.Services.WorkflowMessaging.GetActiveMessageBookmarkInfos(IEnumerable<WorkflowInstance> instanceList)

IList<WorkflowMessageBookmarkInfo> PublicAPI.Services.WorkflowMessaging.GetActiveMessageBookmarkInfos(IEnumerable<WorkflowInstance> instanceList, Boolean allowSubInstances)

WorkflowMessageSendResult PublicAPI.Services.WorkflowMessaging.SendMessage(WorkflowMessageType messageType, WebData data)

WorkflowMessageSendResult PublicAPI.Services.WorkflowMessaging.SendMessage(WorkflowInstance instance, WorkflowMessageType messageType, WebData data)

PublicAPI.Services.Sms

Void PublicAPI.Services.Sms.SendNotification()

Void PublicAPI.Services.Sms.ClearStatus()

List<SmsSendResult> PublicAPI.Services.Sms.SendMessage(String from, String[] phones, String message, Boolean needFooter)

SmsSendResult PublicAPI.Services.Sms.SendMessage(String phone, String message, Boolean needFooter)

BalanceDetails PublicAPI.Services.Sms.BalanceDetails()

List<String> PublicAPI.Services.Sms.GetValidSenderNames()

List<String> PublicAPI.Services.Sms.GetValidSenderNames(String login, String password)

PublicAPI.Services.Security

Boolean PublicAPI.Services.Security.HasPermission(User user, Permission permission)

Boolean PublicAPI.Services.Security.HasPermission(Permission permission)

Boolean PublicAPI.Services.Security.HasPermission(User user, Permission permission, Object permissionSubject, Boolean skipAdmin)

Boolean PublicAPI.Services.Security.HasPermission(Permission permission, Object target, Boolean skipAdmin)

Boolean PublicAPI.Services.Security.CanCheckPermission(Permission permission, Object target)

Void PublicAPI.Services.Security.RunWithElevatedPrivilegies(Action action)

Void PublicAPI.Services.Security.RunWithElevatedPrivilegiesAndWithDeleted(Action action)

Void PublicAPI.Services.Security.RunWithUsualPrivilegies(Action action)

Void PublicAPI.Services.Security.RunBySystemUser(Action action)

Void PublicAPI.Services.Security.RunByUser(User user, Action action)

PublicAPI.Services.ProductionCalendar

Boolean PublicAPI.Services.ProductionCalendar.IsWorkDay(DateTime dateTime)

DateTime PublicAPI.Services.ProductionCalendar.EvalTargetTime(DateTime startTime, TimeSpan interval)

DateTime PublicAPI.Services.ProductionCalendar.EvalTargetTime(DateTime startTime, Double intervalHours)

TimeSpan PublicAPI.Services.ProductionCalendar.EvalWorkTimeSpanDifference(DateTime startTime, DateTime endTime)

TimeSpan PublicAPI.Services.ProductionCalendar.EvalWorkTimeDifference(DateTime startTime, DateTime endTime)

Double PublicAPI.Services.ProductionCalendar.EvalWorkTimeHoursDifference(DateTime startTime, DateTime endTime)

TimeSpan PublicAPI.Services.ProductionCalendar.GetWorkTimeStart(DateTime day)

TimeSpan PublicAPI.Services.ProductionCalendar.GetWorkTimeEnd(DateTime day)

TimeSpan PublicAPI.Services.ProductionCalendar.GetWorkTimeInDay()

TimeSpan PublicAPI.Services.ProductionCalendar.GetWorkTimeInDay(DateTime day)

Int64 PublicAPI.Services.ProductionCalendar.MinutesInDay()

Int64 PublicAPI.Services.ProductionCalendar.MinutesInDay(DateTime day)

DateTime PublicAPI.Services.ProductionCalendar.AddDays(DateTime startTime, Int32 addDays)

Void PublicAPI.Services.ProductionCalendar.SetHoliday(DateTime date)

Void PublicAPI.Services.ProductionCalendar.SetWorkDayTime(TimeSpan workStart, TimeSpan workEnd, TimeSpan dinnerStart, TimeSpan dinnerEnd)

Void PublicAPI.Services.ProductionCalendar.SetWorkDayTime(TimeSpan workStart, TimeSpan workEnd)

Void PublicAPI.Services.ProductionCalendar.SetWorkDayTime(TimeSpan workStart)

PublicAPI.Services.Email

Void PublicAPI.Services.Email.SendMessage(MailAddress to, String subject, String message, Boolean messageIsHtml, Boolean needFooter, IDictionary`2String, String> headers, IEnumerable<MailMessageFile> files)

Void PublicAPI.Services.Email.SendMessage(MailAddress from, MailAddress to, String subject, String message, Boolean messageIsHtml, Boolean needFooter, IDictionary`2String, String> headers, IEnumerable<MailMessageFile> files)

Void PublicAPI.Services.Email.SendMessage(IEnumerable<MailAddress> to, String subject, String message, Boolean messageIsHtml, Boolean needFooter, IDictionary`2String, String> headers, IEnumerable<MailMessageFile> files, Boolean sendSeparately)

Void PublicAPI.Services.Email.SendMessage(MailAddress from, IEnumerable<MailAddress> to, String subject, String message, Boolean messageIsHtml, Boolean needFooter, IDictionary`2String, String> headers, IEnumerable<MailMessageFile> files, Boolean sendSeparately)

Void PublicAPI.Services.Email.SendMessage(MailMessage message, IEnumerable<MailMessageFile> files)

Void PublicAPI.Services.Email.SendMessage(SmtpSettings smtpSettings, MailMessage message, IEnumerable<MailMessageFile> files)

PublicAPI.Services.Integration1C

CConnectionCollection PublicAPI.Services.Integration1C.GetConnections()

CConnectionSettings PublicAPI.Services.Integration1C.GetConnection(String configName)

Void PublicAPI.Services.Integration1C.CheckConnection(CConnectionSettings connection)

Boolean PublicAPI.Services.Integration1C.CheckConnectionConfiguration(String configName)

ICConfiguration PublicAPI.Services.Integration1C.GetFullConfiguration(String configName)

ICConfiguration PublicAPI.Services.Integration1C.GetCurrentConfiguration(String configName)

Void PublicAPI.Services.Integration1C.EnableConfiguration(String configName)

Void PublicAPI.Services.Integration1C.DisableConfiguration(String configName)

Void PublicAPI.Services.Integration1C.RebootConfiguration(String configName)

ComObject PublicAPI.Services.Integration1C.GetComConnector(String configName)

ICProvider PublicAPI.Services.Integration1C.GetProvider(String configName)

T PublicAPI.Services.Integration1C.LoadConfObject(Guid uid)

PublicAPI.Services.Authentication

User PublicAPI.Services.Authentication.GetCurrentUser()

IEnumerable<AuthenticatedSessionInfo> PublicAPI.Services.Authentication.GetActiveSessions()

IEnumerable<AuthenticatedSessionInfo> PublicAPI.Services.Authentication.GetSessions(AuthenticatedSessionFilter filter)

Void PublicAPI.Services.Authentication.RemoveSession(Guid ticketId)

Void PublicAPI.Services.Authentication.RemoveAllUserSessions(Object userId)

PublicAPI.Services.DocumentGenerator

Void PublicAPI.Services.DocumentGenerator.Generate(BinaryFile file, Object dataSource)

Void PublicAPI.Services.DocumentGenerator.Generate(BinaryFile file, Object dataSource, IGeneratorProvider provider)

PublicAPI.Services.File

String PublicAPI.Services.File.SaveFile(BinaryFile binaryFile)

BinaryFile PublicAPI.Services.File.LoadFile(String id)

BinaryFile[] PublicAPI.Services.File.LoadFiles(String[] idList)

Boolean PublicAPI.Services.File.FileExists(String id)

Int64 PublicAPI.Services.File.FileSize(String id)

String PublicAPI.Services.File.RenameFile(String id, String fileName)

BinaryFile PublicAPI.Services.File.CopyFile(BinaryFile sourceBinaryFile)

Void PublicAPI.Services.File.Encrypt(BinaryFile file, String password, String salt)

BinaryFile PublicAPI.Services.File.Decrypt(BinaryFile file, String password)

Void PublicAPI.Services.File.CancelEncrypt(BinaryFile file, String password)

PublicAPI.Services.Scheduler

Void PublicAPI.Services.Scheduler.Run(Guid id, Guid triggerId)

Void PublicAPI.Services.Scheduler.Run(String id, String triggerId)

1. В контроллере EleWise . ELMA . BPM . Web . Tasks . Controllers . WorkLogReportController изменены следующие публичные методы:

a. ActionResult ToApprov (List<long> selectedIds, bool onlySelected, string dayForWeek) на  ActionResult ToApprov (List<long> selectedIds, bool onlySelected, DateTime? dayForWeek)

b. ActionResult ObjectSearchPopup (string popupId, string scriptSelect, string scriptParameters, string date, WorkLogObjectSearchType searchType, WorkLogObjectSearchTabActive activeTab = WorkLogObjectSearchTabActive.History) на  ObjectSearchPopup (string popupId, string scriptSelect, string scriptParameters, DateTime? date, WorkLogObjectSearchType searchType, WorkLogObjectSearchTabActive activeTab = WorkLogObjectSearchTabActive.History)

c. ActionResult GetObject (Guid objectUid, long objectId, string dateStart, string dateEnd, long? harmonizatorId = null) на  ActionResult GetObject (Guid objectUid, long objectId, DateTime? dateStart, DateTime? dateEnd, long? harmonizatorId = null)

d. ActionResult ObjectGrid (GridCommand command, string gridId = null, string selectScript = null, string @from = null, [Bind(Prefix = "DataFilter")] IWorkLogObjectSearchFilter filter = null) на  ActionResult ObjectGrid (GridCommand command, string gridId = null, string selectScript = null, DateTime? @from = null, [Bind(Prefix = "DataFilter")] IWorkLogObjectSearchFilter filter = null)

e. ActionResult SaveDraft ([Bind(Prefix = "Item")]WorkLogReportItem item, string date) на  ActionResult SaveDraft ([Bind(Prefix = "Item")]WorkLogReportItem item, DateTime? date)

f. ActionResult WorkLogGroupUpdate (List<string> workLogIds, long? harmonizatorId, long? activityId, string date) на  ActionResult WorkLogGroupUpdate (List<string> workLogIds, long? harmonizatorId, long? activityId, DateTime? date)

g. ActionResult OvertimeValidate (string dayForWeek, List<long> selectedIds) на  ActionResult OvertimeValidate (DateTime? dayForWeek, List<long> selectedIds)

2. Методконтроллера EleWise . ELMA . BPM . Web . Tasks . Controllers . WorkLogReportController .DateTime? ParseDate удалён .

3. Изменениявмодели EleWise.ELMA.BPM.Web.Tasks.Models. WorkLogItemGridParams:

a. Свойство string DateTo заменено на  DateTime ? DateTo

b. Свойство string DateFrom заменено на  DateTime? DateFrom

4. Класс EleWise.ELMA.Web.Mvc.Components.WorkTimeHelper удален

Заблокированные пользователи в пользовательской группе