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

Нравится

Поделиться

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

Приветствую всех.
Предлагаю в данной теме поговорить о проблемах регламентации и внедрения бизнес-процессов. Чтобы не загружать данное сообщение, сошлюсь на свою статью "Играем в «карты» процессов", которая на днях была опубликована на сайте компании Terrasoft (http://terrasoft.ua/academy/articles/21/) и на Terrasoft Community (http://community.terrasoft.ua/bc/practice/2644). Там изложено мое видение данной проблемы на довольно концептуальном уровне.
Но я предлагаю обсуждать любые проблемы (вплоть до технических), с которыми Вы сталкивались при регламентации и внедрении бизнес-процессов в своей практике. И параллельно предлагаю делиться опытом преодоления этих проблем.
Если у Вас есть насущные проблемы связанные с внедрением бизнес-процессов, пожалуйста задавайте их тут, я постараюсь помочь в меру своего опыта и возможностей блога :).
В ближайшем будущем я опишу несколько случаев из моей практики, думаю реальные ситуации будут интересны для многих.

Нравится

Поделиться

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

Павел, здравствуйте!
Вопрос - комментарий запостил но форуме, но и здесь думаю тоже не помешает :)

Хотел обсудить с Вами такой вот пример: были консультанты, все описали, дальше прошла автоматизация описанных процессов и пошла операционная деятельность по автоматизированным процессам. Но откуда не возмись, появился этот кризис и часть персонала была вобщем-то сокращена. А процессы то остались со старыми должностями. Последствия такого решения на автоматизаци процессов возникают всякие разные :) Внимание вопрос: сталкивались Вы уже с такой ситуацией? Если Да, то что делали или сделали бы? Или порекомедовали такой компании?

Спасибо

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

"Художниками" называли себя сотрудники hard-collection, которые якобы так работают с клиентом, что это нельзя регламентировать. Называли "художниками" и персональных менеджеров, которые как-то так работают с VIP клиентами, как и описать нельзя.

Что ответить на это? Нужны ли бизнес-процессы "художникам"? И если нужны, то какие?

да, было дело с художниками...
Нам на огромную схему работы с клиентом показали на маленькую стрелочку и сказали, дословно: "вот тут сосредоточена вся работа художника, ещё нельзя регламентировать"
Очень бы хотелось комментарий эксперта.

Юра, Дима, я конечно не Павел, но попробую ответить на Ваш синхронный вопрос по поводу работы "свободных художников".

А нужно ли регламентировать (читай стандартизировать) их работу? Какую бизнес-задачу мы таким образом решаем?

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

Но не все являются художниками. Некоторым (очень часто продавцам) только так кажется )))

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

Добрый день. Возможно ли каким-то образом из диагаммы процесса, а именно, на выходе из нее, завершить проект? То есть, в диаграмме есть схема последовательности задач, и когда достигаеться конечная стадия, состояние проекта меняеться на "Выполнен". И сразу второй вопрос. Возможно ли запустить процесс при создании задачи?

Заранее благодарю.

Нравится

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

Здравствуйте, Сергей!

Что касается возможности закрытия задачи по завершению процесса, то можем Вам порекомендовать следующее.
Закрытие проекта Вы можете реализовать либо на событии AfterExecute последней задачи по процессу, либо на событии OnFinish элемента Finish процесса. Это будет зависеть от того, какую структуру имеет диаграмма: если в элемент процесса Finish входит только одна ветка, то лучше использовать событие OnFinish этого элемента; если же в этот элемент входит несколько веток (от задач), то реализацию закрытия проекта необходимо прописывать в обработчике события AfterExecute каждой из задач.
В необходимом обработчике события требуется прописать условие типа IsComplete.Value(). А также обработать атрибут проекта (наверняка в диаграмме процесса хранится параметр проекта, с которым связан процесс, и в который передаются значения). Пример обработки параметра представлен ниже:

