Блокировка повторного запуска комплексного процесса в 1С: Документооборот 2


Острой проблемой при работе документооборота стал повторный запуск комплексного процесса. Пользователи несколько раз  запускали один и тот же комплексный процесс по документу, не убедившись, что этот же процесс уже запущен. В результате наступил хаос, все возмущались и недоумевали, почему один и тот же документ приходил на согласование и исполнение несколько раз. 

Приступив к внедрению «1С Документооборота» на предприятии, я столкнулся с некоторыми проблемами и неудобствами в работе с данной программой:

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

Проблему повторного запуска процессов удалось победить дополнительной проверкой вновь создаваемого комплексного процесса.

Данная доработка не мешает дальнейшему обновлению конфигурации. Она  была внедрена на версии 2.0.7 и по текущий релиз, 2.1.7  работает без замечаний. 

Порядок внедрения данной доработки:

1. Создаем общий модуль "ДополнительныеПроверкиСервер", содержание модуля в загружаемом файле.

 

2. Создаем подписку на событие "ПередЗаписью" для "БизнесПроцессОбъект.КомплексныйПроцесс" с обработчиком "ДополнительныеПроверкиСервер.ПроверкаНовогоПроцесса"

Теперь программа будет блокировать создание дубликата комплесного процесса, если предудущий аналогичный процесс не завершен.

Дополнение к версии 1.2: Производиться проверка и блокировка повторного запуска процесса только по одному и тому же шаблону. Если в начале названия комплексного процесса есть знак "*", то проверка повторного запуска не производиться.

25 Comments

  1. vasja_yar

    +, жаль текст не видно

    Reply
  2. zabaluev

    Как у вас происходит проверку прав на процесс если у пользователя их нет он не увидит процессы?

    Модуль выполняется в привилегированном режиме, следовательно проверки доступа не выполняются. И обычно повторный запуск процесса пытается сделать тот же самый пользователь, что запустил его в первый раз.

    Reply
  3. it@medipal-onko.ru

    Автор, как сделать условие, чтобы разрешить группе БП запускаться повторно? в нашей системе есть такие.

    Reply
  4. zabaluev

    (3) Не очень понял, что за группа «БП», расшифруйте.

    Reply
  5. it@medipal-onko.ru

    есть группа бизнес процессов, которая требует повторного запуска/ их нужно исключить из блокировки/

    Reply
  6. zabaluev

    Да не проблема, в название комплексного процесса можно добавить ключевой символ, например «#» или «~», и не делать проверку, если такой символ в названии есть.

    Reply
  7. it@medipal-onko.ru

    (6) мне нужно будет поправить запрос? как изменится код подскажите пожалуйста!

    Reply
  8. zabaluev

    Я сделаю новую версию блокировки (версия 1.2), которая будет учитывать эти исключения, ее и скачаете. Подождите пору дней.

    Reply
  9. it@medipal-onko.ru

    (8) Александр, есть ли новости по новой версии?

    Reply
  10. zabaluev

    (9) Ваше пожелание учел в версии 1.2, если название шаблона комплексного процесса начинается со звездочки, проверка не производится.

    Reply
  11. it@medipal-onko.ru

    (10) Здравствуйте. За новую версию мне нужно заплатить?

    Reply
  12. zabaluev

    (11) Просто скачайте. Могу по удаленке поработать с Вами по Документообороту 2.1.

    Reply
  13. user733863

    А на релизе 2.1.10.2 работает?

    Reply
  14. zabaluev

    У нас последний релиз, все работает. Если будут замечания, поправлю.

    Reply
  15. zabaluev

    Текущий 2.1.11.5, все работает.

    Reply
  16. user733863

    Поддержка 1с предлагает ограничить доступность шаблонов процессов при помощи условий маршрутизаций в карточке привязки шаблона процесса к виду документов (Карточка шаблона процесса – Назначен видам документов).

    Чем этот метод лучше?

    Reply
  17. zabaluev

    Мой метод лучше потому, что не надо усложнять условия маршрутизации. Работает уже два года.

    Без этой блокировки, поначалу, чуть не провалил проект, т.к пользователи, не разобравшись,

    запускали по нескольку раз в обработку один и тот же документ. Соответственно начальство

    психовало, согласовывая по три раза одно и тоже.

    Reply
  18. user733863

    Понятно, что такая блокировка жизненно необходима.

    Вопрос как лучше реализовать.

    В вашем методе надо править конфигурация.

    В методе через условия маршрутизации следующие минусы

    — это условие придется добавлять по все шаблоны процессов

    — шаблон пропадает из Отправить – В обработку, но пытливый пользователь может найти его в Отправить – Еще варианты

    Reply
  19. zabaluev

    Правка конфигурации минимальна, только подписка на событие. Объекты типовой конфигурации не меняются. Обновляю конфигурацию без проблем на текущие релизы.

    Reply
  20. lev1nson

    (19)

    етоде через условия маршрутизации сл

    расскажите более подробнее, как это реализуется? Спасибо!

    Reply
  21. zabaluev

    (21) Подписка на событие «БизнесПроцессОбъект.КомплексныйПроцесс» перед записью. Проверяю существование активного процесса по данному предмету по данному шаблону. Если есть, то отказ записи.

    Reply
  22. gull22

    (20)

    Добрый день.

    А перевести в расширение Вашу обработку можно?

    Reply
  23. zabaluev

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

    Reply
  24. kotov2000

    А как избежать вот этой ошибки —

    {ОбщийМодуль.КомандыРаботыСБизнесПроцессамиКлиент.Модуль(27)}: Ошибка при вызове метода контекста (Записать)

    РезультатЗаписи = Форма.Записать(ПараметрыЗаписи);

    по причине:

    Не удалось записать: «Комплексный процесс»!

    Reply
  25. zabaluev

    (25) Если эта ошибка возникает при повторном запуске процесса, то это срабатывает блокировка, предыдущий комплексный процесс не закончен.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *