Добрый день, уже второй день бьюсь над одной проблемой и не могу найти к ней решения. Обратился даже к сторонним разработчикам битрикс, никто не знает в чем проблема и как ее решить.
Искал по форумам и сайтам, нигде ничего не нашел.
У нас есть свое приложение, которое создает в определенной воронке смарт-процессов на определенной стадии элемент с определенным наполнением.
В этой воронке прописан бизнес-процесс с разными блоками обработки.
Среди стандартных блоков бизнес-процесса битрикс есть блок робота стороннего приложения установленного через маркет (генерация билетов).
Так вот, элемент создается правильно, бизнес процесс начинает работать, доходит до этого робота и зависает на нем.
Если я робота отключаю, то бизнес-процесс проходит до конца.
Я уже обратился к разработчику этого робота, он не знает в чем может быть проблема.
Я заменил этого робота на робота из другого приложения, установленного через маркет - точно так же зависает все на нем.
Я в курсе, что чтобы работал БП в воронке нужно сущность создавать через фабрику, что у меня собственно и прописано в приложении:
function createSmartProcessItem($contactId, $companyId, $ticketId, $email) {
try {
$factory = Container::getInstance()->getFactory(SMART_PROCESS_TYPE_ID);
if (!$factory) {
throw new Exception('Не удалось получить фабрику смарт-процесса');
}
$contact = ContactTable::getById($contactId)->fetch();
if (!$contact) {
throw new Exception('Контакт не найден (ID: ' . $contactId . ')');
}
$fullName = trim($contact['LAST_NAME'] . ' ' . $contact['NAME'] . ' ' . $contact['SECOND_NAME']);
$itemData = [
'TITLE' => 'Билет для ' . $fullName,
'STAGE_ID' => SMART_PROCESS_STAGE_CONFIRMED,
'CATEGORY_ID' => SMART_PROCESS_CATEGORY_ID,
'SOURCE_ID' => SOURCE_ID,
'ASSIGNED_BY_ID' => ADMIN_USER_ID,
'CONTACT_ID' => $contactId,
'COMPANY_ID' => $companyId,
SMART_PROCESS_PRODUCT_FIELD => $ticketId,
SMART_PROCESS_EMAIL_FIELD => $email
];
$item = $factory->createItem($itemData);
if (!$item) {
throw new Exception('Не удалось создать элемент смарт-процесса');
}
$context = new Context();
$context->setUserId(ADMIN_USER_ID);
$operation = $factory->getAddOperation($item, $context);
$result = $operation->launch();
if (!$result->isSuccess()) {
throw new Exception('Ошибка сохранения элемента смарт-процесса: ' . implode(', ', $result->getErrorMessages()));
}
return $item->getId();
} catch (Exception $e) {
throw $e;
}
}
И бизнес-процесс работает без проблем. Но что делать с роботом? Что нужно сделать, чтобы он запускался?
Причем, если я этот же элемент передвигаю в другую стадию, а потом возвращаю на нужную, то все работает и БП и робот.
Я перепробовал все варианты создания элемента смарт-процесса ни один из них не помог, я даже пробовал создавать элемент в другой стадии где запускался бы блок бизнес-процесса меняющий стадию на нужную. Блок работал, менял стадию, но результат тот же - все зависает на роботе стороннего приложения. При ручном перетаскивании на нужную стадию - все работает.
Искал по форумам и сайтам, нигде ничего не нашел.
У нас есть свое приложение, которое создает в определенной воронке смарт-процессов на определенной стадии элемент с определенным наполнением.
В этой воронке прописан бизнес-процесс с разными блоками обработки.
Среди стандартных блоков бизнес-процесса битрикс есть блок робота стороннего приложения установленного через маркет (генерация билетов).
Так вот, элемент создается правильно, бизнес процесс начинает работать, доходит до этого робота и зависает на нем.
Если я робота отключаю, то бизнес-процесс проходит до конца.
Я уже обратился к разработчику этого робота, он не знает в чем может быть проблема.
Я заменил этого робота на робота из другого приложения, установленного через маркет - точно так же зависает все на нем.
Я в курсе, что чтобы работал БП в воронке нужно сущность создавать через фабрику, что у меня собственно и прописано в приложении:
function createSmartProcessItem($contactId, $companyId, $ticketId, $email) {
try {
$factory = Container::getInstance()->getFactory(SMART_PROCESS_TYPE_ID);
if (!$factory) {
throw new Exception('Не удалось получить фабрику смарт-процесса');
}
$contact = ContactTable::getById($contactId)->fetch();
if (!$contact) {
throw new Exception('Контакт не найден (ID: ' . $contactId . ')');
}
$fullName = trim($contact['LAST_NAME'] . ' ' . $contact['NAME'] . ' ' . $contact['SECOND_NAME']);
$itemData = [
'TITLE' => 'Билет для ' . $fullName,
'STAGE_ID' => SMART_PROCESS_STAGE_CONFIRMED,
'CATEGORY_ID' => SMART_PROCESS_CATEGORY_ID,
'SOURCE_ID' => SOURCE_ID,
'ASSIGNED_BY_ID' => ADMIN_USER_ID,
'CONTACT_ID' => $contactId,
'COMPANY_ID' => $companyId,
SMART_PROCESS_PRODUCT_FIELD => $ticketId,
SMART_PROCESS_EMAIL_FIELD => $email
];
$item = $factory->createItem($itemData);
if (!$item) {
throw new Exception('Не удалось создать элемент смарт-процесса');
}
$context = new Context();
$context->setUserId(ADMIN_USER_ID);
$operation = $factory->getAddOperation($item, $context);
$result = $operation->launch();
if (!$result->isSuccess()) {
throw new Exception('Ошибка сохранения элемента смарт-процесса: ' . implode(', ', $result->getErrorMessages()));
}
return $item->getId();
} catch (Exception $e) {
throw $e;
}
}
И бизнес-процесс работает без проблем. Но что делать с роботом? Что нужно сделать, чтобы он запускался?
Причем, если я этот же элемент передвигаю в другую стадию, а потом возвращаю на нужную, то все работает и БП и робот.
Я перепробовал все варианты создания элемента смарт-процесса ни один из них не помог, я даже пробовал создавать элемент в другой стадии где запускался бы блок бизнес-процесса меняющий стадию на нужную. Блок работал, менял стадию, но результат тот же - все зависает на роботе стороннего приложения. При ручном перетаскивании на нужную стадию - все работает.