Задачи в 1С 8.3

Курс

Задачи

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

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

Задачи

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

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

Выполнена

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

Выполнено автоматически устанавливается в Истина при выполнении задачи кнопкой Выполнено или Выполнено, закрыть:

Выполнено

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

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

Авто префикс

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

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

Авто префикс

Адресация бизнес-процессов

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

Данная система включает в себя несколько элементов:

  • Регистр адресации (регистр сведений)
  • Параметр сеанса для определения текущего пользователя
  • Реквизиты адресации
  • Вспомогательные справочники

Для начала нужно создать вспомогательные справочники. Это будет 2 справочника: Пользователи и Роли пользователей:

Адресация бизнес-процессов

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

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

параметр сеанса

В модуле сеанса в обработчике УстановкаПараметровСеанса будем заполнять параметр сеанса. Сопоставление с пользователем информационной базы будет выполняться по наименованию. Если такого пользователя еще нет в справочнике, то будем создавать его:

Теперь создадим регистр сведений, который будет использоваться как регистр адресации. Это будет независимый непериодический регистр сведений с двумя измерениями: Пользователь и Роль:

регистр адресации

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

регистр адресации

Теперь нужно выполнить настройки системы адресации. Это делается на закладке Адресация в задаче:

Адресация

Во-первых нужно создать реквизиты адресации.

Реквизиты адресации — это реквизиты задачи, по которым выполняется связь с регистром адресации и которые позволяют определить исполнителя задачи.

Добавим 2 реквизита адресации: Пользователь и Роль:

Реквизиты адресации

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

Адресация

В свойствах каждого реквизита адресации нужно связать реквизит с измерением регистра сведений. Связь указывается в свойстве Измерение адресации. Соответственно реквизит Пользователь нужно связать с измерением Пользователь, а реквизит Роль с измерением Роль:

Измерение адресации

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

Основной реквизит адресации

Теперь для точки действия бизнес-процесса нужно заполнить реквизиты адресации. Это делается в свойствах точки в группе Адресация:

Адресация

В конфигураторе можно выбирать только из предопределенных элементов.

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

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

бизнес-процесс

В обработчик ПриСозданииЗадач у всех точек действия бизнес-процесса добавим следующий код:

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

При создании бизнес-процесса нужно указать исполнителя:

бизнес-процесс

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

реквизит адресации

Если в точке выполнения для реквизита адресации Роль выбрать предопределенный элемент:

реквизит адресации

То при создании задач будет автоматически заполняться реквизит адресации Роль:

реквизит адресации

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

В результате можно выделить 2 вида адресации:

  • Персональная — когда для задачи явно указан исполнитель (для примера выше это основной реквизит адресации Пользователь).
  • Ролевая — когда исполнитель определяется по другим реквизитам адресации (для примера выше это реквизит адресации Роль).

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

Задачи по исполнителю

По умолчанию в форме списка задач отображаются все задачи:

Задачи по исполнителю

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

Для этого нужно в явном виде создать основную форму списка задач:

Задачи по исполнителю

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

Задачи по исполнителю

Если сейчас зайти под пользователем Иванов, то в списке задач будет доступна только одна задача:

Задачи по исполнителю

Алгоритм формирования списка задач для таблицы ЗадачиПоИсполнителю следующий:

  1. Сначала определяется текущий пользователь. Для этого получается значение параметра сеанса, который указан в свойстве Текущий исполнитель на закладке Адресация.
  2. Затем из свойства Основной реквизит адресации определяется какой реквизит является основным.
  3. В списке задач остаются только те задачи, у которых в основном реквизите адресации указан текущий пользователь .
  4. Затем из регистра адресации получаются все записи, где в измерении, связанном с основным реквизитом адресации указан текущий пользователь.
  5. В списке задач также остаются те задачи, у которых совпадают значения остальных реквизитов адресации и не заполнен основной реквизит адресации.

Рассмотрим данную последовательность на примере Иванова. Регистр адресации заполнен следующим образом:

Регистр адресации
  1. Текущий пользователь = Иванов.
  2. Основной реквизит адресации = Пользователь.
  3. Из всех задач только в одной задаче в реквизите Пользователь указан Иванов. Это задача под номером 000000007 (4 строка).
  4. В регистре адресации есть только одна запись для Иванова, в ней указана роль Руководитель.
  5. В списке задач нет ни одной задачи, где в реквизите адресации Роль был бы указан Руководитель.

В результате Иванову доступна только одна задача.

Теперь откроем список задач под Петровым. В результате мы увидим 2 задачи:

Задачи по исполнителю
  1. Текущий пользователь = Петров.
  2. Основной реквизит адресации = Пользователь.
  3. Из всех задач только в одной задаче в реквизите Пользователь указан Петров. Это задача под номером 000000008 (5 строка).
  4. В регистре адресации есть только одна запись для Петрова, в ней указана роль Менеджер по продажам.
  5. В списке задач есть 3 задачи (кроме задачи 000000008), где в реквизите адресации Роль указан Менеджер по продажам. Это задачи: 000000005000001, 000000006 и 000000007 (1, 2 и 4 строки). Однако в задачах 000000006 и 000000007 явно указан пользователь, поэтому они не отображаются. А задача 000000005000001 попадает в список задач Петрова.

