Как я могу утвердить задачу, используя JavaScript?

1

У меня есть функция, реализованная в списке задач.

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

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

var context = new SP.ClientContext.get_current();
var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
var list = context.get_web().get_lists().getByTitle("Test");
var item;
for (item in selectedItems)
{
        var listitem = list.getItemById(selectedItems[item].id);
        listitem.set_item('Completed',true);
        listitem.set_item('PercentComplete',1);
        listitem.set_item('FormData','Completed');
        listitem.set_item('Status','Approved');
        listitem.set_item('WorkflowOutcome','Approved');
        listitem.update();
}

Что я делаю неправильно? Что я должен сделать, чтобы получить разрешение на продолжение работы?

Спасибо,

Теги:
sharepoint
sharepoint-2013

1 ответ

0
Лучший ответ

У меня есть рабочий код:

//редактируем в первой версии, я удалил, по-моему, бесполезные строки кода (теперь прокомментировал), и я подумал, что SPBuiltInFieldId.TaskStatus отличается от Status но они являются одинаковыми полями.

ht["Completed"] = "TRUE";
ht["PercentComplete"] = 1.0f;
//ht[SPBuiltInFieldId.PercentComplete] = 1.0f;
ht["Status"] = "Completed";
//ht[SPBuiltInFieldId.TaskStatus] = SPResource.GetString(new CultureInfo((int)elevWeb.Language, false), Strings.WorkflowStatusCompleted, new object[0]);
ht["WorkflowOutcome"] = outcome;
//ht[SPBuiltInFieldId.WorkflowOutcome] = outcome;
ht["TaskStatus"] = outcome;
ht["FormData"] = outcome;

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

//редактировать

дело в том, что вам нужно установить статус Completed но ваши FormData и WorkflowOutcome соответствуют вашему правильному результату рабочего процесса, то есть Approved

var listitem = list.getItemById(selectedItems[item].id);
listitem.set_item('Completed',true);
listitem.set_item('PercentComplete',1);
listitem.set_item('Status','Completed');
listitem.set_item('FormData','Approved');
listitem.set_item('WorkflowOutcome','Approved');
listitem.update();
  • 0
    Спасибо, но не работает. Я получаю сообщение об ошибке, сообщающее, что поле «TaskStatus» не существует.
  • 0
    мой плохой, я обновил свой ответ с комментариями
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню