Ниже представлен список изменений, с которыми вы можете ознакомится уже сейчас, активировав демоверсию ELMA365.
После 14.10.2024 все изменения станут доступны нашим клиентам в их активных компаниях. Обратите внимание, список может быть расширен после релиза.
Пожалуйста, обращайте особое внимание на любые обновления, помеченные тегом #BreakingChangeAlert, так как они могут потребовать дополнительных действий с вашей стороны для адаптации или корректировки вашей текущей конфигурации.
API и SDK
1. TEAM-18222 Реализован новый параметр поиска __item для поиска экземпляров процессов и задач, связанных с элементом приложения. Этот параметр позволяет быстро получать все запущенные или ожидающие рабочие процессы и задачи, связанные с конкретным элементом приложения, без необходимости ручного отслеживания ID процессов. #BreakingChangeAlert
Пример:
Код:
// поиск экземпляров
const instances = await System.processes._searchInstances()
.where(i => i.__item.eq(Context.data.app)).all();
// поиск задач
const tasks = await System.processes._searchTasks()
.where(i => i.__item.eq(Context.data.app)).all();
2. TEAM-29961 Теперь в методах API появилась возможность возвращать несколько cookies в одном ответе.
Код:
let resp = new HttpResponse(200);
resp = resp.cookie("userId", userId).cookie("userLang", "ru");
return resp;
3. TEAM-30189 В справке Web API добавлено описание возможности использовать EQL (Elma Query Language) для фильтрации данных. В статье по фильтрации https://api.elma365.com/ru/public-api/guides/Filter/ также приведен пример использования EQL для выполнения выборки данных в Web API.
4. TEAM-29212 В PublicAPI добавлена новая операция фильтрации like_format, позволяющая осуществлять поиск по частичному совпадению строк с использованием шаблонов. В отличие от операции like, like_format использует управляющие символы % и _ для задания правил поиска:
- % — обозначает любое количество любых символов.
- _ — обозначает один любой символ.
Условие поиска регистронезависимо, что позволяет выполнять фильтрацию без учета регистра символов.
Пример поиска по вхождению слова в название:
Код:
{
"filter": {
"like_format": [
{"field": "__name,
{"const": "%город%"}
]
}
}
Пример поиска регистрационного номера по шаблону заполнения:
Код:
{
"filter": {
"like_format": [
{"field": "regNumber,
{"const": "М86_А_ 777"}
]
}
}
5. TEAM-15832 В TS SDK добавлен метод getReserved() для получения зарезервированного номера документа.
Приложение типа Отчёт
1. TEAM-27926 Добавлена возможность копирования отчета через меню настроек. При копировании сохраняется структура отчета, включая источники данных, добавленные колонки (за исключением удаленных) и привязанные шаблоны документов. Эта функция позволяет быстро создавать похожие отчеты с минимальными изменениями. #BreakingChangeAlert
2. TEAM-29244 Добавлены функции удаления и восстановления отчета. #BreakingChangeAlert
3. TEAM-30231 В контексте виджетов и форм реализовано отображение подтипа для отчетов, аналогично тому, как отображаются подтипы приложений. Это упрощает работу с отчетами и улучшает восприятие структуры контекста.
Переносимые сервисы
1. TEAM-29170 Реализована возможность проброса портов для переносимых сервисов внутри Kubernetes, что позволяет организовать связь между сервисами. Теперь в настройках переносимых сервисов можно задать до 10 портов для проброса. Эта функция закрыта под фича-флагом allowBabysitterOptionalPorts и по умолчанию выключена.
2. TEAM-29447 Добавлена возможность использования секретов в переносимых сервисах, которые задаются через шаблоны из настроек модуля. Теперь вместо передачи секретов в открытом виде, можно использовать переменные из настроек, что повышает безопасность.
Мобильное приложение
TEAM-18156 На странице Администрирование >Настройки компании добавлена настройка Отключить блоки с предложением установить приложение. При активации этой опции пользователи не будут видеть блоки с предложением скачать мобильное или десктопное приложение ELMA365, включая баннеры в профиле и при входе в систему. Это решение актуально для компаний, которые не планируют использовать мобильное приложение по соображениям безопасности или имеют собственную сборку приложения.
Виджеты
1. TEAM-25759 В конструкторе виджетов на вкладке Настройки > Системные функции добавлена функция Уничтожение. Она вызывается при уничтожении виджета и бывает полезна, когда необходимо освободить ресурсы, созданные в процессе работы виджета. Например, очистка взведённых интервалов и таймаутов:
Код:
declare const window: {
setInterval: (fn: () => void, interval: number) => number;
clearInterval: (clearInterval: number) => void;
};
async function onInit(): Promise<void> {
Context.data.counter = 0;
intervalID = window.setInterval(() => {
Context.data.counter!++;
}, 1000);
}
async function destroy(): Promise<void> {
window.clearInterval(intervalID);
}
В данном случае в функцию Уничтожение надо привязать destroy.
Отчет о производительности виджетов
В разделе Администрирование > Инструменты разработчика > Отчет о производительности добавлена вкладка Виджеты. Там отображается сводная статистика по использованию виджетов в системе. Она может быть полезна, чтобы понять наиболее проблемные точки в конфигурации (например, если виджет часто отображается, но скорость отображения невелика). После выявления таких виджетов, можно перейти в конструктор и оптимизировать их.
Чтобы включить сбор статистики по виджетам, надо перейти в Администрирование > Инструменты разработчика и заполнить настройку С кого собирать информацию о производительности виджетов — можно указать пользователей, группы, элементы оргструктуры.
В отчете отображаются следующие колонки:
- Сервис — значение всегда widget;
- Точка входа — раздел и код виджета;
- Количество — сколько раз был отображен виджет за период сбора статистики;
- Время рендеринга (среднее, минимальное, максимальное) — время от начала отображения (включая время выполнения OnInit) и до окончания рендера шаблона виджета;
- Время выполнения OnInit (среднее, минимальное, максимальное) — время выполнения функции инициализации виджета. Часто именно данный показатель влияет на общее время рендеринга, и является местом, которое можно оптимизировать;
- Время подготовки схемы скриптов (среднее, минимальное, максимальное) — поле является системным, т.е. на него нельзя повлиять, но результаты могут потребоваться для анализа производительности со стороны разработчиков системы ELMA365;
- Количество элементов для схемы скриптов (среднее) — поле является системным.
EQL
1. TEAM-29214 В языке запросов EQL добавлена новая операция LIKEF (сокращение от LIKE FORMAT), позволяющая выполнять более гибкий поиск значений свойств с использованием шаблонов.
Отличия от операции LIKE:
- LIKE ищет частичное вхождение подстроки в любом месте значения свойства. Например, запрос [__name] like 'app' найдет элементы с именами app1, some_app, app_some.
- LIKEF позволяет задавать точные правила поиска с использованием специальных символов % и _, обеспечивая более контролируемый поиск.
Правила использования LIKEF:
- Полное совпадение: Если в шаблоне не указаны специальные символы % или _, будет выполнен поиск по полному совпадению (аналогично операции EQ).
- Символ %: Обозначает любое количество символов (в том числе ноль). Может использоваться неограниченное число раз в любом месте шаблона.
- Пример: [__name] likef 'app%' найдет элементы, имена которых начинаются с app, например app, app1, appsome. Не будут найдены 1app, someapp.
- Символ _: Обозначает один любой символ. Может использоваться неограниченное число раз.
- Пример: [__name] likef 'app_' найдет элементы с именами app1, app2, но не app, app11, 1app.
- Комбинация символов: Символы % и _ можно комбинировать для создания сложных шаблонов.
- Пример: [__name] likef '_app%some%45_' позволит найти специфичные варианты имен.
- Экранирование специальных символов: Чтобы искать символы % или _ как часть значения, их необходимо экранировать с помощью обратной косой черты \.
- Пример: [__name] likef '%app\%' найдет элементы, имена которых заканчиваются на app%.
- Эквивалентность с LIKE: Запрос [__name] likef '%app%' эквивалентен [__name] like 'app'.
Операция LIKEF применима для следующих типов данных:
- строка, текст;
- ссылка;
- категория;
- Email;
- телефон;
- ФИО;
- аккаунт.
2. TEAM-29801 Добавлен виджет EQL-поиск. Он позволяет отобразить в виджете компонент ввода выражения EQL для последующего использования этого выражения в функции фильтрации элементов приложений.
3. TEAM-29887 В EQL добавлена возможность искать по полям типа Произвольное приложение. Например:
[workLogObject] IN (FROM [_clients._leads] SELECT [__id] WHERE [__name]='Моя компания')
Где workLogObject — поле типа Произвольное приложение.
Документооборот
1. TEAM-4865 В стандартном разделе Номенклатура улучшены названия для полей поиска:
- Имя файла теперь корректно отображается как Наименование документа, поскольку поиск осуществляется по наименованию документа, а не по файлу.
- Дата начала заменена на Дата регистрации, так как поиск ведется по дате регистрации документа.
- Добавлена возможность поиска по полю Документопоток, чтобы упростить фильтрацию документов по данному критерию.
2. TEAM-19294 Добавлена кнопка +Файл при отправке на согласование или ознакомление файла и пакета. Теперь пользователи могут прикреплять файлы как для согласования, так и для ознакомления. Прикрепленные файлы сохраняются в системной папке system/docflow/files, с корректными правами доступа.
3. TEAM-21532 Теперь при изменении шаблона документа в блоке Генерация по шаблону поля, сопоставленные на вкладке Значения полей, сохраняются. Также при включенной опции Конвертировать в PDF платформа автоматически добавляет префикс .docx для имени файла, что упрощает генерацию документов.
4. TEAM-29702 В настройках переходов в блоках бизнес-процессов появилась новая опция для Подписать. Теперь пользователь может подписать элемент приложения прямо на форме выполнения задачи, нажав на кнопку перехода. При этом нет необходимости добавлять отдельный блок для подписания. Кроме того, комментарий, оставленный при подписании, сохраняется в переменной контекста бизнес-процесса.
5. TEAM-30179 Исправлена работа прав доступа для иерархических справочников. Теперь, при включении опции У всех пользователей есть доступ к Приложению и ко всем его элементам, автоматически выдается полный доступ ко всем папкам справочника. Ранее права выдавались вручную, и пользователи могли видеть только папку Все записи.
Проекты
TEAM-29751 Реализован учет и отображение фактических дат запуска и выполнения проектных задач с типом Процесс. Фактические даты проставляются по факту запуска и завершения бизнес-процессов. Отображаются на форме просмотра задачи-процесса и влияют на отображение календарного плана в режиме Факт.
Лента, каналы, чаты
1. TEAM-3600 В Ленте, ленте объекта, виджете Лента объекта, каналах, приватных и групповых чатах реализована возможность загрузки множества файлов.
2. TEAM-26440 Теперь можно добавлять чаты в Избранное через контекстное меню чата. Добавленные чаты отображаются на вкладке Избранное для быстрого доступа. Сообщения каналов и ленты, ранее добавленные в избранное, перемещены в раздел Избранное > Сообщения.
3. TEAM-28094 Теперь пользователи могут добавлять объекты ленты в Избранное с помощью контекстного меню объекта. Добавленные объекты отображаются на вкладке Избранное ниже избранных чатов, что обеспечивает быстрый доступ к важным элементам.
4. TEAM-28244 Теперь пользователи могут настроить список объектов ленты, исключив из него элементы определенных приложений или процессов, с которыми они не работают.
Предположим, пользователь получает сообщения в ленте приложения Заявки на оплату, но не работаете с элементами этого приложения напрямую и не хочет видеть их у себя в списке объектов. Тогда:
- Пользователь находит элемент приложения Заявки на оплату в списке объектов ленты.
- Нажимает правой кнопкой мыши на этот элемент.
- Выбирает опцию Больше не показывать приложение в списке.
- Все элементы из приложения Заявки на оплату будут скрыты из списка объектов ленты.
- Сообщения из лент этих элементов по-прежнему будут доступны в разделе #Лента.
Импорт и экспорт структур
TEAM-15864 Реализована возможность импорта данных из файлов Excel/CSV для полей типа Таблица в приложениях. Теперь экспортированные данные можно корректно импортировать обратно в систему. Это упрощает перенос больших объемов информации и исключает ошибки при вводе данных.
При экспорте данных с включенной системной информацией сохраняется формат, который поддерживает обратный импорт. При отключенной системной информации отображается количество элементов в формате "Элементов: число".