Удаление (задач, бизнеспроцессов, элементов)

При удалении Задачи - задача является элементом процесса
При удалении Процесса - Связанные записи могут сосуществоать в следующих таблицах tbl_WorkflowItem
При удалении Элемента - Связанные записи могут существовать в следующих таблицах tbl_Task
ВСЁ круг замкнулся. ПОМОГИТЕ!

Нравится

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

Здравствуйте.
Напишите что именно вы хотите сделать. Вы не указали цель, которую хотите достичь.

Через клиент Terrasoft у вас не получиться удалить ни одну из перечисленных вами сущностей.
Вам придется либо менять функционал в администраторе Terrasoft, либо написать в администарторе скрипт, который будет удалять нужные вам записи, либо использовать sql-запросы для удаления нужных записей из БД.

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

delete from tbl_task where id = '{id задачи}'

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

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

Как Вы заметили, удаление бизнес-процессов не предусмотрено в системе Террасофт. Они задуманы быть «вечными» и завершаться после перехода всех элементов в конечную стадию.

Есть два варианта удаления процессов:

Первый вариант

При возникновении «подвисших» процессов есть возможность вручную перевести все незавершенные элементы в конечное состояние (таким образом подтолкнем на механизм завершения процесса). При этом пропадут записи из раздела «Процессы», но останутся связи с объектами системы (например, с задачами). Если Ваша задача – почистить раздел «Процессы» от «подвисших», то этот вариант именно то, что нужно.

Открыть запрос CheckWorkflow.sql (архив scr.rar в прикрепленных файлах)

В первой строчке указать название БД.
В строчках

select @Name = 'wd_Process_name_here'
select @EndState = '{End_State_ID_here}'

указать нужное имя процесса и идентификатор конечного состояния элементов процесса. Его можно узнать в сервисе enm_WorkflowItemState (Workflow\General\Items\enm_WorkflowItemState):
sce1

Проверить, какие элементы выбираются.

Если все в порядке и в результатах запроса именно зависшие, то открыть запрос DeleteWorkflow.sql (архив scr.rar в прикрепленных файлах), произвести такие же изменения строчек и выполнить запрос.
Перезапускать Террасофт не нужно, просто обновить реестр.

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

1. Запустить SQL Management Studio
2. Открыть запрос DeleteWorkflowAll.sql, прикрепленный к письму.
3. Указать во второй строчке название процесса, который следует удалить.
4. Выполнить скрипт. У всех зависимых элементов должны удалиться связи с процессом.

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

Также предлагаю вам SQL запросы для удаления записей в соответвующих сущностях.

delete from frb."tbl_Task"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)
 
delete from frb."tbl_Document"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)
 
delete from frb."tbl_Incident"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)
 
delete from frb."tbl_Invoice"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)
 
delete from frb."tbl_Opportunity"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)
 
delete from frb."tbl_AccountIndustry"
where "WorkflowItemID" in (select "ID" 
from frb."tbl_WorkflowItem"
where "WorkflowID" in
(select "ID"
from frb."tbl_Workflow"
where "CreatedByID" in
(select "ID" from frb."tbl_Contact"
where "Name" like '%ФИО пользователя, для которого нужно завершить БП%'
)and "Name" = 'Название БП')
)

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

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