none
Настраиваемые действия - Сохранение формы при нажатии на кнопку RRS feed

  • Вопрос

  • Добрый день!

    Прошу помочь с сохранением данных в форме редактирования при вызове Настраиваемого действия.

    Я добавил на форму редактирования Настраиваемое действие - запуск WorkFlow. Нажатие на кнопку вызывает рабочий процесс и перекидывает на главную страницу текущего сайта.

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

    Как я пытался решить задачу:

    1. SPServices, operation: "UpdateListItems" - трудоёмкий метод, надо указывать все поля, которые хочешь сохранить, нужно модифицировать при изменении списка полей
    2. Отлов события нажатия кнопки запуска WF (onclick() = ...) и нажатие на кнопку "Сохранить" (click()) - это конкурентное событие и при сохранении формы событие самого Настраиваемого действия не вызывается.

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

Ответы

  • Как вариант: перед сохранением элемента создаёте элемент в другом списке (назовём его wfTask). В этом элементе сохраняете инфу об элементе, для которого нужно запустить wf.
    Далее вешаете wf, который будет вызываться автоматически для вашего списка, при изменении элемента (назовём его wfChecker).
    Теперь, когда создадут элемент (нажмут на вашу кнопку), вы просто сохраняете элемент, далее будет создан элемент в wftask, затем wfChecker проверит элемент-метку в wfTask, если элемент есть, то - удаляем его и запускаем ваш WF для созданного элемента. 

    p.s.: это первое, что в голову пришло, что не требует кодинга. 
    p.s.2: в wfChecker можно проверить даты изменения, чтобы быть уверенным, что элемент реально сохранился. Если не сохранился, то удаляем элемент-метку.


    [custom.development]



Все ответы

  • Как вариант: перед сохранением элемента создаёте элемент в другом списке (назовём его wfTask). В этом элементе сохраняете инфу об элементе, для которого нужно запустить wf.
    Далее вешаете wf, который будет вызываться автоматически для вашего списка, при изменении элемента (назовём его wfChecker).
    Теперь, когда создадут элемент (нажмут на вашу кнопку), вы просто сохраняете элемент, далее будет создан элемент в wftask, затем wfChecker проверит элемент-метку в wfTask, если элемент есть, то - удаляем его и запускаем ваш WF для созданного элемента. 

    p.s.: это первое, что в голову пришло, что не требует кодинга. 
    p.s.2: в wfChecker можно проверить даты изменения, чтобы быть уверенным, что элемент реально сохранился. Если не сохранился, то удаляем элемент-метку.


    [custom.development]



  • Спасибо за совет, Александр, я так делал с EventReceiver - получал письмо, разбирал его по тегам и создавал элемент в другом списке с нужными свойствами + копировал само письмо, а на том списке висел автоматический WF.

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

    Т.е. SPServices, operation: "UpdateListItems" - самое оптимальное решение?

  • SPServices не пользуюсь, поэтому не подскажу.
    Главное, чтобы вы запускали WF, когда элемент действительно сохранён, а не перед попыткой его сохранения. 


    [custom.development]