Расширение серверных вызовов
Пример серверного расширения для взаимодействия с панелью настроек таблицы. Пример содержит клиентский скрипт позволяющий добавить элемент в список контекстного меню с возможностью открыть карточку в модальном окне или скрыть существующий элемент.
Ссылка на пример на GitHub: ExtendServerQueryData.
extensionManager.registerExtension({ (1)
name: "ExtendServerQueryData",
version: "6.1",
globalEventHandlers: [ExtendServerQueryData]
});
1 | Регистрация расширения позволяет корректно установить все обработчики событий, сервисы и прочие сущности web-приложения. |
На следующем шаге необходимо клонировать и заменить собственный сервис контроллера. Ниже приведён код обработчика события, в котором показано, как это сделать:
export function extendServerQueryData(sender: Layout) {
const services = cloneServices(sender.params.services);
replaceService(services, { tasksTreeController: new TasksTreeControllerCustom(sender.params.services)});
sender.params.services = services;
}
Затем на основе метода базовой реализации стандартного класса сформировать новые данные:
export class TasksTreeControllerCustom extends GenControllers.TasksTreeController {
constructor(services) {
super(services);
}
async getTasksTable(request: GenModels.TasksTableLoadOptions, options?: RequestOptions) {
var data = await super.getTasksTable(request, options);
if (data && data.rows) {
data.rows.forEach(row => {
if (row.indicators.includes(GenModels.TasksIndicators.Overdue)) {
row.indicators.push(GenModels.TasksIndicators.HighPriority)
}
})
};
return data;
}
}
Проверка примера
-
Запустите конструктор разметок.
-
Импортируйте решение из файла
ExtendServerQueryData.xml
. -
Сделайте решение
ExtendServerQueryData
активным для карточки типа Документ вида ДокументУД/Исходящий. -
В примере используется стандартная разметка просмотра исходящего документа. На событие
Перед открытием карточки
ЭУLayout
разметки назначается обработчикextendServerQueryData
. -
Перезапустите dvwebclient.
-
Откройте исходящий документ, создайте подчиненное задание с просроченной датой исполнения.
-
Убедитесь, что в таблице исполнения просроченные задания автоматически помечаются индикатором высокого приоритета.