Страница 1 из 3
Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 11:50
Romiros
Доброго времени суток!
Объясните, не понимаю, все перепробовал.
Создаю автоматизацию как например из этой темы
viewtopic.php?p=26559&hilit=%D0%BF%D0%B ... php#p26559
Вот что делаю я.
1. действие Добавление новой записи
2. действие выполнить php-код
При выполнении автоматизации 1 действие выполняется, а второе не как не хочет(((
Не могу понять что не так
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 11:58
Fait
При создании действия в автоматизации с типом "Добавление новой записи" выводится предупреждение:
Чтобы выполнить свой PHP скрипт, вам нужно создать новую автоматизацию с типом срабатывания при добавлении записи, и внутри в действиях вставить скрипт.
Вот этот пункт нужно тогда включать:
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 15:11
Romiros
Благодарю, помогло.
Но теперь другая напасть.
Сейчас всё выглядит так
автоматизация - добавить запись
автоматизация - php скрипт
В целом всё работает, но есть нюанс.
Когда срабатывает php скрипт после добавления записи.
в сущность начинает добавляется пустая запись, и прекращает это делать когда происходит переполнение памяти.
примерно за раз 5000 записей создаётся, вместо одной))).
Код взял из документации.
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 16:07
Romiros
попробовал другой код
Код: Выделить всё
<?php
$items = array();
$items[] = array(
'field_338' => 'Заявка Тест', //338 - ID текстового поля
'field_426' => '2017-12-29', //426 - ID поля типа "Дата с календарем"
'field_429' => '166,167', //429 - ID поля типа "Выпадающий список с выбором нескольких значений"
);
$params = array(
'key' => 'XgDXFsTbNRkMpRq81bBrmRAf56i5oS0oN9bp4jLH', //API ключ
'username' => 'admin', //Имя пользователя
'password' => 'admin', //Пароль
'action' => 'insert', //действие
'entity_id' => 34, //ID сущности, в которую будет добавлена запись
'items' => $items, //массив записей
);
$ch = curl_init('http://localhost/rukovoditel/api/rest.php'); //API Url
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
if($result)
{
$result = json_decode($result,true);
print_r($result);
}
Запустил, создалось 33 новых записи, а мен надо одну)))
Не могу понять что не так срабатывает.
Нет я ошибся, записи так же создаются только теперь в фоне бесконечно.
Как это исправить?
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 23:12
Fait
Ваш php скрипт также создаёт новую запись через функцию items::insert
Я так понимаю, PHP скрипт призван обновить некоторые поля в созданной записи.
А следовательно, функция будет уже другая: items::update_by_id($entity_id, $item_id, $data)
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 23:14
Fait
Romiros писал(а): 06 фев 2024, 16:07
попробовал другой код
Код: Выделить всё
<?php
$items = array();
$items[] = array(
'field_338' => 'Заявка Тест', //338 - ID текстового поля
'field_426' => '2017-12-29', //426 - ID поля типа "Дата с календарем"
'field_429' => '166,167', //429 - ID поля типа "Выпадающий список с выбором нескольких значений"
);
$params = array(
'key' => 'XgDXFsTbNRkMpRq81bBrmRAf56i5oS0oN9bp4jLH', //API ключ
'username' => 'admin', //Имя пользователя
'password' => 'admin', //Пароль
'action' => 'insert', //действие
'entity_id' => 34, //ID сущности, в которую будет добавлена запись
'items' => $items, //массив записей
);
$ch = curl_init('http://localhost/rukovoditel/api/rest.php'); //API Url
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
if($result)
{
$result = json_decode($result,true);
print_r($result);
}
Запустил, создалось 33 новых записи, а мен надо одну)))
Не могу понять что не так срабатывает.
Нет я ошибся, записи так же создаются только теперь в фоне бесконечно.
Как это исправить?
А этот гигантский код, работающий по API, оставьте, его рационально применять лишь для загрузки файлов в запись
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 23:19
Fait
Если я прав насчёт обновления полей в записи, то могу помочь с кодом, написать его сюда.
Алгоритм будет такой: сначала определяем последнюю созданную запись в базе, забираем id, и с помощью этого id обновляем запись с помощью insert::update_by_id
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 06 фев 2024, 23:32
nruslan2
зачем искать последнюю запись (тем более можно нарваться на неприятность временного лага при большом количестве пользователей), если при создании записи и так мы знаем ее id и прекрасно с ним оперируем!
тут вообще поидеи все в справке написано по теме!
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 07 фев 2024, 00:51
Fait
nruslan2 писал(а): 06 фев 2024, 23:32
зачем искать последнюю запись (тем более можно нарваться на неприятность временного лага при большом количестве пользователей), если при создании записи и так мы знаем ее id и прекрасно с ним оперируем!
тут вообще поидеи все в справке написано по теме!
А, ну да, точно...
Достаточно будет $item_id = [id]; в начале кода.
Re: Выполнить php скрипт, после добавления записи в автоматизации
Добавлено: 07 фев 2024, 06:47
Romiros
Мне кажется мы не много не туда ушли.
Давайте расскажу сам кейс и как я хотел его сделать.
Сам кейс.
Необходимо при "Добавить" создавать запись Задача_11, и сразу автоматически (в фоне) создавать еще 5 записей Задача_11_* которые будут parent_id=id[Задача_11] (см. скрин)
1. Есть сущность, в режиме отображения "Древовидная таблица", в ней есть поле "Задача", "Время начало", "Время конца"
2. Мне нужно при добавлении записи выбирать из выпадающего списка поля "Задача", значение и нажимать на кнопку "Продолжить". В этот момент создаётся запись с задачей и выполняется скрипт который добавляет еще нужные мне строки с запланированными задачами с parent_id = id только что созданной записи (чтобы получилось как на скрине)
Как реализовано
Создана автоматизация, с действием - Добавить запись. Где есть выбор задачи из выпадающего списка и кнопка продолжить.
Создана автоматизация php-после добавления записи. Где есть код с добавлением новой записи, пока только одной в качестве эксперимента.
Результат
Создается первая запись, и после начинают создаваться записи до тех пор пока не выскакивает ошибка о таймауте.