пятница, 6 июня 2014 г.

Как возвращаться на форму элемента после старта рабочего процесса

После старта рабочего процесса из формы элемента - Вас вернет на представление списка.
Поменять такое поведение можно, если добавить немного JavaScript кода на страницу с представлением списка. Код будет читать referrer, брать ID и делать редирект на форму элемента списка. В нашем случае на форму просмотра. При это важно, что бы код отработал только если Вы перешли на страницу после старта рабочего процесса. Это мы сможем понять по присутствию "Workflow.aspx" в referrer.

Код выглядит так:
// Функция позволяет взять параметр из referrer
function getParameterByName(name, url) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(url);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

// Получаем referrer
var ref = document.referrer
// Получаем ID из referrer
var ID = getParameterByName("ID", ref)
if (ref.indexOf("Workflow.aspx") > -1){
// Делаем редирект
    window.location = "/office/Lists/Contractors/DispForm.aspx?ID=" + ID
}

Теперь надо добавить это все в представление списка, воспользуемся SharePoint Designer 2013:
В моем случая я имею только одно представление, откроем его в расширенном режиме и добавим код, как на картинке:
Сохраните изменение и проверьте работу.