Управление задачами и поручениями в 1С Документооборот

Практика использования Бизнес-процессов и Задач в «1С:Предприятии 8.3»

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

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

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

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

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

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

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

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

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

Элемент схемы Графическое представление Описание
Точка старта Начало бизнес-процесса, является обязательным
Стрелка Показывает последовательность переходов между точками
Точка действия Соответствует конкретному действию конкретного пользователя (или одного из пользователей с определенной ролью) в программе.
Точка условия Отвечает за проверку выполнения определенного условия, у которого может быть только 2 состояния: “Выполнено” или “Не выполнено”
Точка выбора варианта Дает возможность выбрать дальнейшие действия исходя из проверки условия, у которого может быть более двух состояний (аналог – Если-ИначеЕсли-…)
Точка разделения Соответствует моменту, начиная с которого разные пользователи должны выполнять разные действия параллельно и независимо друг от друга
Точка слияния Соответствует моменту, начиная с которого параллельные процессы вновь объединяются в один
Точка обработки Отвечает за выполнение определенного алгоритма системой
Точка вложенного бизнес-процесса Соответствует выполнению другого бизнес-процесса, который является составной частью текущего

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Об авторе

Автор статьи – Алина Баринова

Консультант-разработчик, компания “Infosuite” (г. Москва)

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

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

Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по ссылке:
Ссылка доступна для зарегистрированных пользователей)

Комментарии / обсуждение (109):

Здравствуйте! подскажите, пожалуйста, есть независимый регистр, запись в который запускает БП, нужно, чтобы при открытии в режиме предприятия этой записи регистра можно было посмотреть, на каком этапе сейчас запущенный БП. А получается, что запускается новый БП. Что мне посмотреть и настроить, чтобы заработало так, как нужно? И вообще, возможно ли это? Спасибо заранее!

Добрый день, Василий! Спасибо за оперативный ответ! Можете мне немного пояснить, что Вы имеете ввиду? Мне нужно, чтобы в регистре можно было посмотреть на каком этапе сейчас БП. Вы для решения этой задачи предлагаете разместить на форме БП его карту. А как я ее увижу, если я не могу из регистра попасть в этот БП, у меня всегда запускается новый?… И еще, прошла по ссылке и там в первом абзаце написано “…но по ней не получится сказать, в какой точке маршрута сейчас находится бизнес-процесс, какие задачи уже выполнены, а какие еще нужно будет выполнить.” А мне именно это и надо знать…
Основная проблема у меня именно в том, что каждый раз запускается новый БП, а я хочу посмотреть тот, который запустила при создании этой записи в регистре…
Буду очень благодарна за ответ!

Вот две цитаты из Вашего вопроса:
1. >>А как я ее увижу, если я не могу из регистра попасть в этот БП, у меня всегда запускается новый?

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

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

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

В типовой конфигурации 1С8: Управление торговлей наряду с типовыми 7 бизнес процессами я создал свой бизнес процесс, который связал с типовой задачей ЗадачаИсполнителя. Исполнителю прилетела задача, в Мои задачи она видна. Но под пользователем нельзя открыть ее: пишет Недостаточно прав для создания. Также под этим пользователем список созданных бизнес процессов пустой и пишет Нарушение прав доступа при загрузке списка бизнес процесса. Пользователь имеет стандартные роли: Менеджер по закупкам, Менеджер по обеспечению потребностей и Участник согласования условий закупок (дополнительный).

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

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

Спасибо! Очень интересует организация подчиненных БП в процессе параллельного согласования.

Управление задачами и поручениями в 1С Документооборот

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

У 1С:Документооборот имеются мощные инструменты, которые позволяют управлять задачами и обеспечивать четкий контроль их выполнения. Система дает возможность фиксировать сроки исполнения даже в случае, если имело место перенаправление.

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

Выполнение задач в 1С Документооборот

Один из самых важных пунктов — «Задачи мне». Здесь все перечислено списком.

Контроль за исполнением и отчеты

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

Через виджет «Контроль» можно быстро получить доступ к контрольным поручениям. Здесь же присутствуют и статусы текущих состояний объектов.

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

Постановка задач

Что представляют из себя задачи в системе? Это визуализированные точки, через которые проходит бизнес-процесс. Кроме того, присутствуют механизмы управления ими.

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

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

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

Управление задачами

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

Как в 1С:Документооборот осуществляется управление задачами и поручениями?

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

  • согласование (файлов, вопросов, документов) — производится с одним или несколькими сотрудниками;
  • исполнение поручений одному сотруднику или группе коллег, для этого настраиваются контроль, порядок проверки;
  • рассмотрение документов, по результатам ответственное лицо должно составить резолюцию;
  • ознакомление с документами без получения «обратной связи», ответы можно получить, воспользовавшись двумя предыдущими процессами;
  • регистрация исходящей, входящей и внутренней документации;
  • подписание/утверждение документов ответственным лицом;
  • приглашение на мероприятие;
  • комплексный процесс для автоматизации процессов со сложной структурой.

