Проверка карты маршрута бизнес процесса не выполнена т к карта слишком сложная

Всегда ли поведение бизнес-процесса, созданного на платформе 1С:Предприятие 8 определяется схемой, заложенной разработчиком, или иногда в него могут вмешаться «потусторонние силы»?  Об этом пойдет речь в статье.

В официальной документации по платформе 1С:Предприятие 8.2  в разделе «13.7. Разделение и слияние» поведение бизнес-процесса в точках разделения и слияния описано так:

«Для разделения бизнес-процесса на несколько параллельно (одновременно и независимо) исполняемых ветвей используется точка разделения. Точка разделения имеет один вход и неограниченное количество выходов.

Для синхронизации разделенных ранее ветвей используется точка слияния. Бизнес-процесс не будет выполняться дальше точки слияния, пока все входящие в нее ветви не будут пройдены.»

Продемонстрирую это на примере простой карты маршрута (рис.1)

 Рисунок 1

Рисунок 1

В точке разделения создаются задачи в каждой из ветвей (рис.2),  далее каждая ветвь выполняется параллельно, а задача в точке Действие4 будет создана тогда, когда будут выполнены все задачи каждой ветви (рис.3)

 Рисунок 2

Рисунок 2

Рисунок 3

Рисунок 3

Всегда ли система ведет себя подобным образом. Давайте выясним. Для начала обратим внимание на то, в какой последовательности создаются задачи после точки разделения (рис.4)

 Рисунок 4

Рисунок 4

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

Процедура Действие3ПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

      Для каждого ЗадачаОбъект Из ФормируемыеЗадачи Цикл

            ЗадачаОбъект.ВыполнитьЗадачу();

      КонецЦикла;

КонецПроцедуры

Такой обработчик приведет к тому, что создаваемая задача сразу будет выполнена. Стартуем новый бизнес-процесс с картой маршрута, приведенной на рис.1. И что мы увидим?  После выполнения задачи Действие3 была создана задача Действие4 (рис.5), несмотря на то, что другие ветви процесса еще не выполнены! Тех, кто попытается воспроизвести указанную ситуацию, предупреждаю: у вас вместо написания обработчика для точки Действие3 может оказаться необходимым написать обработчик автовыполнения задачи для точки Действие1 или Действие2. Точка действия, автовыполнение которой «ломает» схему процесса — это именно та точка, в которой создается первая задача после точки разделения. От чего зависит последовательность создания задач, будет рассмотрено ниже.

 Рисунок 5

Рисунок 5

Далее выполним задачу Действие4 и убедимся, что процесс идет дальше, не дожидаясь завершения задач в точках Действие1 и Действие2 (рис.6)!

 Рисунок 6

Рисунок 6

 Далее, когда выполним задачи Действие1 и Действие2, снова создается задача Действие4 (рис.7).

Рисунок 7

Рисунок 7

Такого поведения  простой схемы маршрута никак нельзя предположить, исходя из приведенного в начале статьи описания.  Может это какая-то ошибка отображения схемы?  Нет, на самом деле все так и происходит. Бизнес-процесс не только выполняется дальше точки слияния, не ожидая завершения задач в параллельных ветвях, но и создает повторно задачи в точках маршрута, следующих за  точкой слияния после завершения параллельных ветвей . Смотрим список задач по нашему процессу и видим по 2 задачи для точек Действие4 и Действие5 (рис.8)

Рисунок 8 

Рисунок 8

О чем это говорит? Фактически это означает, что при автоматическом выполнении задачи Действие3 мы получим поведение бизнес-процесса, соответствующее схеме, приведенной на рисунке 9, то есть точка слияния при выполнении одной ветви пропускается. Но это тоже не всегда верно. Если в точке Действие4 мы не будем выполнять первую из созданных задач, до появления второй задачи в результате выполнения параллельных ветвей до точки слияния, то следующая задача в точке Действие5 будет создана только при выполнении обеих задач в точке Действие4, то есть бизнес-процесс как бы исправляет допущенную ранее ошибку игнорирования точки слияния. Далее по схеме маршрута будет создаваться только по одной задаче. Тем, кого заинтересовало такое поведение бизнес-процесса, предлагаю убедиться в этом самостоятельно.

Рисунок 9

Рисунок 9

Рассмотрим другой пример. Предположим, что точка Действие3 является не точкой действия, а точкой вложенного процесса. Для простоты используем следующую схему вложенного бизнес-процесса (рис.10)

 Рисунок 10

Рисунок 10

Если в событии Условие1ПроверкаУсловия ничего не выполнять, такой процесс завершается сразу после старта, не создавая ни одной задачи. На практике такое может встретиться и в более сложных процессах, если необходимость выполнения задач процесса возникает только при выполнении каких-то условий. Заменим точку Действие3 точкой вложенного бизнес-процесса и получим схему, приведенную на рисунке 11.

 Рисунок 11

Рисунок 11

Проверяем работу бизнес-процесса со вложенным процессом и убеждаемся в аналогичном поведении. На рисунке 12 – схема бизнес-процесса после старта.

 Рисунок 12

Рисунок 12

Всегда ли проявляется такое поведение в подобных схемах? Давайте разберемся. Обратим внимание на то, что задачи в точке разделения создаются в том порядке, в каком были добавлены линии в точке разделения. Это можно увидеть, если вывести имена соединительных линий (рис.13).

 Рисунок 13

Рисунок 13

Попробуем поменять местами Линия2 и Линия4. И наконец-то при старте нового процесса мы видим ожидаемый результат (рис.14)

 Рисунок 14

Рисунок 14

Обращаю внимание, что линии обязательно надо поменять местами. Если просто переименовать линии, выходящие из точки разделения, результат останется прежним. Другим способом исправления приведенной проблемы является удаление связи Линия2 , добавление новой связи в точке разделения и соединение ее с точкой вложенного процесса.

Делаем вывод:

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

Эту зависимость следует учитывать и при доработке существующих схем. Допустим, мы решили, что вместо одной задачи в точке Действие1 на рисунке 14, которая у нас начала работать так, как требуется, должен быть вложенный процесс, который при определенных условиях, может выполниться автоматически по условию аналогично рисунку 10. Тогда при старте нашего процесса мы увидим знакомую картину с игнорированием точки слияния (рис.15)

 Рисунок 15

Рисунок 15

В заключение отмечу, что указанное поведение бизнес-процессов было замечено еще на платформе 8.1 и продолжает проявляться на последних релизах 8.2. При подготовке статьи тестирование выполнялось на релизе платформы 8.2.15.310.

   Drac0

12.01.15 — 14:50

Добрый!

