Добрый день!

Engagement Center 7.6
стандартный процесс - создание обращение через CTI-панель по входящему звонку
В процессе есть параметры ContactID и AccountID
Звонит какой-то пользователь в системе( Supervisor, допустим) другому пользователю.
У этого Supervisor заполнен Контрагент-Наша компания.

Сам процесс на входе как-то получает значения параметров ContactID и AccountID ( звонящий пользователь и его контрагент).
Где это происходит, в каком месте, скажите, пожалуйста?

Нравится

11 комментариев

Добрый день!

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

Настройка процессов для CTI панели
Перечень процессов, который отображается в cti панели настраивается в справочнике "Действие cti панели". В справочнике можно добавлять/удалять кнопки запуска процессов, указывать текст кнопки, сам процесс для запуска и порядок расположения.

Обязательное условие для корректного запуска процесса из cti панели - наличие параметров ContactId, AccountId, PhoneNumber. В эти параметры передаются данные контрагента или контакта по звонку. В процессе можно использовать эти данные для быстрого поиска обращений по абоненту или созданию новой записи с данными из cti панели.
ContactId – принимает идентификатор контакта в звонке, тип данных – справочник, справочник контактов
AccountId – принимает идентификатор контрагента в звонке, тип данных – справочник, справочник контрагентов
PhoneNumber – принимает номер абонента в CTI панели, строка, 250 символов

Отображение процессов для пользователей
Зачастую процессы нужны только пользователям, которые являются сотрудникаци КЦ. Что бы настроить отображение процессов только для нужной группы сотрудников в системе создана группа "Операторы КЦ". Только пользователи, которые включены в эту группу будут видеть кнопки запуска процессов в cti панели.
Если необходимо изменить группу, для которой нужно отображать процессы, это можно сделать в системных настройках. Задать другую группу для отображения процессов можно в настройке "Группа операторов КЦ".

Передача параметров реализована на CTI панеле. Когда пользователь "кликает" по нужному процессу, система передает описанные выше параметры в процесс.

"Передача параметров реализована на CTI панеле. Когда пользователь "кликает" по нужному процессу, система передает описанные выше параметры в процесс."

Расскажите подробнее, пожалуйста, где именно в пакете CTIProcessActions реализована функциональность передачи параметров в процесс.

В itil transitions при добавлении действия в CTI-панель происходит почему-то только передача параметра-контакта, а его контрагент почему-то не передается в параметр.
Хотелось бы понять почему.

Дарья, добрый день!

После ответа на звонок мы идентифицируем либо контрагента либо контакта. И далее панель, при запуске процесса, передает идентифицированную запись. Т.е. либо контакт либо контрагент. Если вы хотите получить контрагента идентифицированного контакта, то лучше его вычитать из самого контакта.

В Engagement Center у вас все же идентифицируется и контакт, и его контрагент. По крайней мере, подставляется и контакт, и его контрагент. Где же в таком случае происходит идентификация контрагента?

Дарья, идентификация Контакта и Контрагента производится процессом "ContactIdentification", который находится в пакете "OperatorCustomerEngagementCenter". В рамках данного процесса сначала производится поиск Контакта, а затем из найденной карточки контакта считывается Контрагент, что видно на скриншоте.

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

Елена, спасибо.
Посмотрите, на схему его теперь, пожалуйста.

В самом начале, идет ветвление:

Если ни определен ни контакт, ни контрагент, то открывается форма поиска клиента: и там уже пользователь либо создает новый контакт, либо выбирает существующий контакт, и из определенной карточки контакта считывается контрагент ( это то, о чем пишите вы - я не про эту ветку подпроцесса спрашивала)