Процессы можно отправлять:

  • по очереди;
  • всем сразу;
  • смешанно.

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

Сроки согласования выставляются индивидуально. Как на конкретную дату, так и на определенный промежуток времени(минуты, часы, дни).

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

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

После согласования создается печатная форма. На нее наносятся визы согласующих, комментарии и дата.

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

Поручениям ставятся процессы «Исполнение». Они могут быть настроены произвольно или на основе имеющихся шаблонов.

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

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

Об использовании шаблонов бизнес-процессов в 1С Документооборот

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

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

Увидеть все запущенные процессы можно в разделе «Управление процессами» и «Совместная работа».

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

Процессы и задачи

Блок бизнес-процессов и задач предназначен для автоматизации порядка взаимодействия пользователей при совместной работе.

В программе предусмотрено несколько «простых» типовых процессов, на основе которых можно построить сложные составные и комплексные процессы.

Каждый «простой» типовой процесс при выполнении порождает задачи. Выполнение задач продвигает процесс по его карте маршрута. Процесс считается завершенным, когда выполнены все его задачи.

«Простые» типовые процессы можно разделить на процессы с одним и несколькими исполнителями.

Для некоторых процессов с несколькими исполнителями есть возможность настроить порядок выполнения задач. Этим порядком определяется создание задачи для конкретного исполнителя.

Комплексный процесс строится на основании «простых» типовых процессов с возможностью настроить порядок их выполнения.

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

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

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

Внутренне устройство

Блок «Процессы и задачи» использует ряд механизмов. Наиболее важные описаны ниже.

Работа процессов

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

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

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

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

Создание задачи ознакомления при завершении процесса:

Рекомендации

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

Комплексные процессы

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

Запуск подчиненных действий определяется процедурой СтартоватьНовыеДействия в модуле объекта комплексного процесса. Процедура вызывается изначально при создании подчиненных действий в точке маршрута «Выполнить все действия процесса».

Далее каждый раз при выполнении ведущей задачи действия комплексного процесса (подписка на событие ЗадачаКомплексногоПроцессаПриВыполнении ).

Процедурой СтартоватьНовыеДействия определяются следующие действия для старта процесса в соответствии с настроенным порядком и условиями маршрутизации.

Рекомендации

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

Ролевая маршрутизация

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

Для каждой роли в программе есть возможность определить несколько исполнителей.

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

Для настройки ролей предусмотрена отдельная форма, которая открывается по команде Управление процессами – Роли исполнителей .

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

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

Роли исполнителей содержатся в справочнике РолиИсполнителей , а соответствие исполнителей задач в регистре сведений ИсполнителиЗадач .

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

  • План видов характеристик ОбъектыАдресацииЗадач ,
  • Справочники Пользователи , РолиИсполнителей , Корреспонденты , Проекты , СтруктураПредприятия , Организации .

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

Рекомендации

Для самостоятельного расширения списка возможных разрезов необходимо расшить тип и добавить свои предопределенные элементы в плане видов характеристик ОбъектыАдресацииЗадач .

Шаблоны процессов

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

Для работы с шаблонами процессов предусмотрено рабочее место, которые открывается по команде Управление процессами – Шаблоны процессов .

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

Шаблоны процессов в программе хранятся в справочниках Шаблоны .

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

Для заполнения по шаблону используется процедура ЗаполнитьПоШаблону модуля объекта процесса.

Заполнение процесса по шаблону происходит в трех случаях:

  • Создание процесса с помощью помощника процессов.
  • Создание процесса при интерактивном старте.
  • Заполнение по шаблону из карточки процесса.

Но следует учесть, что при заполнении может использоваться и другая логика – например, заполнение по проектной задаче, проекту в обработчике заполнения нового объекта (процедура ОбработкаЗаполнения ).Чтобы понять логику заполнения процесса в том или ином случае можно поставить точку останов в процедуре ЗаполнитьПоШаблону, посмотреть стек вызовов и проанализировать «соседний код».

Рекомендации

В программе для каждого процесса предусмотрен специальный метод заполнения процесса по шаблону и предмету — ЗаполнитьПоШаблонуИПредмету . Он не используется в типовой конфигурации и предназначен для программного создания процессов при доработке.

Предметы процессов и задач

Часто совместная работа сотрудников направлена на обработку данных или результатом их работы являются некие данные. Такие данные по отношению к процессам и задачам в конфигурации называются предметами. Для каждого процесса/задачи может быть определено любое количество предметов. Каждый такой предмет процесса имеет свою роль по отношению к процессу. В конфигурации предусмотрено три роли предмета:

  • Основной,
  • Вспомогательный,
  • Заполняемый.

О ролях предметов можно подробнее ознакомиться в статье «Бизнес-процессы».

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

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

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

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

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

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

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

Синхронизация предметов происходит по имени предмета (реквизит ИмяПредмета в табличной части Предметы ), а сам предмет содержится в реквизите Предмет . Роль предмета определяется значением РольПредмета .

ИмяПредмета – ссылка на элемент справочника ИменаПредметов .

РольПредмета – ссылка на значение перечисления РолиПредметов .

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

Работа с предметами обеспечивается процедурами и функциями в общих модулях Мультипредметность.

Рекомендации

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

Запуск процессов

В программе предусмотрено несколько вариантов запуска процессов:

  • По общей команде Главное – Создать — Процесс ;
  • На основании объекта или задачи – меню Отправить или Подзадачи в рабочих местах или карточках соответствующих объектов и задач;
  • Интерактивный (при выполнении действий в карточках документов)
  • Полностью автоматический запуск процесс (при возникновении определенных событий).

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

Меню Отправить и Подзадачи находятся в карточках и списках ряда объектов. Для каждого объекта эти меню имеют свой состав, но для открытия помощника используется процедура ОткрытьПомощникСозданияОсновныхПроцессов в общем модуле РаботаСБизнесПроцессамиКлиент.

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

Запуск по событиям выполняется без интерактивного участия пользователя при помощи механизма бизнес-событий.

Об интерактивном и автоматическом запуске процессов можно подробнее ознакомиться в статье «Автостарт бизнес-процессов».

Условия маршрутизации

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

Условия могут быть определены при помощи конструктора (используется механизм компоновки данных), кодом встроенного языка «1С» или составлены из комбинаций других условий.

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

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

Условия маршрутизации хранятся в справочнике УсловияМаршрутизации . За проверку условий отвечают процедуры и функции общего модуля РаботаСУсловиямиМаршрутизации .

Фоновое выполнение процессов

Для увеличения отзывчивости конфигурации предусмотрено несколько механизмов фонового выполнения процессов:

  • Фоновый старт процессов;
  • Фоновое выполнение задач;
  • Фоновая маршрутизация комплексных процессов.

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

Очередь процессов хранится в регистре сведений ПроцессыДляЗапуска . Добавление процессов происходит при записи процессов из карточек при помощи методов регистра сведений. За обработку очереди на сервере отвечает регламентное задание СтартПроцессов. Все процедуры по фоновому старту находятся в общих модулях СтартПроцессов . Фоновое выполнение включается/отключается константой ИспользоватьФоновыйСтартПроцессов .

Фоновое выполнение задач работает аналогично фоновому старту процессов. Очередь хранится в регистре сведений ЗадачиДляВыполнения . Обрабатывается она при помощи регламентного задания ВыполнениеЗадач . Процедуры и функции находятся в общих модулях – ВыполнениеЗадач , включается/отключается константой ИспользоватьФоновоеВыполнениеЗадач .

Фоновая маршрутизация комплексных процессов работает немного иначе. После завершения каждого действия (при выполнении задачи) для исходного комплексного процесса создается фиктивная задача (задача без исполнителей) и само действие помещается в специальную очередь. Фиктивная задача нигде не отображается и используется только для того, чтобы остановить выполнение комплексного процесса и продолжить его в специальном регламентном задании. Далее очередь на сервере – для каждого позиции определяются и стартуют следующие действия, фиктивная задача выполняется (чтобы завершить комплексный процесс, если у него больше нет действий) и удаляется из программы (используется непосредственное удаление). Также удаляется и запись из очереди. Очередь содержится в регистре ОчередьМаршрутизацииКомплексныхПроцессов .

Помещение в очередь происходит в подписке на событие ЗадачаКомплексногоПроцессаПриВыполнении .

За обработку очереди отвечает регламентное задание ФоноваяМаршрутизацияКомплексныхПроцессов. Механизм включается/отключается константой ИспользоватьФоновуюМаршрутизациюКомплексныхПроцессов .

Возможные проблемы при фоновом выполнении процессов

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

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

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

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

Также следует отметить, что фоновое выполнение процессов работает только в клиент-серверном варианте работы программы. Фоновое выполнение задач может использоваться и в файловом варианте, если используется распределенная информационная база (Далее РИБ).

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

В программе есть возможность выполнять задачи в сторонних почтовых клиентах.

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

  1. Пользователю направляется уведомление о новой задаче. В уведомление включены специальные ссылки для формирования ответного письма. Каждая ссылка соответствует кнопке с результатом в задаче.
  2. Пользователь нажимает на ссылку, вписывает комментарий в новое письмо и отправляет его (адрес заполняется автоматически).
  3. Программа принимает данное письмо и на основании его содержимого находит и выполняет задачу.

Для рассылки уведомлений используются стандартный механизм уведомлений.

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