Балуемся с бизнес-процессами по-немногу и встретил непонятное поведение. Создана процесс с картой маршрута с тремя точками окончания. После выполнения задачи идет точка выбора варианта. Первый — идет дальше по процессу, 2 и 3 ведут к своим точкам завершения.

По первому пути все идет хорошо. А вот второй и третий выдают сабж. Причем непонятно место ошибки. Из обработки выбора варианты выходит с установленным результатом, а в обработку завершения даже не заходит. Карта маршрута проходит проверку и на глаз все тоже ок. Значения и параметры везде устанавливаются. Гугл и яндекс ничего не знают.

  

Партнерская программа EFSOL Oblako

   Armando

1 — 12.01.15 — 14:59

Карту покажи хоть

   Drac0

2 — 12.01.15 — 15:04

(1) Ща, попробую. У нас инет залочен по самое не могу.

   Drac0

3 — 12.01.15 — 15:06

Как-то так. Вариант сильно черновой.

http://hkar.ru/xSKX

   Ник080808

4 — 12.01.15 — 15:38

   Drac0

5 — 12.01.15 — 15:39

Похоже, результат один: через пару дней яндекс будет хоть что-то выдавать по запросу «Карта маршрута бизнес-процесса содержит ошибки» :)

   Drac0

6 — 12.01.15 — 15:44

О, уже :)

   Ник080808

7 — 12.01.15 — 15:46

(5) я в бп не силен. но вроде точка завершения должна быть одна. Не?

   Drac0

8 — 12.01.15 — 15:47

(7) Нет.

   Ник080808

9 — 12.01.15 — 15:57

(0) так а в какой момент выдает ошибки?

   Ник080808

10 — 12.01.15 — 15:58

(8) жди когда  Armando вернется в ветку. Он точно знает БП. Я сам вот никак их не начну ковырять

   Drac0

11 — 12.01.15 — 16:04

(9) В (0) написано же :)

   Drac0

12 — 12.01.15 — 16:16

(9) Хотя, да, уточню. Ошибка после «Результат согласования драфта».

   Armando

13 — 12.01.15 — 16:17

А «черновик согласовн» куда уходит?

   Drac0

14 — 12.01.15 — 16:20

(13) В «Ожидание скана».

   Drac0

15 — 12.01.15 — 16:24

Даже такой вариант выдает ошибку: http://hkar.ru/xSTW

Вот обработчик выбора:

Процедура РезультатСогласованияЧерновикаОбработкаВыбораВарианта(ТочкаВыбораВарианта, Результат)
    Запрос=Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
                        |    Процессинг_ИсторияСтатусовСрезПоследних.Статус
                        |ИЗ
                        |    РегистрСведений.Процессинг_ИсторияСтатусов.СрезПоследних(
                        |            ,
                        |            Процессинг_Объект = &ПоДокументу
                        |                И Версия = Процессинг_Объект.Версия) КАК Процессинг_ИсторияСтатусовСрезПоследних");
    Запрос.УстановитьПараметр("ПоДокументу",ПоДокументу);
    Рез=Запрос.Выполнить().Выбрать();
    Если Рез.Следующий() тогда
        Если Рез.Статус=Справочники.Процессинг_Статусы.ЧерновикСогласован тогда
            Результат=ТочкаВыбораВарианта.Варианты.ЧерновикСогласован;
        ИначеЕсли Рез.Статус=Справочники.Процессинг_Статусы.ДокументОтменен тогда
            Результат=ТочкаВыбораВарианта.Варианты.ДокументОтменен;
        ИначеЕсли Рез.Статус=Справочники.Процессинг_Статусы.ТребуетсяИсправлениеДокумента тогда
            Результат=ТочкаВыбораВарианта.Варианты.ТребуетсяИсправлениеДокумента;
        КонецЕсли;    
        Возврат;
    КонецЕсли;
    Результат=Неопределено;
КонецПроцедуры

   Armando

16 — 12.01.15 — 16:27

(14) попробуй «черновик согласовн» и «требуется новая скан копия» чтоб входили в точку слияния, а из нее в «ожидание скана»

   Armando

17 — 12.01.15 — 16:29

(16) хотя не

   Drac0

18 — 12.01.15 — 16:29

(16) эмм

   Armando

19 — 12.01.15 — 16:33

выложи cf

   Drac0

20 — 12.01.15 — 16:34

(19) Это точно не могу :)

   GROOVY

21 — 12.01.15 — 16:37

В точке разделения, возможно, две выходящие стрелки в одну точку выходят.

   Drac0

22 — 12.01.15 — 16:39

(21) в первом варианте точно в разные.

   Drac0

23 — 12.01.15 — 16:43

(21) Чтобы наверняка: http://hkar.ru/xSX0

Так тоже ошибка.

   Necessitudo

24 — 12.01.15 — 16:44

Иногда бывает что ошибка не мешает работе бизнес-процессу.

   Drac0

25 — 12.01.15 — 16:45

(24) Не, полноценный эксепшн с откатом транзакции.

  

Drac0

26 — 12.01.15 — 17:00

Итак. Проблема решена. Удалил точку выбора варианта, создал заново такую же и заработало. Пойду выпью чего-нибудь.

(карта БП) Ошибка возникает на втором условии «Решение директора» Ни один из вариантов не работает — вылетает ошибка «Карта маршрута бизнес-процесса содержит ошибки» Пробовал добавлятьудалять варианты, удалять и заново добавлять точку выбора варианта, по-разному компоновать схему. Всё бестолку.

тебе не проще самому его написать ?

реквизит согласовано , к примеру добавить в документ

У  меня через задачи всё  сделано и реквизиты документов

Отладка -остановка по ошибке пробовал ?

никаких результатов точно такая же точка отрабатывает нормально, разнице в коде у них в процедурах никакой

стрелки то в завершение воткни

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

Проблема решилась переименованием всех точек маршрута в Действие1Действие2и тд и ВыборВарианта1ВыборВарианта2

Тэги:

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

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#26



0


11.08.2014 13:39:10

Дмитрий, добрый день!

Цитата
Дмитрий Ратников пишет:

Цитата
Для анализа нам потребуется ваша конфигурация. Пришлите, пожалуйста, .cf файл вашей базы на crm@rarus.ru с пометкой Хотлайн для Натальи Полубенской, или лучше сюда — с целью сэкономить время.

Извиняюсь, что так поздно, вот ссылка на CF:  http://dropmefiles.com/Evg12

Передала разработчику.

 

#27



0


12.08.2014 10:38:58

Добрый день, Наталья!   Есть какие либо продвижения?

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#28



0


12.08.2014 10:40:04

Цитата
Дмитрий Ратников пишет:
Добрый день, Наталья!   Есть какие либо продвижения?

Дмитрий, добрый день!

Разработчик занимается Вашей проблемой, пожалуйста, ожидайте.

 

#29



0


14.08.2014 09:19:29

Добрый день, Наталья.    Какие новости от разработчика?

 

#30



0


14.08.2014 11:03:54

Определили что проблема во вложенном бизнес-процессе «СамовывозСНашегоСкладаПредоплатаРС», вернее как минимум в нем.
На нем падает ошибка  и при обработке карты «ПродажаПолимерснаб» (где он вложенный БП), и когда пытаемся его запустить как самостоятельный БП.

Но карту этого БП в связи с его высокой сложностью пока не удалось проанализировать до конца.
Подобное сообщение об ошибки выдается тогда когда при Разделении БП не все ветки сходятся в точке Слияния. Либо когда после точки Разделения есть сразу точка Условия (но в этом БП такого нет).

 

Алексей Полубенский

Посетитель

Сообщений: 1577
Авторитет:

190

Регистрация: 12.02.2010

#31



0


14.08.2014 11:53:56

Одну из проблем локализовали, нарушено основное правило:

Цитата
Если в карте маршрута присутствуют точка разделения и слияния то следует учитывать то, что все ветки разделения должны сходиться в точке слияния

карта БП «СамовывозСНашегоСкладаПредоплатаРС»: условие «Условие16» с заголовком «Протокол согласования разногласий Покупателя нами подписан?» находится в одной из веток точки Разделения «Разделение3». при этом по условию «Нет» БП сразу уходит на точку Завершения с заголовком «Завершение (Неудача на этапе Самовывоз с нашего склада)».

Думаю, таких моментов несколько. И в других БП аналогично.

Прикрепленные файлы

 

#32



0


14.08.2014 12:03:53

Поскольку карты у вас очень сложные, для отслеживания линий удобно задать им в настройках какой нибудь яркий цвет и максимальную ширину линий

 

#33



0


14.08.2014 13:05:43

Таких моментов очень много. Но проверка карты маршрута не ругалась на это, считает это корректным.(хотя проверка наверно заключается в другом, в отсутствии не замкнутых линий и т.д. ….)

А как это можно обойти? Можете подсказать или предложить что-нибудь?

 

Алексей Полубенский

Посетитель

Сообщений: 1577
Авторитет:

190

Регистрация: 12.02.2010

#34



0


14.08.2014 13:42:50

Цитата
Дмитрий Ратников пишет:
Таких моментов очень много. Но проверка карты маршрута не ругалась на это, считает это корректным.(хотя проверка наверно заключается в другом, в отсутствии не замкнутых линий и т.д. ….)

А как это можно обойти? Можете подсказать или предложить что-нибудь?

Это нельзя обойти, для работы механизма необходимо чтобы все линии Разделения сходились в единой точке Слияния.
Это указано в документации по созданию Бизнес-процессов — «Инструкция по созданию нового бизнес-процесса.pdf». Я его приложил на всякий случай.
Еще одно требование — для всех точек внутри пары точек «Разделение-Слияние» не должно быть линий. уходящих за пределы этих точек. То есть все должно «крутиться» внутри блока «Разделение-Слияние»

Прикрепленные файлы

  • Инструкция по созданию нового бизнес-процесса.pdf (574.93 КБ)

 

#35



0


18.08.2014 11:07:56

Спасибо, переделываем БП под эти требования.

 

#36



0


18.08.2014 14:05:46

Поправил карту маршрута в БП «СамовывозСНашегоСкладаПредоплатаРС» теперь в точках разделения и слияния все линии в этом блоке. Но При создании БП в пользовательской части вы валивается такая ошибка:
{БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме)
Если ЗаписатьВФорме() Тогда
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(1889)}: Значение не является значением объектного типа (Пометка)
{ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(1889)}: Значение не является значением объектного типа (Пометка)

Вопрос на этот раз из-за чего валиться? И допустима ли такая карта маршрута. Линни не выходят за рамки блока разделение/слияние

Прикрепленные файлы

Изменено: Дмитрий Ратников18.08.2014 14:10:12

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#37



0


18.08.2014 14:08:48

Добрый день, Дмитрий!

Цитата
Дмитрий Ратников пишет:
Поправил карту маршрута в БП «СамовывозСНашегоСкладаПредоплатаРС» теперь в точках разделения и слияния все линии в этом блоке. Но При создании БП в пользовательской части вы валивается такая ошибка: {БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме) Если ЗаписатьВФорме() Тогда по причине: Ошибка при выполнении обработчика — ‘ПриЗаписи’ по причине: {ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(1889)}: Значение не является значением объектного типа (Пометка) {ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(1889)}: Значение не является значением объектного типа (Пометка)

Вопрос на этот раз из-за чего валиться? И допустима ли такая карта маршрута. Линни не выходят за рамки блока разделение/слияние

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

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

На таких огромных Картах маршрута очень сложно отследить правильность выполняемых действий и обеспечить точное выполнение условия:

Цитата
Если в карте маршрута присутствуют точка разделения и слияния то следует учитывать то, что все ветки разделения должны сходиться в точке слияния

Изменено: Наталья Полубенская18.08.2014 14:25:13

 

#38



0


18.08.2014 14:26:31

Извиняюсь,  При перезаполнении шаблона  БП 1-ка заглючила. Перезаполнил шаблон. Ошибка другая. Как и была раньше:

{БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме)
Если ЗаписатьВФорме() Тогда
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(2234)}: Значение не является значением объектного типа (ВариантВыполнения)

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#39



0


18.08.2014 14:29:36

Цитата
Дмитрий Ратников пишет:
Извиняюсь, При перезаполнении шаблона БП 1-ка заглючила. Перезаполнил шаблон. Ошибка другая. Как и была раньше:

{БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме) Если ЗаписатьВФорме() Тогда по причине: Ошибка при выполнении обработчика — ‘ПриЗаписи’ по причине: {ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(2234)}: Значение не является значением объектного типа (ВариантВыполнения)

Спасибо, за уточнение. Возможно для анализа, разработчику снова понадобится .cf файл Вашей базы с изменениями в Карте маршрута БП

Изменено: Наталья Полубенская18.08.2014 14:30:11

 

#40



0


18.08.2014 14:33:55

В течении минут 15 выложу ссылку

 

#41



0


18.08.2014 15:06:13

Вот ссылка:

http://dropmefiles.com/eOzpU

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#42



0


18.08.2014 15:12:26

Цитата
Дмитрий Ратников пишет:
Вот ссылка: http://dropmefiles.com/eOzpU

Спасибо, передала разработчику. Пожалуйста, ожидайте его ответа.

 

#43



0


20.08.2014 12:44:32

