Нередко возникает необходимость запускать процесс из какого-либо другого раздела приложения Terrasoft CRM (исключив переход в раздел "Процессы").
Пользователям, перед которыми стоит подобная задача, могу предложить несколько вариантов. Проанализировав их, Вы сможете найти наиболее оптимальное решение в соответствии с необходимыми Вам требованиями.
Итак, представляю три варианта:
1) Начну с легкого: добавление опции в меню действий раздела для запуска одного конкретного процесса.
2) Добавление кнопки в любое место раздела (карточку редактирования, грид, и т.д.) для запуска одного конкретного процесса.
3) Добавление кнопки "Запустить процесс" в любой раздел (подобно той, которая есть в разделе "Процессы"): с возможностью открытия окна выбора всех возможных процессов, существующих в системе.
Реализация 1 варианта (на примере раздела "Контрагенты"):
- открываем wnd_AccountsWorkspace
- на закладке невизуальных компонент добавляем новый ActionMenuItem. Устанавливаем необходимые значения в свойствах Name и Caption.
- переходим в обработчик события OnExecute.
- проверяем используется ли скрипт scr_WindowUtils. Если нет - то подключаем его (в меню "Использовать скрипты")
- в обработчике события прописываем строку
WFStartByID('{DD6891DD-FD4C-4753-8E42-25888CD5A0C3}', null, null);
В эту строку Вам нужно подставить ID Вашего процесса. ID процесса Вы можете посмотреть в таблице tbl_Services на Вашей СУБД.
- сохраните внесенные изменения, перезапустите рабочее приложение и протестируйте работоспособность системы.
Реализация 2 варианта (на примере раздела "Задачи"):
- открываем сервис wnd_TaskGridArea (если нужно добавить кнопку в карточку, то открыть wnd_TaskEdit)
- на закладке визуальных компонент добавляем Button. Присваиваем нужные значения в свойствах Caption и Name
- переходим в обработчик события OnClick
- проверяем, подключен ли скрипт wnd_WindowUtils
- в обработчике события прописываем строку
WFStartByID('{DD6891DD-FD4C-4753-8E42-25888CD5A0C3}', null, null);
В эту строку также Вам необходимо подставить ID cвоего процесса, предварительно скопировав его в буфер обмена из таблицы tbl_Services Вашей СУБД.
- сохраните внесенные изменения, перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы.
Реализация 3 варианта (на примере раздела "Задачи"):
- открываем сервис wnd_TasksGridArea
- добавляем новую кнопку на закладку визуальных компонент и присваиваем нужные значения свойствам Caption и Name
- переходим в обработчик события OnClick
- проверяем подключены ли скрипты scr_WindowUtils и scr_WorkflowUtils
- прописываем в обработчике события вызов функции
SelectServiceByCode('WorkflowDiagram', false, Self, 'StartWorkflow');
- затем в этом же скрипте необходимо найти обработчик события OnNotify и внести в него изменения, согласно предоставленному ниже скрипту
function wnd_TasksGridAreaOnNotify(ScriptableService, Sender, Message, Data) {
if ((Message == 'MSG_OK') && (Sender.Name == 'wnd_TaskEdit') && (TasksGridArea.IsCopy)) {
TasksGridArea.IsCopy = false;
//CopyTaskDetail(Sender.Attributes('RecordID'));
}
if ((Message == MSG_OK)&&(Sender.Tag == 'StartWorkflow')) {
var WorkflowID = Sender.Attributes('KeyValue');
var ID = WFStartByID(WorkflowID);
var Workspaces = Connector.Attributes('MainWindowScript').Workspaces;
var Workspace = Workspaces.Item('wnd_WorkflowWorkspace');
if (Assigned(Workspace)) {
Workspace.Notify(Workspace, 'AddItemInGroup', ID);
}
return;
}
wnd_BaseGridAreaOnNotify(ScriptableService, Sender, Message, Data);
}
- сохраните внесенные изменения, перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы.
Желаю удачи!
С уважением,
Мельникова Екатерина