За обработку ответов (писем с результатами выполнения задач) отвечает регламентное задание ВыполнениеЗадачПоПочте . Обработка протоколируется в регистре ПротоколВыполненияЗадачПоПочте.

Рекомендации

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

  • Текст уведомлений формируется при помощи процедуры СформироватьТекстУведомленияПоЗадачеСВозможностьюВыполненияПоПочте в модуле ВыполнениеЗадачПоПочтеСервер .
  • Варианты выполнения задач определяются функциями ВариантыОтветовДляВыполненияЗадачиПоПочте в модулях объектов процессов.

Выполнение процессов в РИБ

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

Общая логика


  1. У каждого процесса есть так называемый «Мастер-узел». Это узел, в котором был создан и стартован процесс. Мастер-узел для процесса определяется реквизитом УзелОбмена . В реквизите сохранен уникальный идентификатор узла обмена. Значение реквизита УзелОбмена в процессе соответствует значению реквизита ИдентификаторУзла в плане обмена Полный .
  2. Продвижение процессов происходит только в мастер-узле. Под продвижением следует понимать выполнение задач и маршрутизацию комплексных процессов, так как она тоже завязана на выполнении ведущих задач. Это позволяет исключить коллизии и зависание процессов при выполнении задач в разных узлах РИБ.
  3. Для передачи данных между узлами РИБ используется особая логика объединения данных. При этом стандартная обработка коллизий платформы отключена.

Ограничения и особенности


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

Как это работает

При первой записи узла плана обмена Полный определяется его идентификатор (реквизит ИдентификаторУзла ).

При первой записи процесса заполняется его реквизит УзелОбмена в подписке на событие ПередЗаписьюБизнесПроцесса .

Если используется фоновый старт процессов, то процесс обрабатывается регламентными заданиями СтартПроцессов и СтартОтложенныхПроцессов только в мастер узле. Текущий узел при этом определяется функцией ЭтотУзелОбменаДляОбработкиПроцессов общего модуля РаботаСБизнесПроцессами. Если фоновый старт не используется, то процесс стартует сразу.

Задачи всегда выполняются при помощи механизма фонового выполнения. При этом в регламентных заданиях ВыполнениеЗадач и ВыполнениеЗадачПоПочте учитывается отношение задачи к текущему узлу через реквизит УзелОбмена . То есть задачи, относящиеся к процессам, у которых УзелОбмена не равен текущему идентификатору узла, не обрабатываются.

Обработка процессов только текущего мастер-узла также учитывается в регламентных задания ПовторениеБизнесПроцессов и ФоноваяМаршрутизацияКомплексныхПроцессов.

При загрузке процессов как из главного, так и из подчиненного узла происходит одинаковая обработка. Это переопределено в обработчиках ПриПолученииДанныхОтГлавного и ПриПолученииДанныхОтПодчиненного плана обмена Полный . Но обработка получения данных для каждого процесса своя. За это отвечает процедура ОбработатьПолучениеПроцессаИзУзлаРИБ в модуле менеджера каждого процесса.

Сама процедура получения данных процесса разделена на две части:

  • Получение процесса в мастер-узле.
  • Получение процесса в другом узле.

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

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

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

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

Возможные проблемы при использовании процессов в РИБ

Если процессы в РИБ использовались до версии 2.0.8, то при переходе на новую версию происходит заполнение идентификаторов узлов в плане обмене Полный и сопоставление процессов этим узлам (заполнение реквизита УзелОбмена в процессах). Процессы для привязки к текущему узлу определяются по автору. Если для автора процессов существует пользователь информационной базы, то все его процессы относятся к текущему узлу.

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

Само наличие пользователей информационной базы в двух и более узлах для одного элемента справочника Пользователи является ошибкой. Одному пользователю в справочнике пользователи должен быть сопоставлен только один пользователь информационной базе в РИБ.

Чтобы исправить данную ситуацию необходимо удалить лишних пользователей и обновить реквизит у процессов с полненным реквизитом УзелОбмена во всех узлах РИБ. Код для обновления следует написать самостоятельно. За основу можно взять процедуру ЗаполнитьУзелОбменаВПроцессах в общем модуле ОбновлениеИнформационнойБазыДокументооборот .

Рекомендации

Не рекомендуется менять типовое поведение механики выполнения процессов в РИБ.

Права доступа

Доступ к части объектов текущего блока ограничен на уровне записей. Ниже описаны права доступа и логика распространения для основных объектов.

Источник https://xn—-1-bedvffifm4g.xn--p1ai/news/2017-03-02-business-processes-practice/

Источник https://www.1cbit.ru/blog/upravlenie-zadachami-i-porucheniyami-v-1s-dokumentooborot/

Источник https://its.1c.ru/db/content/metod8dev/src/developers/doc8dev/i8105874.htm

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

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