Компонент позволяет "не программистам" создавать и изменять произвольные БП с помощью визуальных средств. Он дает специалисту возможность отобразить его специфичные знания с помощью высокоуровневых абстракций. Другими словами, компонент позволяет изложить свое видение решения наглядным способом, который другой человек будет в состоянии понять (и изменить по необходимости).
Рассмотрим процедуру создания БП на примере алгоритма согласования подотчетных денег. Пусть в нашей условной организации согласование подотчетных денег осуществляется следующим образом:
1. Составляется заявка на выдачу подотчетных денег;
2. Заявка согласуется с руководителем (или несколькими руководителями). Пусть согласование производится по очереди с двумя заранее известными руководителями;
3. Оформление заявки в бухгалтерии;
4. Выдача денег;
5. Предоставление отчета;
6. Проверка отчета в бухгалтерии.
Пусть при этом подать заявление на подотчетные деньги может любой сотрудник, а видеть все заявления может только руководство.
[spoiler]
Для создания данного БП необходимо иметь установленный модуль Бизнес-процессов версии не ниже [U][I][B]9.0.0[/B][/I][/U]. Необходимо разместить в публичной части сайта компонент "Бизнес-процесс" (bitrix:bizproc.wizards) и настроить его соответствующим образом. Размещение и настройка компонента осуществляется стандартным образом. Для облегчения процедуры можно воспользоваться мастером создания страницы или раздела на панели. В новых дистрибутивах с установленной публичной частью компонент уже размещен на странице "Главная страница / Сервисы / Бизнес-процессы". |
Для создания нового БП нажмем на кнопку "Новый бизнес-процесс". Если эта кнопка недоступна, то у пользователя недостаточно прав для создания нового БП. Для изменения установок прав необходимо войти в настройки компонента и изменить параметр "Доступ".
Заполняется форма создания нового БП. Так как создается полностью новый БП, то в качестве шаблона выбирается пункт "новый шаблон". Если среди стандартных шаблонов, которые поставляются с модулем, есть подходящий, то можно выбрать его и затем изменить по своему усмотрению.
Если при создании БП в качестве шаблона был выбран пункт "новый шаблон", то после сохранения автоматически запускается редактор БП и открывается окно основных настроек БП. В случае выбора одного из предустановленных шаблонов БП - открывается список запущенных экземпляров БП (документов). Перейти к редактированию БП в этом случае можно по ссылке "Бизнес-процесс" на панели.
В основных параметрах БП на закладке "Параметры" зададим входящие параметры БП: подотчетное лицо, сумма, цель и описание подотчетных денег. Эти параметры должно будет заполнить подотчетное лицо при оформлении заявки (т.е. при запуске экземпляра БП).
Зададим на закладке "Доступ" права на доступ к БП:
- любой сотрудник может запустить экземпляр БП (т.е. подать заявление на подотчетные деньги), а так же может видеть свои заявки (группа "Автор");
- администраторы могут видеть все экземпляры БП и могут управлять ими (группа "Администраторы");
- руководство может видеть все экземпляры БП (группа "Руководство").
Для выбора групп пользователей можно воспользоваться кнопкой с троеточием рядом с полем ввода.
После сохранения основных параметров запуска можно начинать создание шаблона БП.
Шаблон БП представляет собой последовательность шагов (действий) от начального к конечному, которые будут выполняться один за другим. Нам необходимо таким образом и в таком порядке составить шаги (действия), чтобы реализовать нужный нам алгоритм и получить необходимый результат.
В данном типе документа, который используется компонентом "Бизнес-процесс", для каждого документа существует только один БП. Поэтому далее будем считать конкретный запущенный на выполнение экземпляр БП и документ эквивалентными терминами (за исключением того, что по завершении БП уничтожается, а документ сохраняется для истории). |
Первым шагом сохраним в документе входящие параметры БП: сумму, цель и описание подотчетных денег. Это необходимо для того, чтобы иметь возможность посмотреть и обработать эти параметры даже после завершения БП. Для сохранения параметров разместим в шаблоне БП действие "Изменение документа". Для этого на панели справа откроем раздел "Обработка документа" и перетащим действие "Изменение документа" в рабочую область редактора. Действие "Изменение документа" позволяет сохранить любую информацию в полях документа таким образом, что к ней всегда можно будет обратиться. Кроме того, это действие позволяет создавать для документа дополнительные поля.
Нажмем на кнопку настройки параметров действия "Изменение документа" (иконка в виде шестеренки в правом верхнем углу действия). Изменим название документа, которое выводится в списке документов. Пусть мы хотим, чтобы документ назывался по шаблону "Подотчетное лицо, цель, сумма подотчетных денег", например "Иван Иванов, командировка, 3800". Для этого в окне настройки параметров действия выберем в выпадающем списке поле "Название элемента" и в качестве значения укажем строку "{=Template:TargetUser_printable}, {=Template:Purpose}, {=Template:Summ}" (без кавычек). Значения в фигурных скобках - это ссылки на значения входящих параметров БП. Они имеют вид {=Template:КодВходящегоПараметра}. Для вставки таких значений проще всего воспользоваться кнопкой с троеточием рядом с полем ввода. В открывшемся диалоге на закладке "Параметры шаблона" можно выбрать любой входящий параметр БП.
Обратите внимание, что для входящих параметров, содержащих коды пользователей, их реальные значения можно получить строкой "{=Template:КодПараметра}" (например, user_1), а их печатные значения - строкой "{=Template:КодПараметра_printable}" (например, Иван Иванов [1]).
Сохраним сразу в документ все входящие параметры БП. Для этого нажмем на ссылку "Добавить условие". Добавится новое поле. Выберем "Текст для предпросмотра" и в качестве значения укажем ссылку на входящий параметр БП "Описание", т.е. строку "{=Template:Purpose_text}". Для вставки этой строки нажмем на кнопку с троеточием рядом с полем ввода и в открывшемся диалоге на закладке "Параметры шаблона" дважды щелкнем на пункте "Описание".
Так как подходящих стандартных полей для параметра "Сумма" нет, то создадим новое поле. Для этого нажмем на ссылку "Добавить поле" и введем параметры нового поля.
Зададим в качестве значения поля "Сумма" ссылку на входящий параметр БП "Сумма", т.е. строку "{=Template:Summ}". Затем сохраним параметры действия.
Нажмем на кнопку "Применить" редактора БП. Теперь в случае возникновения каких-либо проблем нам не придется начинать конструировать БП с самого начала.
Вторым шагом выполнения нашего БП установим начальный статус БП. Этот статус выводится с списке документов и служит для указания, на каком этапе согласования подотчетных денег мы находимся. Установка статуса производится с помощью действия "Установить текст статуса" из раздела "Уведомления" на панели справа. Перетащим действие "Установить текст статуса" в рабочую область редактора под действие "Изменение документа". Откроем параметры действия "Установить текст статуса" и укажем в качестве текста статуса значение "Согласование".
Далее согласно алгоритму нашего БП необходимо последовательно согласовать документ у двух руководителей. Для организации согласования используем действие "Утверждение документа" из раздела "Обработка документа". Перетащим действие "Утверждение документа" на рабочую область под действие "Установить текст статуса".
Откроем параметры действия "Утверждение документа" и заполним необходимые поля:
в поле "Заголовок" запишем значение "Утверждение начальником отдела";
в поле "Утверждают сотрудники" выберем с помощью кнопки с троеточием пользователя или группу пользователей, которые первыми утверждают документ (например, группы "Администраторы" и "Руководство");
в поле "Тип утверждения" выберем значение "Любой сотрудник" (любой сотрудник из указанных может утвердить документ);
в поле "Название задания" введем строку "Согласование подотчетных денег для {=Template:TargetUser_printable}, {=Template:Purpose}" (значения в фигурных скобках могут быть выбраны с помощью кнопки с троеточием);
в поле "Описание задания" введем текст
"Необходимо согласовать подотчетные деньги
Сотрудник: {=Template:TargetUser_printable}
Сумма: {=Template:Summ}
Цель: {=Template:Purpose}
Описание:
{=Template:Purpose_text}";
в поле "Устанавливать текст статуса" оставим значение "Да";
в поле "Текст статуса" изменим значение на "этап 1";
в поле "Период утверждения" введем значение "5" и выберем в выпадающем списке значение "дней" (в этом случае если в течение 5 дней документ не будет согласован, то он будет автоматически отвергнут).
В момент исполнения (обработки реальной заявки), когда конкретный экземпляр БП дойдет до шага "Утверждение начальником отдела", будет сделано следующее:
- пользователям, указанным в действии "Утверждение начальником отдела", будет выставлено задание утвердить или отклонить заявку;
- данный экземпляр БП будет поставлен в ожидание (приостановлен), пока кто-либо из указанных пользователей не выполнит задание (утвердит или отклонит заявку);
- после выполнения задания исполнение экземпляра БП будет продолжено в соответствии с алгоритмом БП.
В случае, если первый этап согласования не будет пройден (т.е. документ будет отвергнут), выполнение БП пойдет по ветке, обозначенной словом "Нет". Разместим в этой ветке действие "Сообщение соц.сети" с сообщением для подотчетного лица об отклонении. При заполнении поля "Отправитель сообщения" нажмем на кнопку с троеточием рядом с полем ввода и на закладке "Дополнительные результаты" открывшегося диалогового окна выберем подпункт "Последний голосовавший" пункта "Утверждение начальником отдела". Таким образом сообщение будет отправлено от имени того пользователя, который отклонил согласование подотчетных денег.
В качестве получателя сообщения укажем подотчетное лицо, т.е. значение {=Template:TargetUser}.
Кроме того установим в этой ветке текущий статус БП с помощью действия "Установить текст статуса" в значение "Отклонено".
Нажмем на кнопку "Применить" редактора БП. Теперь в случае возникновения каких-либо проблем нам не придется начинать конструировать БП с самого начала.
В случае, если первый этап согласования будет успешно пройден, выполнение БП пойдет по ветке, обозначенной словом "Да". Разместим в этой ветке действие "Утверждение документа" для второго этапа согласования. Настроим параметры действия аналогично первому этапу согласования. В ветке "Нет" второго этапа согласования разместим действие "Сообщение соц.сети" с сообщением для подотчетного лица об отклонении. Кроме того установим в этой ветке текущий статус БП с помощью действия "Установить текст статуса" в значение "Отклонено".
Если выполнение БП пойдет по ветке "Да" второго этапа согласования, то это означает, что подотчетные деньги согласованы у обоих руководителей. В этом случае можно оформлять их в бухгалтерии.
Разместим в ветке "Да" второго этапа согласования действие "Сообщение соц.сети" с сообщением для подотчетного лица об согласовании подотчетных денег.
Установим текущий статус БП с помощью действия "Установить текст статуса". Для этого перетащим действие "Установить текст статуса" в рабочую область редактора под действие "Сообщение соц.сети" в ветке "Да" второго этапа согласования. Откроем параметры действия "Установить текст статуса" и укажем в качестве текста статуса значение "Оформление в бухгалтерии".
Далее согласно алгоритму нашего БП необходимо оформить заявку в бухгалтерии. Для оформления заявки используем действие "Ознакомление с документом" из раздела "Обработка документа". Перетащим действие "Ознакомление с документом" на рабочую область под действие "Сообщение соц.сети" в ветке "Да" второго этапа согласования.
Откроем свойства действия "Ознакомление с документом" и заполним необходимые поля:
в поле "Заголовок" запишем значение "Оформление в бухгалтерии";
в поле "Ознакомить пользователей" выберем с помощью кнопки с троеточием пользователя или группу пользователей, которые являются бухгалтерами (например, группы "Администраторы" и "Бухгалтерия");
в поле "Название задания" введем строку "Оформление подотчетных денег для {=Template:TargetUser_printable}, {=Template:Purpose}";
в поле "Описание задания" введем текст
"Необходимо оформить согласованные подотчетные деньги
Сотрудник: {=Template:TargetUser_printable}
Сумма: {=Template:Summ}
Цель: {=Template:Purpose}
Описание:
{=Template:Purpose_text}";
в поле "Должны ознакомится" выберем значение "Любой сотрудник";
в поле "Устанавливать текст статуса" выберем значение "Нет";
в поле "Текст кнопки в задании" введем значение "Подотчетные деньги оформлены";
в поле "Период утверждения" значение оставим незаполненным (т.е. БП будет дожидаться ознакомления бесконечно долго).
Следующим шагом установим текущий статус БП с помощью действия "Установить текст статуса". Для этого перетащим действие "Установить текст статуса" в рабочую область редактора и укажем в качестве текста статуса значение "Деньги даны в подотчет".
Нажмем на кнопку "Применить" редактора БП. Теперь в случае возникновения каких-либо проблем нам не придется начинать конструировать БП с самого начала.
Далее согласно алгоритму нашего БП необходимо запросить отчет у подотчетного лица. Для этого используем действие "Запрос дополнительной информации" из раздела "Обработка документа". Перетащим действие "Запрос дополнительной информации" на рабочую область под действие "Оформление в бухгалтерии". Откроем параметры действия и заполним необходимые поля:
в поле "Заголовок" запишем значение "Отчет подотчетного лица";
в поле "Заполняют сотрудники" выберем с помощью кнопки с троеточием подотчетное лицо из входящих параметров БП (в поле должно оказаться значение "{=Template:TargetUser}");
в поле "Название задания" введем строку "Отчет по подотчетным деньгам, {=Template:Purpose}";
в поле "Описание задания" введем текст
"Необходимо отчитаться по подотчетным деньгам
Сумма: {=Template:Summ}
Цель: {=Template:Purpose}
Описание:
{=Template:Purpose_text}".
Затем в помощью ссылки "Добавить поле..." необходимо добавить поле, в которое подотчетное лицо введет отчет об использовании денег.
Параметры действия "Отчет подотчетного лица" должны выглядеть как на рисунке ниже:
Следующим шагом сохраним отчет подотчетного лица в документе. Воспользуемся для этого действием "Изменение документа". Перетащим действие "Изменение документа" в рабочую область редактора. В окне настройки параметров действия выберем в выпадающем списке поле "Текст для просмотра" и в качестве значения укажем строку "{=Variable:Report}" (без кавычек). Значение в фигурных скобках - это ссылка на переменную БП, которая устанавливается действием "Отчет подотчетного лица".
Установим текущий статус БП с помощью действия "Установить текст статуса" в значение "Отчет".
Далее обеспечим возможность бухгалтерии ознакомиться с отчетом подотчетного лица. Для этого используем действие "Ознакомление с документом". Откроем свойства действия "Ознакомление с документом" и заполним необходимые поля:
в поле "Заголовок" запишем значение "Оформление в бухгалтерии";
в поле "Ознакомить пользователей" выберем с помощью кнопки с троеточием пользователя или группу пользователей, которые являются бухгалтерами (например, группы "Администраторы" и "Бухгалтерия");
в поле "Название задания" введем строку "Отчет подотчетного лица {=Template:TargetUser_printable}, {=Template:Purpose}";
в поле "Описание задания" введем текст
"Отчет по подотчетным деньгам
Сотрудник: {=Template:TargetUser_printable}
Сумма: {=Template:Summ}
Цель: {=Template:Purpose}
Описание:
{=Template:Purpose_text}
Отчет:
{=Document:DETAIL_TEXT}";
в поле "Должны ознакомится" выберем значение "Любой сотрудник";
в поле "Устанавливать текст статуса" выберем значение "Нет";
в поле "Текст кнопки в задании" введем значение "Оформлено";
в поле "Период утверждения" значение оставим незаполненным.
Установим текущий статус БП с помощью действия "Установить текст статуса" в значение "Завершено".
Сохраним БП с помощью кнопки "Сохранить".
Попробуем создать новую заявку на подотчетные деньги с помощью кнопки "Новая заявка" на панели. Нам показывается форма, в которой предлагается заполнить указанные нами входящие параметры БП. Обратим внимание, что параметр "Подотчетное лицо" не показывается. Параметр с кодом TargetUser устанавливается автоматически в значение, равное коду текущего пользователя.
После заполнения параметров и отправки формы будет запущен новый экземпляр БП (документ). Если по этому новому экземпляру БП для вас сразу есть задание (т.е. вы являетесь одним из тех пользователей, которые осуществляют согласование на первом этапе), то вы будете автоматически переправлены на страницу этого задания. В противном случае вы попадете в список экземпляров нашего БП.
В поле "Статус" указывается, что экземпляр БП находится в статусе "Согласование: этап 1".
В поле "Задания" для пользователей, которые были указаны в действии первого этапа согласования, будет ссылка на задание выполнения первого этапа согласования. Так же на список своих заданий пользователи могут попасть через страницу "Бизнес-процессы", ссылка на которую есть справа в шапке сайта.
Экземпляр БП остановлен и ожидает, когда кто-либо из пользователей, указанных в действии первого этапа согласования, выполнит задание первого этапа согласования. Как только задание будет выполнено, экземпляр БП продолжит свою работу. Выполнение пойдет по ветке "Да", если подотчетные деньги были одобрены, и по ветке "Нет", если заявка была отклонена.
Далее экземпляр БП будет выполняться в соответствии с созданным нами БП, будут выставляться задания указанным пользователям, меняться статусы согласования подотчетных денег. Конечным состоянием нашего экземпляра БП, которого он достигнет после выполнения определеного числа шагов, будет либо статус "Отклонено" (в случае отклонения заявки на одном из этапов согласования), либо статус "Завершено" (в случае одобрения заявки на обоих этапах согласования).
В случае изменения БП это изменение будет воздействовать только на вновь созданные экземпляры БП.
У меня такой вопрос. Я долго у себя не мог смоделировать, чтоб исполнитель не показывался при старте бизнес-процесса. Потом попробовал назвать его также как и Вы через TargetUser (подотчетное лицо) и всё получилось. Т.е. дело было в имени переменной? Искал документацию по этому поводу, но так и не нашел. Где про это написано, подскажите.
Обратим внимание, что параметр "Подотчетное лицо" не показывается. Параметр с кодом TargetUser устанавливается автоматически в значение, равное коду текущего пользователя.
- {=Workflow:ID} - идентификатор бизнес-процесса;
- {=User:ID} - идентификатор текущего пользователя в формате user_[номер_пользователя_в_системе];
- {=Template:TargetUser} - параметр, в котором содержится идентификатор пользователя, запустившего бизнес-процесс в форматеuser_[номер_пользователя_в_системе];
- {=System:Now} - текущая дата со временем на сервере;
- {=System:NowLocal} - текущая дата со временем у клиента (учитывается часовой пояс);
- {=System:Date} - текущая дата без времени;
- {=Document:DETAIL_PAGE_URL} - позволяет получить ссылку на страницу детального просмотра документа, при условии, что в настройках инфоблока корректно заполненURL страницы детального просмотра.
Взято тут:Учебный курс > Бизнес-процессы > Создание и настройка БП > Форма вставки значения
Обратим внимание, что параметр "Подотчетное лицо" не показывается. Параметр с кодом TargetUser устанавливается автоматически в значение, равное коду текущего пользователя.
В определенных ситуациях такая логика может быть оправдана, но в реальной жизни чаще имеет место быть обратное. Например, появилось новое должностное лицо через которое должны проходить все заявки и так должно быть уже с понедельника и для новых заявок и для всех старых (которых может быть много при большом workflow), а не только для новых.
Хотелось бы услышать Ваше мнение по следующему вопросу: при формировании шаблона бизнес-процесса возникла необходимость в том, чтобы каждого сотрудника, создающего заявку на отпуск, мог согласовывать конкретно ЕГО руководитель. То есть вопрос заключается в следующем: каким образом можно реализовать утверждение документа лицом, которое стоит выше по иерархии в структуре организации именно в этом отделе и никем иным, но не выбором этого человека из списка, а автоматически?
Обратите внимание, что в случае наличия одноименных действий в папках bitrix и custom выполняться будет действие из custom. Если вам нужны оба действия, то действие в custom надо переименовать. И аккуратно заменить все входжения подстроки с именем действия поиском с заменой.
Вопросы:
1 Откуда можно взять подобие TargetUser, только не на самого инициатора, а на его руководителя отдела,
2 Как можно отправить задачу на исправление не убивая ее, (понятно, что в цикле), но как отправлять на самое начало с веденными данными?