Если же определен либо Контакт, либо Контрагент, то происходит сразу же выход из-под процесса
( эта стрелка самая верхняя - в ней условия [#Контакт#] != Guid.Empty || [#Контрагент#] != Guid.Empty).
Как вы видите, в этом ветке не происходит никакого считывания контрагента.
После создается обращение по процессу - в котором заполнены и контакт, и контрагент.
Вопрос - где в данном случае происходит определение контрагента? Полагаю, что и контрагент, и контакт передаются как входящие параметры в процесс.
Это возвращает нас к моему первоначальному вопросу:
"Расскажите подробнее, пожалуйста, где именно в пакете CTIProcessActions реализована функциональность передачи параметров в процесс." Где именно, в каком сервисе, каком пакете это определяется?

Дарья, процесс определения Контакта и Контрагента происходит в CTI-панели при входящем звонке, далее эти параметры передаются в процессы.

Ниже привожу код функции, которая определяет параметры в CTI-панели и зашита в коде объекта.

getActionProcessParameters: function() {
var parameters = {
PhoneNumber: this.getLastAbonentNumber()
};
var subscriberKey = this.get("IdentifiedSubscriberKey");
if (!subscriberKey) {
return parameters;
}
var subscriberCollection = this.get("IdentifiedSubscriberPanelCollection");
var subscriberPanel = subscriberCollection.get(subscriberKey);
switch (subscriberPanel.get("Type")) {
case CtiConstants.SubscriberTypes.Contact:
case CtiConstants.SubscriberTypes.Employee:
parameters.ContactId = subscriberPanel.get("Id");
break;
case CtiConstants.SubscriberTypes.Account:
parameters.AccountId = subscriberPanel.get("Id");
break;
default:
break;
}
return parameters;
},

Спасибо. Можете сказать, в каком именно объекте зашита эта функция? Название сервиса?

Дарья, данная функция находится в объекте CtiPanel.

Добрый день!
Про engagement center поняла - спасибо.
по аналогии открыла конфигурацию ITIL transitions 7.5
нашла в объекте CTIPanel эту функцию.
Функция есть и она имеет вид

getActionProcessParameters: function() {
var parameters = {
PhoneNumber: this.getLastAbonentNumber()
};
var subscriberKey = this.get("IdentifiedSubscriberKey");
if (Ext.isEmpty(subscriberKey)) {
return parameters;
}
var subscribers = this.get("IdentifiedSubscribers");
var subscriber = subscribers.get(subscriberKey);
switch (subscriber.SubscriberType) {
case CtiConstants.SubscriberTypes.Contact:
case CtiConstants.SubscriberTypes.Employee:
parameters.ContactId = subscriber.Id;
break;
case CtiConstants.SubscriberTypes.Account:
parameters.AccountId = subscriber.Id;
break;
default:
break;
}
return parameters;
}

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

Но почему-то в ITIL Transitions в процессе при этом будет заполнен только параметр контакт, в результате процесс пойдет по верхней ветке (т.к. там условие заполненности контакта или контрагента), но при этом создается обращение только с заполненным контактом.

Что не так в этой стандартной функции в определении параметров для ITIL?
Может быть исправлено это было в более новых сборках? Я сейчас рассматриваю 7.5.0.1054

Дарья, здравствуйте.

CTIPanel определяет только ИЛИ контакт ИЛИ контрагент и передает их значения в бизнес-процесс.

В рамках рассматриваемого Вами бизнес-процесса срабатывает логика открытия окна редактирования с созданием Обращения. В этом случае срабатывает логика авто заполнения поля контрагент, уже после открытия карточки:

Case.BaseCasePage

onEntityInitialized: function() {
if (this.isAddMode() || this.isCopyMode()) {
this.setCaseNumber();
}
this.Terrasoft.SysSettings.querySysSettingsItem(this.statusDefSysSettingsName, function(value) {
this.set("StatusDefSysSettingsValue", value);
}, this);
this.updateOriginals();
var contact = this.get("Contact");
if (contact && !this.get("Account")) {
var account = contact.Account;
if (account) {
this.set("Account", account);
}
}
this.set("PreviousStatus", this.get("Status"));
this.callParent(arguments);
},

Показать все комментарии

Добрый день!
Почему может не запускаться автоматически процесс управления инцидентами.
Настроены ящик службы поддержки(указан в специальной настройке) и общий ящик.
У пользователя веб-портала в карточке контакт прописан e-mail.

Пользователь веб-портала заводит обращение, оператор назначает ответственного, переводит обращение в состояние в работе и т.п...
Но никакие e-mail сообщения пользователю не приходят,
и вообще сам процесс почему-то не запускается ( в журнале процессов нет о нем информации).

Версия 7.5.0.1138 transitions

Нравится

11 комментариев

Дарья, добрый день.
Чтобы попытаться проанализировать эту ситуацию, пожалуйста, приложите скриншоты:
- настройки почты
- настройки процесса отправки почты
- настройки того процесса из которого вызывается отправка почты

что значит: "настройки процесса отправки почты" и "настройки того процесса,из которого вызывается отправка почты"?
Это стандартный процесс "Управление инцидентами" в стандартной версии bpm service desk itil transitions.
Это коробочная версия

настройки почты - заведены два почтовые записи, прикреплены к учетной записи Supervisor.
Один из этих ящиков указан как ящик службы поддержки в системной настройке,
у другого указано, что он общий.

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

Дарья, добрый день!

Базовый процесс управления инцидентами стартует по следующим событиям:
1. Создано новое обращение, в котором указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями;
2. Изменено любое поле записи обращения, если по результатам сохранения в записи указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями.
В описанном Вами кейсе выполняется работа с существующей записью, но по результатам сохранения запись не соответствует выше перечисленным параметрам.

Рекомендую протестировать запуск и работу процесса повторно с учетом описанной логики.

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

А есть где-нибудь описание вообще этого процесса. Какие шаги, что происходит в том или ином случае.
В руководстве пользователя нет(

Например, процесс корпоративных продаж в руководстве к sales очень хорошо описан, и это удобно.
А вот про процесс управление инцидентов в руководстве к service desk написано пару строчек.

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

Дарья, ниже приведены комментарии по Вашим вопросам.

1. «А есть где-нибудь описание вообще этого процесса. Какие шаги, что происходит в том или ином случае.»

Процесс описан верхнеуровнево на ресурсе Terrasoft Academy (http://academy.terrasoft.ru/documents/?product=transitions&ver=7.5.0) в разделе Функциональность bpm’online ITIL service/Раздел [Обращения]/Бизнес-процесс управления инцидентами.
Если у Вас будут возникать дополнительные вопросы, то мы готовы ответить.

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

Сервисные инженеры в сервисе указываются с целью порекомендовать специалисту поддержки, выполняющему классификацию обращения, в чью компетенцию входит обслуживание текущего сервиса. Иными словами, указав одного или несколько сервисных инженеров по определенному сервису, система не будет автоматически определять ответственно по обращению с таким сервисом, а ограничит список рекомендуемых специалистов для выбора.
Детально данная функциональность описана в параграфе «Подбор сервисных инженеров» раздела Функциональность bpm’online ITIL service/Раздел [Обращения]/Страница обращения на ресурсе Terrasoft Academy (http://academy.terrasoft.ru/documents/?product=transitions&ver=7.5.0)

Ответственный по обращению при этом устанавливается вручную.

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

Задам вопрос по инциденту и процессу тогда:
Если я правильно поняла, система не подставляет ответственного по обращению автоматически (даже если в сервисе указан только один сервисный инженер).
Тогда возникает следующий вопрос:
Вы писали, что базовый процесс по инциденту стартует в этих случаях.
1. Создано новое обращение, в котором указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями;
2. Изменено любое поле записи обращения, если по результатам сохранения в записи указаны:
- Категория = Инцидент
- Состояние = Новое
- заполнены поля "Сервис" и "Ответственный" любыми значениями.

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

Далее оператор видит обращение, и должен его обработать - назначить ответственного(так как там пусто).
В этот момент оператор ни в коем случае не должен переводить инцидент в состояние отличное от "новый", иначе процесс не стартует.
Т.е. например, человек увидев обращение, и выбрав в качестве ответственного себя, должен помнить, что ему не надо переводить пока обращение в другое состояние в этот момент. Правильно я понимаю?

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

Только если будете вносить изменения процесс нужно "Сохранить как новую версию"

Показать все комментарии

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

Реализация - в прикрепленном в файле

Нравится

2 комментария

Используемый метод showGrafInfo должен выглядеть следующим образом:

showGrafInfo: function() {
var processArgs = {
sysProcessName: "ProcessGrafShip",
parameters: {
}
};
ProcessModuleUtilities.executeProcess (processArgs);
},

Спасибо, получилось

Показать все комментарии

Добрый день!
Версия 7.3.0.745
БП создает в фоне активность, при открытии ошибка в логе:

2014-08-06 14:37:11,799 [6660] ERROR IIS APPPOOL\Bonlife_73 Terrasoft.Web.Common.ServiceModel.ErrorHandler ProvideFault - Значение с именем "Id1" не найдено
Terrasoft.Common.ItemNotFoundException: Значение с именем "Id1" не найдено
в Terrasoft.Core.Entities.EntityColumnValueCollection.GetByName(String name)
в Terrasoft.Core.Entities.Entity.ReadData(DataReader reader, EntitySchema schema)
в Terrasoft.Core.Entities.Entity.DeserializeFromJson(UserConnection userConnection, String jsonValue)
в Terrasoft.Core.Process.Configuration.ReadDataUserTask.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.ProcessFlowElement.ReadPropertiesData(DataReader reader)
в Terrasoft.Core.Process.ProcessActivity.ReadPropertiesDataFromDB(UserConnection userConnection)
в Terrasoft.Core.Process.Process.ApplyFlowElementsPropertiesData(DataReader reader)
в Terrasoft.Core.Process.Process.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.WorkWithClient.ApplyPropertiesDataValues(DataReader reader)
в Terrasoft.Core.Process.ProcessFlowElement.ReadPropertiesData(DataReader reader)
в Terrasoft.Core.ProcessEngine.TryGetProcessFromDB(String sysProcessDataId, Process& process)
в Terrasoft.Core.ProcessEngine.FindProcessByUId(String processUId, Boolean findInDB)
в Terrasoft.WebApp.ServiceModel.ProcessEngineService.GetExecutionData(String procElUId, String recordId)
в SyncInvokeGetExecutionData(Object , Object[] , Object[] )
в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
2014-08-06 14:37:11,799 [6660] ERROR IIS APPPOOL\Bonlife_73 Terrasoft.WebApp.FileWebEventProvider RaiseInternal - Date: 06.08.2014 14:37:11
Date (UTC): 06.08.2014 10:37:11

В чем может быть причина?

Нравится

3 комментария

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Иван!

Проблема заключается скорее всего в том, что приложение не может найти активность с параметром Id1. Рекомендую Вам обратить внимание на присваиваемые параметры элемента "Активности" в БП, возможно они указанны некорректно.

Спасибо за участие, проблема была в предшествующем активности элементе чтение данных, при пересоздании которого проблема ушла.

Показать все комментарии

Добрый день. Столкнулся с такой проблемой. В скрипте в фоновом режиме открываю экселевский документ:

        var Excel = new ActiveXObject('Excel.Application');
                var Workbook = Excel.Workbooks.Open(FilePath);

При его закрытии:
        Excel.Application.Quit();
        Excel = '';

Приложение закрывается, но в системе остается висеть процесс EXCEL.EXE.
Как его можно удалить?Заранее спасибо за ответы.

Нравится

6 комментариев

Попробуйте добавить

Excel = System.EmptyValue;
CollectGarbage();

помогло

try{
	setTimeout(CollectGarbage(),1);
}
catch (e){
 
}

Тема закрыта.

не помогло(( CollectGarbage() тоже не чистит!Валерий, делал как вы написали..

Обычно мы используем такой блок, должен работать:

	var ExcelApplication = new ActiveXObject('Excel.Application');
	var WorkBook = ExcelApplication.WorkBooks.Open('имя файла');
	var Sheet = WorkBook.ActiveSheet;
	try
	{
             // тут код
	}
	finally
	{
		Sheet = null;
		WorkBook = null;
		ExcelApplication.Quit();
		ExcelApplication = null;
                CollectGarbage() ;
	}

Здравствуйте, Антон.

Уточните, пожалуйста, вопрос решен?

Да, решен. Спасибо!

Показать все комментарии

Доброго времени суток, уважаемые пользователи интернет сообщества Terrasoft!

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

Для этого, необходимо выполнить следующую последовательность действий:

1. Запустить TS Admin.
2. Открыть скрипт scr_Main (Common \ Library \ Main) и найти функцию function wnd_MainOnShow(Window).
3. В конец функции вставить следующий код:
var WorkflowEngine = GetWorkflowEngine();
var WorkflowUSI = 'Workflow\\Workflow Diagrams\\wd_AutoSale';
var Now = new Date(System.Now()).getVarDate();
var ID = WorkflowEngine.StartWorkflow(WorkflowUSI, Now);
Полностью функция:
1
вместо 'Workflow\\Workflow Diagrams\\wd_AutoSale' не забудьте подставить USI нужного Вам бизнес процесса, при этом не забыв заменить одинарные слэши ('\') на двойные ('\\').
2

4. Сохранить изменения и протестировать результат.

Приятной работы с Terrasoft!

Нравится

Поделиться

0 комментариев
Показать все комментарии

День добрый.

Есть нужда в одновременном запуске нескольких версий TS CRM. Например, внутренняя база компании (скажем XRM 3.3.2) и настраиваемая клиентская база (Sales 3.2.2)

Сейчас запуск второго приложения с другой версией вызывает перерегистрацию библиотек и крах первого приложения. Приходится выходить из одной, запускать другую. А если нужно посмотреть что-то в первой, то закрываем вторую и открываем первую.
Естественно установлены они в разные каталоги. Пробовал переименовывать dll и править настроечные файлы. Не помогло ((

Есть ли способы одновременной работы?

Нравится

6 комментариев

Либо виртуализация, либо замечательный способ есть portable версия, но каковы условия ее предоставления знает правообладатель\разработчик продукта:smile:

А Вы попробуйте с одних и тех же бинарных файлов(XRM) зайти на базу Sales и XRM.

"Глова Сергей" написал:А Вы попробуйте с одних и тех же бинарных файлов(XRM) зайти на базу Sales и XRM.

бинарниками 3.3.2 залезть в 3.2.2 - не пройдет:cool:

"Александр Кудряшов" написал:бинарниками 3.3.2 залезть в 3.2.2 - не пройдет

Вот что означает невнимательное чтение :) я думал версии совпадают :redface:

"Глова Сергей" написал:Вот что означает невнимательное чтение :) я думал версии совпадают :redface:

оптический обман, циферки похожие, сам два раза перечитал:wink:

Если версия одинаковая, то, конечно, всё работает. Проблемы начинаются когда версии разные :sad:

Показать все комментарии

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

Нравится

3 комментария

В базовой конфигурации такой функциональности нет, взгляните на наше расширение (http://community.terrasoft.ua/catalog/4881), возможно заинтересует.

"Валерий Андрусик" написал:

Валерий, ваше решение достаточно интересное хотелось бы узнать о нем подробнее - стоимость, условие внедрения.
Что касается затрагиваемой мною темы, то здесь я считаю что была недоработка системы, т.е. если пользователь отменил действие или что то допустил не то, это другое дело, но запланированная задержка, должна быть задержкой на указанный промежуток времени, а не на все время :smile:

Да, проблему с задержкой обсуждали вот тут:
http://community.terrasoft.ua/ideas/3363

Показать все комментарии

Зачастую при построении бизнес-процесса необходимо огранизовать передачу параметров из диаграммы в элементы, из одного элемента в другой.
В версии 3.3 появился очень удобный функционал, который делает это автоматически и избавляет от необходимости прописывать передачу параметров вручную.
Итак, для того, чтобы передать параметры в бизнес-процессе, необходимо выполнить следующее:
1. Открываем сервис диаграммы. В свойствах диаграммы выбираем Parameters. В появившемся окне создаем параметр диаграммы, например DocumentID. Сохраняем изменения.
2. В том случае если бизнес-процесс состоит из задач, то необходимо также создать этот параметр и для задач. Для этого открываем сервис wa_TaskAction. В свойствах этого действия также есть Parameters. Выбираем это свойство, в появившемся окне добавляем параметр DocumentID для действия задачи. Сохраняем изменения.
3. Далее возвращаемся в диаграмму процесса. Нажимаем на кнопку "Связи параметров". В появившемся окне нужно связать параметр диаграммы и параметр элементов.
Визуально окно разделено на три части. В верхней находятся параметры диаграммы. В нижней левой части перечень всех элементов процесса, в нижней центральной части - параметры каждого из элементов. Так вот, выделяем задачу слева, выбираем параметр задачи DocumentID, нажимаем на кнопку "Изменить". В окне выбираем опцию "Параметр диаграммы" и указываем DocumentID.
Аналогичным образом связываем параметры с каждой задачей.
Сохраняем изменения.
И все...

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

0 комментариев
Показать все комментарии

Нередко возникает необходимость запускать процесс из какого-либо другого раздела приложения 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 и протестируйте работоспособность системы.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

0 комментариев
Показать все комментарии