function Item3OnExecute(ScriptItem, IsComplete) {

var DiagramParameters = ScriptItem.ParentItems.ParentDiagram.Parameters;

var OpportunityID = DiagramParameters.ItemsByName(‘OpportunityID’).Value;

//…здесь в записи проекта по с ID=OpportunityID поставить StateID/StatusID в Завершенное значение

Что касается возможности запуска процесса по действию создания задачи, то Вы можете реализовать подобную функциональность путем использования фукнции StartWorkflowByID ('id процесса'). Эту функцию Вы можете прописать в событии открытия карточки задачи.

Terrasoft Support Team

Здравствуйте. Попробовал добавить выполнение функции
StartWorkflowByID('{06DAE93C-22A5-4B04-BBC7-FE553244DFF7}');

На события src_TaskGridArea -> btnAddOnClick и на src_TaskEdit -> wnd_TaskEditOnPrepare
В обоих случаях вываливаеться ошибка:

Ошибка выполнения метода 'btnAddOnClick'. Предполагается наличие объекта
или
Ошибка выполнения метода 'TaskEditOnPrepare'. Предполагается наличие объекта

Перед выполнением кода, я запустил процесс из вкладки процессы, тогда запись процесса появилась в tbl_Workflow.
Означает ли это, что для того чтобы запустить процесс программно, нужно запустить его из преложения как минимум раз?

В чем может быть проблема? Большое спасибо.

Может быть нужно поключить какие-то дополнительные скрипты?

Здравствуйте, Сергей!

Благодарим Вас за детальное описание поставленной задачи. Для реализации необходимой Вам функциональности требуется выполнить следующее:
1. Необходимо, во-первых, подключить дополнительно скрипт scr_WindowUtils в меню "Использовать скрипты" (если такого не имеется в наличии).
2. В требуемом обработчике события необходимо для вызова конкретного бизнес-процесса прописать следующую строку:
WFStartByID('{DD6891DD-FD4C-4753-8E42-25888CD5A0C3}', null, null);
Вместо указанного кода ID Вам необходимо вставить свой ID, предварительно скопированный в буфер обмена из таблицы tbl_Service Вашей СУБД.
3. Сохраните внесенные изменения, перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность системы.

Здравствуйте. Большое спасибо за помощь.

Подскажите, пожалуйста, как правильно получить идентификатор проекта с которым связана задача? Проект указываеться при создании первой задачи и больше не меняется. Значит, нужно получить этот идентификатор на момент перехода с первой задачи на диаграмме. Наверное на событие
function Action1OnAfterExecute(ActionItem, IsComplete) {}? Откуда можно получить код проекта?
Заранее благодарю.

и еще, скажите пожалуйста, можно ли в диаграмме передавать параметры (такие как контрагент, контакт, проект) из завершенной задачи в новую? Спасибо.

Здравствуйте, Сергей!
Для того, чтобы обеспечить передачу параметра проекта в диаграмму, Вам необходимо выполнить следующее:
1. Создать в диаграмме процесса необходимый параметр, например OpportunityID. Тип этого параметра - строка.
2. Затем необходимо передать этот параметр wa_TaskAction.
3. В диаграмме процесса для элементов-задач нужно настроить передачу параметров. Вам необходимо указать этот параметр и тип модификатора Var (это означает, что в значение параметра элемента будет считано значение соответствующего параметра диаграммы при старте выполнения элемента, и произойдет обратное присвоение при выходе из элемента).
4. Затем для того, чтобы получить параметр OpportunityID по завершении процесса, Вам необходимо выбрать конечный элемент процесса и на событии OnFinish этого элемента прописать следующее:
var OpportunityID = WFGetParamValue.FinishItem.ParentItems.ParentDiagram, ('OpportunityID');
Детальное описание работы функции WFGetParamValue Вы можете найти в скрипте scr_WorkflowUtils.
Также Вы можете использовать и другой способ, а именно:
FinishItem.ParentItems.ParentDiagram.Parameters.ItemsByName('OpportunityID').Value;
В том случае если проект указывается только в первой задаче, то он передается в каждый элемент задачи в ходе отработки бизнес-процесса и попадает в конечный элемент.

Аналогичным образом Вы можете передавать параметры контакта, контаргента, проекта и т.д.

Terrasoft Support Team

Добрый день.

1. Добавил в диаграмму параметры, как на рисунке:

2. Добавил параметры в wa_TaskAction:

3. Для каждого блока задач настроил параметры следующим образом:

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

Также необходимо сохранить проект (идентификатор которого передается в диаграмме), после изменения его состояния. Каким образом можно сохранить изменения?

Спасибо.

Здравствуйте, Сергей!

Благодарим Вас за детальное описание возникшей проблемы.
Вся суть проблемы заключается в том, что в первую задачу по процессу не попадают данные о проекте и контрагенте (в настройках параметров Вы все выполнили корректно). И в результате этого они и не могут передаваться далее по элементам процесса.
Для того, чтобы передать параметры в первую задачу по процессу, Вам необходимо использовать также функцию WFStartByID(о которой мы уже упоминали ранее). Описание реализации этой функции Вы можете просмотреть в scr_WorkflowUtils:
function WFStartByID(WorkflowID, ParamNames, ParamValues);
В качестве аргументов Вам необходимо передать (в конкретном Вашем случае) ID необходимого процесса;
ParamNames - названия параметров, а именно OpportunityID, AccountID и т.д.
ParamValues - значения передаваемых параметров, а именно их ID.
В результате эти параметры передадутся в первую задачу по процессу.

Terrasoft Support Team

Спасибо за помощь.

function Item3OnExecute(ScriptItem, IsComplete) {

var DiagramParameters = ScriptItem.ParentItems.ParentDiagram.Parameters;

var OpportunityID = DiagramParameters.ItemsByName(‘OpportunityID’).Value;

//…здесь в записи проекта по с ID=OpportunityID поставить StateID/StatusID в Завершенное значение

Скажите, пожалуйста, как делаеться обновление записи проекта (обновление состояния) из диаграммы? Спасибо.

Здравcтвуйте, Сергей!

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

function UpdateOpportunityState(OpportunityID, StateID) {
var Prefix = Connector.CurrentUser.IsAdmin ? 'tbl_' : 'vw_';
var SQL = "UPDATE %1Opportunity SET StatusID = '%2' WHERE ID = '%3'";
SQL = FormatStr(SQL, Prefix, StateID, OpportunityID);
Connector.DBEngine.ExecuteCustomSQL(SQL, System.EmptyValue);
}

Terrasoft Support Team

Добрый день. Спасибо за помощь.

Вместо передачи ID проекта (как параметр) в диаграмму, теперь нужно автоматически создавать новый проект перед "входом" в диаграмму (перед запуском первой задачи из нее). Для создания проекта выполняю следующий код на форме:

//СОЗДАНИЕ ПРОЕКТА
var DatasetOpportunity = Services.GetNewItemByUSI('ds_Opportunity');
DatasetOpportunity.Append();
DatasetOpportunity.Values('ID') = Connector.GenGUID();
DatasetOpportunity.Values('Title') = 'новый проект';
DatasetOpportunity.Values('RatingID') = '{541b04fc-d81b-404b-a965-827cdf2976c4}';
DatasetOpportunity.Values('TypeID') = '{274fa07c-72ad-44b3-bab6-57e2e82ce918}';
DatasetOpportunity.Values('CustomerID') = Dataset.Values('AccountID');
DatasetOpportunity.Post();
DatasetOpportunity.Close();

Каким образом я могу узнать ID только что созданного проекта? Спасибо.

Разобрался

Добрый день.
Подскажите, пожалуйста, как в диаграмме, подставить в заголовок новой задачи, значение "Результат подробно" предыдущей задачи?
Попробовал так:

function Action2OnBeforeExecute(ActionItem) {
ActionItem.Caption.Value = Tit.Value; //переменную определил после выполнения предыдущей задачи
}
не получилось.

Заранее благодарен.

Здравствуйте

http://community.terrasoft.ua/forum/topic/1529 (Гамора Дмитрий в пт, 28/03/2008 - 20:56)

Там все подробно описанно. И все работает:)))

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