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

Имеется БП построенный на задачах.
Требуется закрыть для редактирования поля всех задач в одном бизнес-процессе. Поля необходимо закрыть все кроме дата завершения и ответственный.
Подскажите, более подробно, реализацию метода описанного в этой теме: https://community.terrasoft.ua/forum/topic/3864.
Как я понял из этой же темы через действия БП такой функционал не реализовать?

Нравится

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

Здравствуйте!
В tbl_Task есть поле WorkflowItemID, которое ссылается на таблицу tbl_WorkflowItem, в таблице tbl_WorkflowItem есть поле WorkflowID, которое является записью в tbl_Workflow
В tbl_Workflow есть поля DiagramServiceID,Name, по одному из которых мы можем сделать привязку и понять с какого БП мы создали задачу.
По сути нужно выполнить следующий запрос

SELECT Name FROM dbo.tbl_Workflow
WHERE id = (
		SELECT WorkflowID FROM dbo.tbl_WorkflowItem 
		WHERE ID = (SELECT WorkflowItemID from tbl_Task
		WHERE id = '{ID Задачи}')
		)

В конфигурации данные действия нужно делать через сервисы Dataset:
ds_WorkflowItem
ds_Workflow
Но перед этим их нужно немного доработать, а именно добавить в sq_WorkflowItem, параметр ID и CompareFilter ID
12
Далее на OnPrepare, карточки задачи (wnd_TaskEdit) мы можем делать не активными (свойство IsEnabled) соотвествующие поля

function wnd_TaskEditOnPrepare(Window) {
...
	if (!IsEmpty(WorkflowItemID))
	{
	var WorkflowID = GetDatasetFieldValueByID('ds_WorkflowItem',WorkflowItemID,'WorkflowID');
	var WorkflowName = GetDatasetFieldValueByID('ds_Workflow',WorkflowID,'Name');
		if  (WorkflowName == 'wd_TestTask')
			{
//нужные поля которые необходимо отключить, для примера поле Контрагент edtAccount
		    edtAccount.IsEnabled = false;
		    }
 
	}
} //end of function 

Алексей спасибо, все работает!

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