Расширение серверных вызовов
Пример серверного расширения для взаимодействия с панелью настроек таблицы. Пример содержит клиентский скрипт позволяющий добавить элемент в список контекстного меню с возможностью открыть карточку в модальном окне или скрыть существующий элемент.
Данный пример демонстрирует только изменение панели настроек в таблице с помощью скрипта. |
Начальный код расширения должен импортировать прямо или косвенно все остальные строки, чтобы затем объединить код в один пакет.
extensionManager.registerExtension({ (1)
name: "ExtendServerQueryData",
version: "5.5.17",
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
. -
Перезапустите IIS.
-
Откройте исходящий документ, создайте подчиненное задание с просроченной датой исполнения.
-
Убедитесь, что в таблице исполнения просроченные задания автоматически помечаются индикатором высокого приоритета.