Добрый день, Наталья!    Есть какие либо продвижения?

 

#44



0


20.08.2014 14:32:43

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

 

#45



0


20.08.2014 14:42:20

Хорошо. Спасибо. Ждём с нетерпением

 

#46



0


22.08.2014 16:41:15

Разобрались. Проблема в данном случае в том что механизм не корректно разбирает карту, когда из точки условия сразу уходит в точку слияния.
Механизм уже доработали для обхода проблемы, но у вас старый релиз УТиВСК 1.1.26.2, а текущий 1.1.29.1. И мы не может передать вам это исправления, поскольку были доработки механизма БСП и он не будет работать на версии 1.1.26.2.

Если вы можете обновиться на релиз 1.1.29.1, то мы вышлем вам обновление механизма.

Либо есть другой вариант обхода — вставить в проблемных местах точки действия. чтобы все условия уходили в точки действия и только потом в точку слияния.

 

#47



0


25.08.2014 11:49:45

Переделал карту маршрута. Убрал точки условий перед слиянием (Обработки вариантов действий не трогал, они приходят в точку слияния)

Теперь выходит такая ошибка

{БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме)
Если ЗаписатьВФорме() Тогда
по причине:
Ошибка при выполнении обработчика — ‘ПриЗаписи’
по причине:
{ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(2005)}: Значение не является значением объектного типа (Вид)

 

Наталья Полубенская

Посетитель

Сообщений: 698
Авторитет:

85

Регистрация: 30.01.2014

#48



0


25.08.2014 12:01:53

Добрый день, Дмитрий!

Цитата
Дмитрий Ратников пишет:
Переделал карту маршрута. Убрал точки условий перед слиянием (Обработки вариантов действий не трогал, они приходят в точку слияния)

Теперь выходит такая ошибка

{БизнесПроцесс.СамовывозСНашегоСкладаПредоплатаРС.Форма.ФормаБизнесПроцесса.Форма(863)}: Ошибка при вызове метода контекста (ЗаписатьВФорме) Если ЗаписатьВФорме() Тогда по причине: Ошибка при выполнении обработчика — ‘ПриЗаписи’ по причине: {ОбщийМодуль.CRM_ЗащищенныеФункции.Модуль(2005)}: Значение не является значением объектного типа (Вид)

Передам разработчику.

Цитата
Алексей Полубенский пишет:
Механизм уже доработали для обхода проблемы, но у вас старый релиз УТиВСК 1.1.26.2, а текущий 1.1.29.1. И мы не может передать вам это исправления, поскольку были доработки механизма БСП и он не будет работать на версии 1.1.26.2.

Если вы можете обновиться на релиз 1.1.29.1, то мы вышлем вам обновление механизма.

Не пробовали обновиться на новый релиз? Может быть Вам попробовать предложенный вариант Алексея Полубенского?

 

#49



0


25.08.2014 13:19:35

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

После создания если ошибка вновь будет падать, тогда нам потребуется новый .cf файл Вашей базы для анализа.

 

Дмитрий Ратников

Заглянувший

Сообщений: 158
Авторитет:

0

Регистрация: 11.04.2012

#50



0


25.08.2014 15:54:11

Нужно проверить что он работает на текущем релизе, уже и так слишком много сделано. Проще убрать условия перед точками слияния. Обновлял существующий шаблон и создавал новый, всё равно ошибка. Ошибку выше присылал. Вот ссылка на cf:

http://dropmefiles.com/uGzlC

В этой статье мы рассмотрим объекты «Бизнес-процессы» и «Задачи».

С одной стороны, подзадача по реализации бизнес-процессов является обязательной на Аттестации 1С:Специалист по платформе.

С другой стороны, во многих типовых решениях бизнес-процессы используются редко. Хотя фактически бизнес-процессов в конфигурациях автоматизировано множество, а сами эти объекты появились аж в 2004 году (с момента выхода «1С:Предприятие 8.0»).

Поэтому, чтобы понимать работу механизмов «Бизнес-процессов» и «Задач», недостаточно просто «подсмотреть в типовой». Возможности данных объектов нужно именно изучать.

Этим мы и займемся в данной статье. Плюс, дадим общие рекомендации по применению данного механизма в решении реальных задач.

Что такое бизнес-процессы в 1С

Безотносительно 1С бизнес-процесс – это совокупность взаимосвязанных действий, направленных на создание продукта или услуги для потребителей.

Примеры бизнес-процессов: производство вентиляторов, допродажа товаров клиента, подбор сотрудников и так далее. Причем часто бизнес-процессы можно детализировать. Например, в производстве продукции можно выделить такие бизнес-процессы, как закупка материалов, передача материалов в производство, движение материалов в производстве, выпуск продукции.

Для наглядной автоматизации бизнес-процессов в платформе «1С:Предприятие 8» существует объект «Бизнес-процесс». Он позволяет выстроить цепочку действий разных пользователей программы, которая приведет к определенному результату. Таким результатом может быть формирование отчетности, утверждение документа, заполнение карточки контрагента.

Объект «Бизнес-процесс» имеет графическое отображение, называемое картой маршрута. Это не что иное, как блок-схема, составленная из «кирпичиков»:

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

Вот пример бизнес-процесса «Закрытие месяца» из 1С:УПП, где встречаются практически все возможные элементы:

Рисунок 1

Продвижение по карте маршрута невозможно реализовать без вспомогательного объекта «Задача» – «двигателя» бизнес-процесса. В каждой точке действия создается одна или несколько задач, и когда все задачи текущей точки завершены, происходит переход к следующей точке карты маршрута.

Использование объектов «Бизнес-процесс» для пользователя похоже на работу с документами:

  • Разные бизнес-процессы соответствуют различным действиям в системе (продажа товара, закрытие месяца, согласование заказа, …). То есть объект «Бизнес-процесс» в конфигурации определяет вид операции.
  • При старте пользователем нового бизнес-процесса создается несколько экземпляров, например – продажа вентиляторов контрагенту А, продажа холодильников контрагенту Б и так далее. То есть пользователь создает любое количество объектов информационной базы для каждого бизнес-процесса.

Практический пример

Рассмотрим практический пример. Необходимо автоматизировать процесс приема сотрудника на работу из 3 последовательных этапов:

  1. Младший кадровик заполняет личные данные сотрудника.
  2. Старший кадровик оформляет приказ о приеме сотрудника в статусе «Проект».
  3. Расчетчик проводит приказ о приеме в статусе «Утвержден».

Каждый этап бизнес-процесса выполняет отдельный пользователь с нужными правами доступа.

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