Формирование задач

Создание задач

Задачи создаются когда бизнес-процесс переходит на этап Точка выполнения или Точка вложенного бизнес-процесса.

При создании задачи у нее автоматические заполняются реквизиты БизнесПроцесс и ТочкаМаршрута ссылками на бизнес-процесс, который породил задачу и точку маршрута, в которой была создана задача. Наименование задачи заполняется из свойства НаименованиеЗадачи точки маршрута:

НаименованиеЗадачи

По умолчанию для каждой точки создается одна задача. Однако, если в свойствах точки установить флаг Групповая:

Групповая

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

Все задачи создаются в рамках одной транзакции.

Последовательность действий в рамках одной транзакции создания задач:

  1. Вызывается обработчик ПередСозданиемЗадач точки маршрута
  2. Выполняется формирование списка задач, но задачи не записываются
  3. Вызывается обработчик ПриСозданииЗадач точки маршрута
  4. Выполняется запись задач в базу данных.

Обработчик ПередСозданиемЗадач

Обработчик ПередСозданиемЗадач имеет 3 параметра:

  • ТочкаМаршрутаБизнесПроцесса — точка, для которой выполняется создание задач.
  • ФормируемыеЗадачи — массив задач, который будет заполнен после выхода из данного обработчика. Можно вручную заполнить массив созданными задачами, тогда нужно установить параметр СтандартнаяОбработка = Ложь. В массиве должны быть именно созданные объекты задач, а не ссылки.
  • СтандартнаяОбработка — признак выполнения стандартной обработки. Если после выполнения данный параметр равен Истина, то параметр ФормируемыеЗадачи будет очищен и автоматически заполнен задачами согласно настройкам бизнес-процесса. Если установить СтандартнаяОбработка = Ложь, то автоматическое создание задач не будет выполняться.

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

В этом случае не будет создано ни одной задачи и маршрут сразу же перейдет на следующую точку, согласно карте маршрута.

Здесь же можно программно создать необходимые задачи:

Обработчик ПриСозданииЗадач

Обработчик ПриСозданииЗадач имеет 3 параметра:

  • ТочкаМаршрутаБизнесПроцесса — точка, для которой выполняется создание задач.
  • ФормируемыеЗадачи — массив задач. Данный массив уже заполнен задачами, но они еще не записаны. Можно дозаполнить какие-то реквизиты задач. Можно добавить новые задачи или удалить существующие из массива. После выхода из обработчика задачи из данного массива будут записаны.
  • Отказ — признак отказа от записи задач. Если установить Отказ = Истина, то задачи не будут записаны и будет выброшено исключение. Соответственно продвижение по карте на следующую точку не будет выполнено.

В этом обработчике можно заполнять реквизиты адресации задачи:

Выполнение задач

При выполнении задачи выполняется следующая последовательность действий:

  1. Вызывается обработчик ПередВыполнением в модуле объекта задачи
  2. Вызывается обработчик ПередВыполнением для точки маршрута
  3. Реквизит задачи Выполнена устанавливается в Истина
  4. Вызывается обработчик ПриВыполнении в модуле объекта задачи
  5. Выполняется запись задачи в базу данных
  6. Вызывается обработчик ПриВыполнении для точки маршрута
  7. Бизнес-процесс переходит на следующую точку и для нее формируются задачи

Все эти действия выполняются в рамках одной транзакции.

У событий ПередВыполнением и ПриВыполнении в модуле объекта задачи есть только один параметр Отказ. Если установить Отказ = Истина, то задача не будет выполнена:

У событий ПередВыполнением и ПриВыполнении для точки действия по 3 параметра:

  • ТочкаМаршрутаБизнесПроцесса — точка действия, для которой выполняются задачи.
  • Задача — ссылка на выполняемую задачу
  • Отказ — признак отказа от выполнения. Если установить Отказ = Истина, то задача не будет выполнена.

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

Как правило обработчик ПередВыполнением используется для заполнения реквизитов задачи, например даты выполнения:

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

Проверка выполнения задачи

В модуле объекта задачи и у точки выполнения есть обработчик ОбработкаПроверкиВыполнения. Данный обработчик вызывается только при вызове метода ПроверитьВыполнение у задачи:

В модуле задачи у данного обработчика только один параметр Результат типа Булево, куда нужно записать результат проверки:

У точки действия 3 параметра: точка, ссылка на задачу и результат:

Сначала вызывается событие в модуле объекта задачи. Если после выполнения обработчика параметр Результат = Ложь, то метод ПроверитьВыполнение возвращает Ложь и обработчик для точки действия даже не вызывается. Если Результат = Истина или данного обработчика нет, то вызывается обработчик для точки действия. В этом случае результатом метода ПроверитьВыполнение будет значение параметра Результат из данного обработчика. Если обработчик для точки действия не создан, то метод ПроверитьВыполнение всегда вернет Ложь.

Активация бизнес-процесса

На форме бизнес-процесса есть кнопка Активировать:

Активировать

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


Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok