Выполнить php скрипт, после добавления записи в автоматизации

Все вопросы/проблемы по установке и использовании.
Romiros
Сообщения: 85
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Romiros »

Доброго времени суток!

Объясните, не понимаю, все перепробовал.
Создаю автоматизацию как например из этой темы
viewtopic.php?p=26559&hilit=%D0%BF%D0%B ... php#p26559
Это вам нужно выполнить автоматизацию после добавления записи и выполнить свой пхп код
https://docs.rukovoditel.net.ru/index.php?p=125

Чтобы выбрать значения из предыдущей записи нужно написать примерно такой код:
Вот что делаю я.
1. действие Добавление новой записи
2. действие выполнить php-код

При выполнении автоматизации 1 действие выполняется, а второе не как не хочет(((
Не могу понять что не так
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 766
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Fait »

При создании действия в автоматизации с типом "Добавление новой записи" выводится предупреждение:
IMG_20240206_115606.jpg
Чтобы выполнить свой PHP скрипт, вам нужно создать новую автоматизацию с типом срабатывания при добавлении записи, и внутри в действиях вставить скрипт.
Вот этот пункт нужно тогда включать:
IMG_20240206_115931.jpg
Romiros
Сообщения: 85
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Romiros »

Благодарю, помогло.

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

автоматизация - php скрипт
Изображение

В целом всё работает, но есть нюанс.
Когда срабатывает php скрипт после добавления записи.
в сущность начинает добавляется пустая запись, и прекращает это делать когда происходит переполнение памяти.
примерно за раз 5000 записей создаётся, вместо одной))).
Код взял из документации.
Romiros
Сообщения: 85
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение 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 новых записи, а мен надо одну)))
Не могу понять что не так срабатывает.

Нет я ошибся, записи так же создаются только теперь в фоне бесконечно.
Как это исправить?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 766
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Fait »

Ваш php скрипт также создаёт новую запись через функцию items::insert
Я так понимаю, PHP скрипт призван обновить некоторые поля в созданной записи.
А следовательно, функция будет уже другая: items::update_by_id($entity_id, $item_id, $data)
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 766
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение 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, оставьте, его рационально применять лишь для загрузки файлов в запись
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 766
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Fait »

Если я прав насчёт обновления полей в записи, то могу помочь с кодом, написать его сюда.

Алгоритм будет такой: сначала определяем последнюю созданную запись в базе, забираем id, и с помощью этого id обновляем запись с помощью insert::update_by_id
nruslan2
Сообщения: 2415
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение nruslan2 »

зачем искать последнюю запись (тем более можно нарваться на неприятность временного лага при большом количестве пользователей), если при создании записи и так мы знаем ее id и прекрасно с ним оперируем!
тут вообще поидеи все в справке написано по теме!
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 766
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Fait »

nruslan2 писал(а): 06 фев 2024, 23:32 зачем искать последнюю запись (тем более можно нарваться на неприятность временного лага при большом количестве пользователей), если при создании записи и так мы знаем ее id и прекрасно с ним оперируем!
тут вообще поидеи все в справке написано по теме!
А, ну да, точно...
Достаточно будет $item_id = [id]; в начале кода.
Romiros
Сообщения: 85
Зарегистрирован: 02 ноя 2022, 05:15
Имя: Роман Сысоев
Откуда: Иркутск
Организация: ООО "ДНС Ритейл"

Re: Выполнить php скрипт, после добавления записи в автоматизации

Сообщение Romiros »

Мне кажется мы не много не туда ушли.

Давайте расскажу сам кейс и как я хотел его сделать.

Сам кейс.
Необходимо при "Добавить" создавать запись Задача_11, и сразу автоматически (в фоне) создавать еще 5 записей Задача_11_* которые будут parent_id=id[Задача_11] (см. скрин)

Изображение

1. Есть сущность, в режиме отображения "Древовидная таблица", в ней есть поле "Задача", "Время начало", "Время конца"

2. Мне нужно при добавлении записи выбирать из выпадающего списка поля "Задача", значение и нажимать на кнопку "Продолжить". В этот момент создаётся запись с задачей и выполняется скрипт который добавляет еще нужные мне строки с запланированными задачами с parent_id = id только что созданной записи (чтобы получилось как на скрине)

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

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