Выполнить php скрипт, после добавления записи в автоматизации
-
- Сообщения: 2485
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Выполнить php скрипт, после добавления записи в автоматизации
ну все верно, у вас стоит автоматизация по созданию записи, а в коде 99% вы не предусмотрели какой нибудь тригер для срабатывания кода, поэтому создавая запись у вас код бесконечно и создает записи, так как при создании записи у вас запускается процесс при добавлении записи и так по кругу!)
-
- Сообщения: 99
- Зарегистрирован: 02 ноя 2022, 05:15
- Имя: Роман Сысоев
- Откуда: Иркутск
- Организация: ООО "ДНС Ритейл"
Re: Выполнить php скрипт, после добавления записи в автоматизации
Я решил данный кейс.
Кому интересно, я отказался от использования встроенных функций и сделал обычный SQL запрос INSERT INTO.
Получаем список из сущности, которую создали как справочник, для заказчика, чтобы он мог сам создавать нужные ему списки вех и задач.
Перебираем полученный список задач и создаем записи где id = parent_id
Кому интересно, я отказался от использования встроенных функций и сделал обычный SQL запрос INSERT INTO.
Код: Выделить всё
$item_id = [id]; //get current item ID
$vexa_id = [1617];
$entity_id = 78;
$created_by = 1;
$date_added = time();
$result = db_query("select field_1612 from app_entity_112 where parent_id={$vexa_id}");
// Проверяем успешность выполнения запроса SELECT
if ($result) {
// Проходим по результату и создаем запросы INSERT
while ($row = $result->fetch_assoc()) {
db_query("INSERT INTO app_entity_78 (parent_id, field_1600, created_by, date_added) VALUES ('" . $item_id . "', '".$row['field_1612'] ."', '" . $created_by . "', '" . $date_added . "');");
}
}
//db_query("INSERT INTO app_entity_78 (parent_id, field_1600, //created_by, date_added) VALUES ('" . $item_id . "', 'Новая задача', //'" . $created_by . "', '" . $date_added . "');");
Код: Выделить всё
$result = db_query("select field_1612 from app_entity_112 where parent_id={$vexa_id}");
Код: Выделить всё
/ Проверяем успешность выполнения запроса SELECT
if ($result) {
// Проходим по результату и создаем запросы INSERT
while ($row = $result->fetch_assoc()) {
db_query("INSERT INTO app_entity_78 (parent_id, field_1600, created_by, date_added) VALUES ('" . $item_id . "', '".$row['field_1612'] ."', '" . $created_by . "', '" . $date_added . "');");
}
}
//db_query("INSERT INTO app_entity_78 (parent_id, field_1600, //created_by, date_added) VALUES ('" . $item_id . "', 'Новая задача', //'" . $created_by . "', '" . $date_added . "');");
- Fait
- Инвестор
- Сообщения: 856
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Выполнить php скрипт, после добавления записи в автоматизации
Да, хорошо, что способ рабочий, но только insert into не всё учитывает. Например, для выпадающих списков всех видов нужно ещё добавлять записи не только в app_entity_78, но и в app_entity_78_values.
Поэтому всё-таки, во избежание проблем, лучше использовать items::insert().
Если возникают сложности с реализацией данного кода, обращайтесь, я смогу написать для вас этот код полностью.
Не тестовый, а уже рабочий боевой.
Поэтому всё-таки, во избежание проблем, лучше использовать items::insert().
Если возникают сложности с реализацией данного кода, обращайтесь, я смогу написать для вас этот код полностью.
Не тестовый, а уже рабочий боевой.
- Antonyous99
- Сообщения: 631
- Зарегистрирован: 18 авг 2019, 09:22
- Имя: Антон Владимирович
- Откуда: Санкт-Петербург
- Организация: ООО "РИКОМ-Сервис"
- Контактная информация:
Re: Выполнить php скрипт, после добавления записи в автоматизации
За просто зацикливание происходит, поэтому и создается бесконечно много записей.
В автоматизацию (или код) на создание записи надо поставить фильтр, а в источник этой автоматизации (или, что инициирует запуск кода) записывать в любое поле "флаг", который и не допустит повторное срабатывание, фильтр не даст.
Вот и все!
В автоматизацию (или код) на создание записи надо поставить фильтр, а в источник этой автоматизации (или, что инициирует запуск кода) записывать в любое поле "флаг", который и не допустит повторное срабатывание, фильтр не даст.
Вот и все!
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
ERP/CRM "под ключ"
-
- Сообщения: 99
- Зарегистрирован: 02 ноя 2022, 05:15
- Имя: Роман Сысоев
- Откуда: Иркутск
- Организация: ООО "ДНС Ритейл"
Re: Выполнить php скрипт, после добавления записи в автоматизации
А не будет данная автоматизация так же в фоне бесконечно выполняться на проверку данного условия, пока по таймауту не выпадет на проверку флага, понятно что добавляться записи не будут но автоматизация то всё равно будет работать.Antonyous99 писал(а): ↑07 фев 2024, 21:17 За просто зацикливание происходит, поэтому и создается бесконечно много записей.
В автоматизацию (или код) на создание записи надо поставить фильтр, а в источник этой автоматизации (или, что инициирует запуск кода) записывать в любое поле "флаг", который и не допустит повторное срабатывание, фильтр не даст.
Вот и все!
Не понятна до конца механика, почему так происходит с внутренними функциями?
- Fait
- Инвестор
- Сообщения: 856
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Выполнить php скрипт, после добавления записи в автоматизации
Да, проверка будет так же без конца проводиться...Romiros писал(а): ↑08 фев 2024, 04:20А не будет данная автоматизация так же в фоне бесконечно выполняться на проверку данного условия, пока по таймауту не выпадет на проверку флага, понятно что добавляться записи не будут но автоматизация то всё равно будет работать.Antonyous99 писал(а): ↑07 фев 2024, 21:17 За просто зацикливание происходит, поэтому и создается бесконечно много записей.
В автоматизацию (или код) на создание записи надо поставить фильтр, а в источник этой автоматизации (или, что инициирует запуск кода) записывать в любое поле "флаг", который и не допустит повторное срабатывание, фильтр не даст.
Вот и все!
Не понятна до конца механика, почему так происходит с внутренними функциями?
Re: Выполнить php скрипт, после добавления записи в автоматизации
Проблема циклов решена же уже:
viewtopic.php?p=31030#p31030
Когда items::insert начнет возвращать id вставленной записи, будет нам счастье.
viewtopic.php?p=31030#p31030
Когда items::insert начнет возвращать id вставленной записи, будет нам счастье.
-
- Сообщения: 2485
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Выполнить php скрипт, после добавления записи в автоматизации
тут речь о том, что у человека стоит автоматизация на создании записи, в которой стоит код создания новой записи))
по факту топикстартер решил проблему, ему только еще в одну таблицу бы желательно писать данные и все (и то при условии что в записях есть выпадающие списки) и никаких доп полей\костылей не надо!
по факту топикстартер решил проблему, ему только еще в одну таблицу бы желательно писать данные и все (и то при условии что в записях есть выпадающие списки) и никаких доп полей\костылей не надо!
- Fait
- Инвестор
- Сообщения: 856
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Выполнить php скрипт, после добавления записи в автоматизации
Я тут подумал, а что если на входе в скрипт проверять, есть ли родитель по дереву в созданной записи?
И, если его нет, то создавать 5 необходимых записей.
А если есть, то пропускать весь код.
Таким образом, проверка будет выполнена только 6 раз,что не сильно нагрузит систему.
И в итоге, при создании записи будет происходить вот что:
1) Проверяем родителя у записи. Его сначала нет, поэтому создаём 5 записей с указанием родителя.
2) Происходит проверка 1 созданной записи на родителя. Так как он есть, скрипт пропускает создание 5 записей.
3) Происходит проверка 2 созданной записи. Родитель указан, идём дальше.
4) Происходит проверка 3 созданной записи. Родитель указан, идём дальше.
5) Происходит проверка 4 созданной записи. Родитель указан, идём дальше.
6) Происходит проверка 5 созданной записи. Родитель указан, идём дальше.
И, если его нет, то создавать 5 необходимых записей.
А если есть, то пропускать весь код.
Таким образом, проверка будет выполнена только 6 раз,что не сильно нагрузит систему.
И в итоге, при создании записи будет происходить вот что:
1) Проверяем родителя у записи. Его сначала нет, поэтому создаём 5 записей с указанием родителя.
2) Происходит проверка 1 созданной записи на родителя. Так как он есть, скрипт пропускает создание 5 записей.
3) Происходит проверка 2 созданной записи. Родитель указан, идём дальше.
4) Происходит проверка 3 созданной записи. Родитель указан, идём дальше.
5) Происходит проверка 4 созданной записи. Родитель указан, идём дальше.
6) Происходит проверка 5 созданной записи. Родитель указан, идём дальше.
- Fait
- Инвестор
- Сообщения: 856
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Выполнить php скрипт, после добавления записи в автоматизации
То есть получится примерно так:
Код: Выделить всё
$item_id = [id];
$parent = [parent_id];
if ($parent == 0) {
//Тут коды вставки 5 записей
}