В реальных задачах также нужно учитывать права доступа. Так, в описанной задаче за утверждение документов «Прием на работу» отвечает расчетчик. А при проведении документа в статусе «Утвержден» формируются движения по регистру сведений «Плановые начисления». То есть расчетчик должен иметь право записи в этот регистр.

Бизнес-процесс будем реализовывать в конфигурации, где уже имеются необходимые документы и справочники:

Рисунок 2

Выгрузку базы с этой конфигурацией можно скачать по ссылке в конце статьи.

Начнем с создания нового бизнес-процесса:

Рисунок 3

В пользовательском режиме новый бизнес-процесс будет создаваться каждый раз при приеме нового сотрудника.

Изобразим карту маршрута бизнес-процесса для поставленной задачи:

Рисунок 4

Рисунок 5

Привязку к исполнителям мы настроим позднее.

В точке условия нужно определить, работал ли принимаемый сотрудник в нашей организации ранее. Если это так, то в базе уже заведен нужный элемент справочника «Физические лица» и заполнены личные данные. Добавим в бизнес-процесс реквизит (тип Булево), который позже обработаем в точке условия (то есть считаем, что пользователь сам определяет при приеме – новый это сотрудник или нет):

Рисунок 6

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

Объект конфигурации «Задача»

За действие пользователя в каждой точке бизнес-процесса отвечает специальный объект «Задача». Он является вспомогательным объектом, но именно с его помощью выстраивается цепочка действий пользователей: в каждой точке действия карты маршрута создаются задачи для одного или нескольких пользователей. Пока текущий пользователь не завершил свою задачу (то есть не установил стандартный реквизит «Выполнена» в значение «Истина»), задачи следующей точки маршрута для других пользователей созданы не будут.

То есть именно при выполнении задач происходит движение бизнес-процесса по карте маршрута.

Для наглядности рассмотрим, как выглядит список задач в демонстрационной базе конфигурации «Документооборот 8 ПРОФ, редакция 2.1». При запуске программы от имени пользователя Федоров О.П. (директор) на начальной странице открывается список всех невыполненных задач пользователя:

Рисунок 7

Вернемся к нашей конфигурации, создадим новый объект:

Рисунок 8

Отметим, что объект «Задача» может использоваться отдельно от объекта «Бизнес-процесс», но никак не наоборот. Используемая задача указывается в настройках бизнес-процесса в конфигураторе, и будет автоматически создаваться в пользовательском режиме при переходе на следующую точку маршрута.

Свяжем бизнес-процесс с задачей:

Рисунок 9

Обратите внимание! Несмотря на то, что в разных точках бизнес-процесса могут создаваться и редактироваться различные объекты системы, тип создаваемых задач на каждом из этапов будет одинаковым. Например, для решаемой задачи будут создаваться элементы справочников “Физические лица” и “Сотрудники”, а также документы “Прием на работу”. При этом в каждой точке бизнес-процесса будут создаваться задачи “Задача исполнителя”.

Более того, в типовых решениях 1С («Документооборот», «Управление торговлей, ред. 11») в разных бизнес-процессах используется один и тот же тип задач, чаще всего он называется «Задача исполнителя». Это делается для того, чтобы пользователь мог видеть общий список своих задач, относящихся к разным видам бизнес-процессов, как в примере выше из «Документооборота».

Адресация задач

Объект «Задача» предоставляет возможность использования вспомогательного регистра сведений, который обеспечивает распределение задач по исполнителям. Этот регистр называется регистром адресации.

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

Однако использование справочника «Пользователи» как единственного измерения адресации на практике неудобно: например, конкретный пользователь может заболеть или сменить место работы, тогда придется перенастраивать адресацию задач. Таким образом, задачи удобнее привязывать не напрямую к пользователю, а к набору ролей, и одного измерения адресации чаще всего недостаточно.

Поэтому для нашего примера создадим в регистре адресации 2 измерения:

Рисунок 10

Здесь используется справочник «Роли исполнителей», который имеет следующие предопределенные элементы:

Рисунок 11

Создадим у задачи реквизиты адресации тех же типов, что и измерения регистра сведений:

Рисунок 12

Укажем для задачи регистр адресации. Для реквизитов адресации задачи настроим соответствие измерениям выбранного регистра сведений:

Рисунок 13

Теперь в карте маршрута бизнес-процесса доступна настройка адресации. Укажем для каждой точки действия нужную роль исполнителя:

Рисунок 14

Чтобы обеспечить ветвление в точке условия, требуется обработчик проверки условия – функция в модуле объекта бизнес-процесса, которая возвращает значение Ложь или Истина. Создадим такой обработчик для точки маршрута ПовторныйПрием:

Рисунок 15

Процедура ПовторныйПриемПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) Результат = Не ЭтоПервичныйПрием; КонецПроцедуры

Чтобы знать, от имени какого пользователя запущен текущий сеанс, нам потребуется параметр сеанса. Создадим его:

Рисунок 16

Укажем, что созданный параметр сеанса будет хранить текущего исполнителя задач, а также укажем основной реквизит адресации для задачи:

Рисунок 17

Сделаем так, чтобы при запуске «1С:Предприятия» в параметр сеанса ТекущийПользователь подбиралось нужное значение из справочника «Пользователи». Соответствие будем устанавливать по имени, и если элемент справочника «Пользователи» с нужным именем не найден, то создадим его. Код функции УстановкаПараметровСеанса() в модуле сеанса:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) ИмяПольз = ИмяПользователя(); ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПольз, Истина); Если Не ЗначениеЗаполнено(ТекПользователь) Тогда НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент(); НовыйПользователь.Наименование = ИмяПольз; НовыйПользователь.Код = ИмяПольз; НовыйПользователь.Записать(); ТекПользователь = НовыйПользователь.Ссылка; КонецЕсли; ПараметрыСеанса.ТекущийПользователь = ТекПользователь; КонецПроцедуры

После того, как все нужные элементы справочника «Пользователи» будут созданы, заполним регистр адресации в режиме «1С:Предприятие»:

Рисунок 18

Обратите внимание! Настройка адресации бизнес-процесса с использованием справочника (в нашем случае это справочник «Роли исполнителей») подразумевает использование предопределенных элементов этого справочника, только они доступны для выбора в точке действия бизнес-процесса.

Отображение задач по исполнителям

Теперь поработаем над формой списка задач. Конечно, пользователю хотелось бы, чтобы по умолчанию в списке задач отображались только его задачи. Для этого создадим форму списка задачи «Задача исполнителя» и в настройках основного реквизита Список поменяем основную таблицу на Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю:

Рисунок 19

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

Рисунок 20

Теперь уже можно попробовать создать экземпляр бизнес-процесса, задачи будут создаваться у нужных пользователей. Для этого под любым пользователем, имеющим права на запись бизнес-процесса «Прием нового сотрудника» (например, под Ивановой А.И.), из раздела «Кадровый учет → Прием нового сотрудника» создаем новый экземпляр бизнес-процесса и стартуем его:

Рисунок 21

Рисунок 22

После этого у пользователя Петрова В.П. в списке задач (Кадровый учет → Задача исполнителя) появится новая задача:

Рисунок 23

Визуализация хода бизнес-процесса

Пока функциональность нашей разработки почти на нуле – только формируются задачи и пользователи вручную отмечают их исполнение.

Для начала хотелось бы иметь возможность отслеживать состояние бизнес-процесса, то есть в какой точке он сейчас находится. Для этого создадим форму бизнес-процесса и добавим на нее реквизит КартаБП типа ГрафическаяСхема, а также выведем элемент управления на форму:

Рисунок 24

Затем в модуле формы бизнес-процесса создадим процедуру ОбновитьКартуМаршрута:

&НаСервере Процедура ОбновитьКартуМаршрута() ОбъектБП = РеквизитФормыВЗначение("Объект"); КартаБП = ОбъектБП.ПолучитьКартуМаршрута(); КонецПроцедуры

Вызовем эту процедуру в обработчике события ПриЧтенииНаСервере формы бизнес-процесса:

&НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) ОбновитьКартуМаршрута(); КонецПроцедуры

После этого при открытии формы бизнес-процесса на карте маршрута будет отмечаться текущее положение:

Рисунок 25

Мы используем обработчик ПриЧтенииНаСервере, т.к. он вызывается самым первым в процессе открытия управляемой формы объекта и выполняется только для уже записанных объектов.

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

Сделаем так, чтобы при нажатии кнопки «Старт» на форме бизнес-процесса карта маршрута обновлялась. Для этого вызовем ту же процедуру ОбновитьКартуМаршрута в обработчике ПослеЗаписиНаСервере:

&НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) ОбновитьКартуМаршрута(); КонецПроцедуры

В таком виде задача может считаться решенной в рамках подготовки к экзамену «1С:Специалист» по платформе. Но мы пойдем немного дальше.

События задач и точек действия бизнес-процессов

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

Итак, добавим в модуль объекта ЗадачаИсполнителя стандартный обработчик ПередВыполнением со следующим кодом:

Процедура ПередВыполнением(Отказ) Исполнитель = ПараметрыСеанса.ТекущийПользователь; КонецПроцедуры

Теперь добавим в бизнес-процесс реквизиты, которые позволят хранить информацию о выполняемых действиях:

Рисунок 26

Поработаем и с задачей. Выведем на форму задачи ссылку на родительский бизнес-процесс и его реквизиты:

Рисунок 27

В наименовании задачи было бы неплохо видеть не только название точки маршрута, но и ФИО человека, которого требуется принять на работу. Для этого в модуле объекта бизнес-процесса определим процедуру УстановитьНаименованиеЗадачи, и будем вызывать ее при создании задач:

Процедура УстановитьНаименованиеЗадачи(ТочкаМаршрутаБизнесПроцесса, Задача) Задача.Наименование = ТочкаМаршрутаБизнесПроцесса.НаименованиеЗадачи + " " + СокрЛП(ФизЛицо.Наименование); КонецПроцедуры Процедура ОбщаяПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого НоваяЗадача Из ФормируемыеЗадачи Цикл УстановитьНаименованиеЗадачи(ТочкаМаршрутаБизнесПроцесса, НоваяЗадача); КонецЦикла; КонецПроцедуры

Процедуру ОбщаяПриСозданииЗадач привяжем к каждой точке маршрута бизнес-процесса. Это можно сделать через карту маршрута:

Рисунок 28

На каждой точке маршрута можно задавать отдельные обработчики событий, если требуется выполнять различные действия.
На этапе выполнения задачи добавим контроль над пользователем со стороны системы: не будем позволять отмечать задачу как выполненную, если необходимые данные не внесены. Для этого в модуль объекта бизнес-процесса добавим функцию ПроверитьВыполнениеЗадачи, которую будем вызывать в обработчике ОбщаяПередВыполнением в каждой точке маршрута (привязка осуществляется также через карту маршрута):

Функция ПроверитьВыполнениеЗадачи(ТочкаМаршрутаБизнесПроцесса, Задача) БП = Задача.БизнесПроцесс; Результат = Ложь; Если ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.ПриемНовогоСотрудника.ТочкиМаршрута.ВводПервичныхДанныхФизлица Тогда Если ЗначениеЗаполнено(БП.ФизЛицо) И ЗначениеЗаполнено(БП.Сотрудник) Тогда Результат = ЗначениеЗаполнено(БП.ФизЛицо.ДатаРождения) И ЗначениеЗаполнено(БП.ФизЛицо.Пол); КонецЕсли; ИначеЕсли ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.ПриемНовогоСотрудника.ТочкиМаршрута.ВводПриемаНаРаботу Тогда Результат = ЗначениеЗаполнено(БП.ПриемНаРаботу); ИначеЕсли ТочкаМаршрутаБизнесПроцесса = БизнесПроцессы.ПриемНовогоСотрудника.ТочкиМаршрута.УтверждениеПриемаНаРаботу Тогда ДокПрием = БП.ПриемНаРаботу; Результат = ЗначениеЗаполнено(ДокПрием.Оклад) И ДокПрием.Статус = Перечисления.СтатусыДокументов.Утвержден; КонецЕсли; Возврат Результат; КонецФункции Процедура ОбщаяПередВыполнением(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ) Если Не ПроверитьВыполнениеЗадачи(ТочкаМаршрутаБизнесПроцесса, Задача) Тогда Сообщить("Не выполнены действия, необходимые для выполнения задачи!", СтатусСообщения.Важное); Отказ = Истина; КонецЕсли; КонецПроцедуры

Готово, можно тестировать!

Подведем итоги

Мы описали только базовые приемы работы с бизнес-процессами и задачами в 1С:Предприятии 8.3. Как минимум, требуется добавить еще множество проверок введенных данных и «красивостей» на уровне форм.

Но цель статьи – показать, как можно использовать объекты системы при автоматизации бизнес-процессов.

Выгрузку базы готового примера можно скачать в конце статьи и использовать в качестве шаблона.

Есть еще множество нюансов, которые просто невозможно рассмотреть в одной статье: программное создание и выполнение задач, групповые задачи, использование вложенных бизнес-процессов, настройка ролей и прав доступа. Плюс зачастую вместо «унылой» формы задачи вызывается форма определенного объекта конфигурации – документа или справочника.

Если эти темы Вам интересны, оставляйте комментарии – и мы продолжим освещать тему бизнес-процессов. :)

Об авторе

Выгрузки ИБ и PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в нее – сделайте это сейчас, и в блоке ниже (на этой странице) появятся ссылки на скачивание материалов.

Ссылка доступна для зарегистрированных пользователей)

Ссылка доступна для зарегистрированных пользователей)

В «1С: Бухгалтерия Предприятия 8.3» делаю Бизнес-процесс, в котором создается некий договор, указывается поэтапная последовательность, в которой пользователи должны согласовывать документ. В табличной части мы указываем номер этапа, и пользователей, которым будут созданы задачи на этом этапе.

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

Вот код модуля Бизнес-процесса, карта маршрута состоит из трех элементов — Старт, Точка Действия — «Созание Задач», и Завершение.


Процедура СозданиеЗадачПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
    Для Каждого Элемент Из Согласованность Цикл
        Если Элемент.Этап=ТекущийЭтап Тогда
            НоваяЗадача=Задачи.ЗадачаДляКурсовой.СоздатьЗадачу();
            НоваяЗадача.БизнесПроцесс=ЭтотОбъект.Ссылка;
            НоваяЗадача.ТочкаМаршрута=БизнесПроцессы.БПКурсовой.ТочкиМаршрута.СозданиеЗадач;
            НоваяЗадача.Наименование="Согласование "+Элемент.Согласователь;
            НоваяЗадача.Ответственный=Элемент.Согласователь;
            НоваяЗадача.Этап=ТекущийЭтап;
            НоваяЗадача.Дата=ТекущаяДата();
            НоваяЗадача.Записать();
            ФормируемыеЗадачи.Добавить(НоваяЗадача);
        КонецЕсли;
    КонецЦикла;
    Записать();
    СтандартнаяОбработка=Ложь;
КонецПроцедуры

Процедура СтартПередСтартом(ТочкаМаршрутаБизнесПроцесса, Отказ)
    Сообщить("Старт БП!");
    Согласованно=Перечисления.СтатусДоговора.НаСогласовании;
    ТекущийЭтап=1;
КонецПроцедуры

Процедура ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)       
    Дгвр=Справочники.ДоговорДляСогласования.НайтиПоНаименованию(Договор).ПолучитьОбъект();
    Если Согласованно=Перечисления.СтатусДоговора.Согласован Тогда
        Дгвр.Согласован=Перечисления.СтатусДоговора.Согласован;
    Иначе
        Дгвр.Согласован=Перечисления.СтатусДоговора.Отклонен;
    КонецЕсли;
    Дгвр.Записать();
КонецПроцедуры


Автоматизация процесса согласования коммерческих предложений

Автоматизация бизнес-процессов. Бизнес-процессы объекта

Организации для повышения эффективности описывают и регламентируют бизнес-процессы закупки, продажи, доставки товара клиенту, согласования договоров . Каждый такой бизнес- процесс представляет описание последовательности этапов работы, выполнение которых приводит к заданному результату. Данное описание называется картой маршрута бизнес-процесса.

Модуль Процессы предназначен для автоматизации бизнес-процессов организации.

Модуль позволяет:

  • Настроить произвольное количество карт маршрутов.
  • Назначить исполнителя каждого этапа.
  • Автоматизировать назначение задания для исполнителей этапов.
  • Зафиксировать результат работы по каждому этапу.

Состоит из компонентов:

  • Карты маршрутов бизнес-процессов — описание и настройка этапов.
  • Бизнес-процессы, запущенные по карте маршрута.
  • Задачи бизнес-процессов, автоматически создаваемые на каждом этапе.

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

Бизнес-процессы объектов

Карты маршрутов бизнес-процессов могут быть 2-х типов:

  1. Карты независимых процессов. Не имеют жесткой связи с объектами базы данных.
  2. Карты бизнес-процессов объектов. Связаны с объектами базы данных (объектами управления). Например, это могут быть процессы согласования руководителем коммерческого предложения или юристом договора с поставщиком.

Рассмотрим признаки, отличающие бизнес-процессы объектов:

  • Всегда запускаются автоматически.
  • Привязаны к документу или элементу справочника (объекту управления).
  • При выполнении задач автоматически изменяется значение одного реквизита объекта управления, которое недоступно для ручного редактирования пользователями. Например, это может быть реквизит Статус документа Коммерческое предложение.
  • При попытке открыть задачу будет открыта форма связанного объекта. Завершение этапа, ввод результатов, просмотр истории выполнения бизнес-процесса и т.п. производится на форме связанного объекта.

Обратите внимание!

  • Для одного объекта управления может одновременно быть запущен только один бизнес-процесс.
  • В программе можно настроить связь бизнес-процесса с документом Интерес клиента. В этом случае интерфейс пользователя будет нестандартным, с его описанием можно ознакомиться в Инструкции по работе.

Настройка карты маршрута бизнес-процесса объекта

В настройках карты маршрута бизнес-процесса объекта необходимо выбрать соответствующий тип карты маршрута и вид связанного объекта базы данных.

Для этого:

  • Откройте карту маршрута Процессы — Справочники и настройки — Карты маршрутов бизнес- процессов.
  • Перейдите на вкладку Параметры и установите переключатель в значение Процесс объекта.
    .
  • Выберите Вид объекта управления.

Параметры, тип и условия авто старта

Выбор типа карты маршрута и установка вида объекта управления

Бизнес-процесс объекта стартует автоматически при создании или изменении управляемого объекта. При необходимости можно уточнить условие старта. Например, для бизнес-процесса согласования коммерческого предложения можно задать минимальную сумму предложения (меньше которой согласование запускаться не будет).

Для этого:

  • Перейдите на вкладку Параметры и нажмите гиперссылку Расширенные настройки (для опытных пользователей).
  • Добавьте новое условие старта бизнес-процесса.

Настройки отборов

Настройка условий автостарта бизнес-процесса объекта

Значение одного реквизита объекта управления будет изменяться автоматически при выполнении задач бизнес-процесса. Выберите его название в поле Реквизит объекта.

Вид и реквизит объекта

Выбор реквизита объекта управления

Далее необходимо выполнить настройку связи значений реквизита объекта управления с этапами карты маршрута.

Для этого:

  • Нажмите кнопку Настройка этапов.
  • Укажите для каждого этапа карты маршрута значение реквизита объекта управления. Выбранное значение будет установлено при переходе бизнес-процесса на данный этап.

Статус коммерческого предложения клиенту

Настройка связи этапов бизнес-процесса и значений реквизита объекта управления

Важно!

Для первого этапа карты маршрута:

  • В конфигурации 1С:СRM нужно обязательно указать состояние «Не согласовано».
  • В конфигурациях 1С:УТиВСК и модуль 1С:CRM для ERP и КА — состояние «Черновик».

