Бизнес-процессы в 1С-Битрикс - шаблоны, задачи, работа с данными
Бизнес-процессы - крупнейшая подтема модулей: 241 вопрос из собранных. Здесь собраны решения по ним.
Что общего у этих задач
Шаблон и экземпляр - разные вещи. Шаблон описывает маршрут, экземпляр - один конкретный проход по нему для одного элемента. Правка шаблона не задевает уже запущенные экземпляры: они доигрывают по той версии, с которой стартовали.
Процесс работает над документом. Документ - это элемент списка, элемент инфоблока или другая сущность, и почти все действия читают и пишут именно его поля. Отсюда типовая задача «получить в процессе то, чего в полях документа нет»: раздел, соседние элементы, данные другого списка.
Переменные процесса типизированы, и тип задаётся при объявлении. Поле типа «список» хранит не подпись, а идентификатор значения, и сравнение с текстом в условии не срабатывает - самая частая причина «условие не выполняется».
Решения подтемы
- Бизнес-процесс над элементом списка - чтение полей, раздел элемента, поля типа «список», действие PHP-код.
- Задача в бизнес-процессе: назначение, сроки, ответ участника - ответственный из поля документа, сроки, зависшие процессы.
- PHP-код в бизнес-процессе: переменные, типы, отладка - переменные процесса, коды значений вместо текста, отладка в файл.
- Бизнес-процесс не запускается или стоит: разбор причин - автозапуск, зависание на задаче, агенты, ошибка действия.
- Поля документа в процессе: списки, файлы, запись обратно - ключи списков, файлы идентификаторами, зацикливание.
- Запуск бизнес-процесса из кода: шаблон, документ, повторы - поиск шаблона, идентификатор документа и защита от повторов.
- Своё действие бизнес-процесса: папка, описание, форма настроек - каталог и файлы, описание, класс, форма настроек, журнал.
- Перенос бизнес-процесса между стендами: шаблон, привязка, права - привязка к документу, выгрузка шаблона, запущенные экземпляры, права.
- Бизнес-процесс изнутри: шаблон, экземпляр, продолжение - копия схемы, журнал, внешнее событие.
- Согласование по цепочке: маршрут, замещение, сроки - параллельные этапы, заместители, сроки.
Частые вопросы
Почему правка шаблона не влияет на запущенные процессы?
Экземпляр хранит копию шаблона на момент старта. Так сделано намеренно: маршрут не должен меняться под ногами у людей, которые уже согласуют документ. Новую версию получают только процессы, запущенные после правки.
Как получить в процессе поле, которого нет у документа?
Действием PHP-код или своим действием: они выполняются на сервере и имеют доступ к любому API. Штатные действия работают только с полями самого документа.
Условие по полю типа «список» не срабатывает.
В переменной лежит идентификатор значения, а не его подпись. В условии сравнивают идентификатор либо приводят значение к тексту заранее, отдельным шагом.
Можно ли запустить процесс из кода?
Да, через API модуля: он принимает тип документа, его идентификатор и параметры запуска. Так процессы запускают по событию, по расписанию или из внешней системы.
Связанные темы
- Универсальные списки - где живут документы процессов
- Бизнес-процессы - устройство модуля целиком
- Веб-формы - другой источник заявок
- Универсальные списки на практике - реестры, на которых запускают процессы
- Раздел Модули