Примеры использования бизнес-процессов объекта

Согласование коммерческого предложения

Описание бизнес-процесса согласование коммерческого предложения

Менеджер по продажам готовит коммерческое предложение и передает его для согласования руководителю. Руководитель может вернуть документ на доработку, согласовать или отменить. Согласованное руководителем предложение блокируется для редактирования.

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

Сценарий работы пользователей в программе

  • Менеджер создает новый документ Коммерческое предложение и нажимает кнопку Записать.
  • На форме документа активируется панель кнопок управления процессом согласования. Менеджер переводит процесс на этап Согласование с руководителем, нажав команду Начать согласование.
  • Старт согласования – Начать согласование

    Передача предложения руководителю для согласования

    • Для руководителя менеджера автоматически создается задача, которую он видит в АРМ Мои дела или списке Мои задачи. Он открывает новую задачу. Вместо формы задачи будет открыта форма документа Коммерческое предложение. Руководитель проверяет коммерческое предложение и согласовывает его. После согласования предложение становится недоступным для редактирования.

    Результат согласования – Согласовано

    Согласование коммерческого предложения руководителем

    • Далее для менеджера создается задача на согласование коммерческого предложения с клиентом. Если после согласования требуется изменение, предложение отправляется на доработку. В этом случае предложение становится доступным для редактирования.

    Результат согласования – Доработать

    Доработка коммерческого предложения

    Если клиент согласен с условиями коммерческого предложения, тогда менеджер выбирает команду Согласовано для завершения процесса.

    Настройка программы

    С помощью модуля Процессы будет автоматизировано взаимодействие менеджера с руководителем в рамках описанного бизнес-процесса. Механизмом Триггеры будет организован запрет на редактирование согласованного документа Коммерческое предложение.

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

    Карта маршрута для согласования коммерческого предложения

    Согласование коммерческого предложения

    Выполните настройку карты, для этого:

    • Откройте Процессы — Справочники и настройки — Карты маршрутов бизнес-процессов — Согласование коммерческого предложения.
    • Перейдите на вкладку Параметры и установите переключатель в значение Процесс объекта.
    • В поле Вид объекта выберите Коммерческое предложение клиенту.

    Вкладка Параметры – Процесс объекта

    Выбор типа карты маршрута и установка вида объекта управления

    Настройка связи с реквизитом объекта управления

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

    • Откройте Процессы — Справочники и настройки — Карты маршрутов бизнес-процессов — Согласование коммерческого предложения.
    • В поле Реквизит объекта выберите реквизит Статус.

    Выбираем вид и реквизит объекта

    Выбор реквизита объекта управления

    Далее необходимо связать значения реквизита с этапами карты маршрута.

    • Нажмите кнопку Настройка этапов.
    • Укажите для каждого этапа карты маршрута значение реквизита Статус, как показано на скриншоте. Выбранные значения реквизита будут установлены автоматически при переходе на текущий этап бизнес-процесса.

    Статусы этапов карты маршрута

    Настройка связи этапов с значениями реквизита Статус

    Настройка исполнителей этапов бизнес-процесса

    Укажите исполнителя для каждого этапа, как показано на скриншоте ниже. При необходимости заполните поле Описание.

    Исполнитель для каждого этапа

    Настройка исполнителей этапов бизнес-процесса

    Динамическая адресация задач

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

    Рассмотрим на примере настройки карты маршрута «Согласование коммерческого предложения».

    Если у вас большая компания с разными условиями согласования коммерческого предложения (в зависимости от товарных позиций задачу нужно направить руководителю или нескольким согласующим), то для таких случаев реализован механизм динамической адресации.

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

    В обработчике доступна переменная «ФормируемыеЗадачи» — массив создаваемых объектов задач. Для каждой задачи нужно установить дополнительное свойство «ИсполнителиДинамическойАдресации» — массив исполнителей (СправочникСсылка.Пользователи). Пример такой настройки приведен на рисунке:

    Обработчик события При создании задач

    Настройка исполнителей динамической адресации

    Настройка механизма триггеров

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

    Создайте 2 новых условия срабатывания триггера:

    • Откройте Настройки — НСИ — Условия срабатывания триггеров.
    • Нажмите кнопку Создать.
    • В поле Тип объекта выберите значение Документ.
    • В поле Объект обработки выберите Коммерческое предложение клиенту.
    • В поле Событие выберите Форма При создании на сервере.
    • Вернитесь в список условий срабатывания триггеров и повторно нажмите кнопку Создать.
    • В поле Тип объекта выберите значение Документ.
    • В поле Объект обработки выберите Коммерческое предложение клиенту.
    • В поле Событие выберите Форма После записи на сервере.

    Далее создайте триггер для блокировки согласованного документа Коммерческое предложение:

    • Откройте Настройки — НСИ — Триггеры и нажмите кнопку Создать.
    • Заполните поле Наименование .
    • Выберите созданное ранее условие срабатывания триггера Документ (Коммерческое предложение клиенту) —
      (Форма) При создании на сервере .
    • Выберите действие триггера Запретить редактирование документа Коммерческое предложение и
      выполните его настройку:

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

      Настройка запрета изменения коммерческого предложения

      Установите флаг Включен:

      Включение триггера

      Включение триггера

      Также создайте триггер для разблокировки согласованного документа Коммерческое предложение при необходимости изменения:

      • Откройте Настройки — НСИ — Триггеры и нажмите кнопку Создать.
      • Заполните поле Наименование. Например: «Разблокировка коммерческого предложения».
      • Выберите созданное ранее условие срабатывания триггера Документ (Коммерческое предложение клиенту) —
        (Форма) При создании на сервере .
      • Выберите действие триггера Запретить редактирование документа Коммерческое предложение и
        выполните его настройку:

        • В поле реквизит объекта выберите значение Статус.
        • Добавьте в список новое значение Действует.
        • Выберите реквизиты, которые необходимо блокировать в окне согласованного коммерческого предложения.
      • Значение реквизита – Действует

        Триггер для разблокировки согласованного коммерческого предложения

        Установите флаг Включен:

        Установить флаг Включен – Журнал работы триггера

        Включение триггера

        Рекомендуем ознакомиться

        Вернуться к списку статей

Понравилась статья? Поделить с друзьями:
  • Реквизиты нормативных правовых актов федеральных органов исполнительной власти
  • Реквизиты нпа регламентирующего применение тарифа электроэнергии пермский край
  • Реквизиты общество с ограниченной ответственностью хоум кредит энд финанс банк
  • Реквизиты объяснительной записки по поводу объяснения поступка аналогичны тест
  • Реквизиты пушкинского городского суда московской области для уплаты госпошлины