Событие изменения поля при прямой записи в БД
#1
Отправлено 30 Ноябрь 2021 - 08:27
#2
Отправлено 30 Ноябрь 2021 - 12:56
1. Добавьте скрытое поле
2. При записи в БД скриптом меняйте и это поле (например, с 0 на 1)
3. Запускайте крон, который будет включаться только для записей, где это поле = 1
4. По крону запускайте необходимые коды
5. Обнуляйте то поле (1 -> 0) этим же кроном
#3
Отправлено 01 Декабрь 2021 - 19:00
Как оно кстати происходит? Может быть после записи в БД можно вызвать какой то скрипт передав ему параметром список полей которые были обновлены?
#4
Отправлено 02 Декабрь 2021 - 17:50
#5
Отправлено 02 Декабрь 2021 - 20:50
#6
Отправлено 10 Декабрь 2021 - 15:52
Anton1 (02 Декабрь 2021 - 20:50) писал:
В этом случае вы априори никакие события вызвать не сможете, т.к. события/вычисления - это часть кода Клиентской базы. При изменениях напрямую в БД события вызваны не будут сами по себе.
#7
Отправлено 11 Декабрь 2021 - 15:18
#8
Отправлено 15 Декабрь 2021 - 11:57
#9
Отправлено 24 Декабрь 2021 - 13:58
Имя:
popup_event
Описание:
Вызов события и связанных с ним вычислений.
Параметры:
$table - массив параметров таблицы, полученный через get_table &$line - массив строки, по которой вызывается вычисление $event - массив события $display_notification = 1 - отображать ли системные сообщения о событииПримеры:
// вызываем событие на изменение поля 333 строки 222 в таблице 111 $table = get_table(111); $line = data_select(111, "id = 222"); $event = array( type' => 'save', 'table_id' => 111, 'line_id' => 222, 'changed' => array( 333 => array( 'field_id' => 333, 'int_name' => 'f333', 'old' => 'aaa', 'new' => 'bbb' ) ) ); popup_event($table, $line, $event);
Сообщение отредактировал Anton1: 24 Декабрь 2021 - 14:04
#10
Отправлено 29 Декабрь 2021 - 11:03
Anton1 (24 Декабрь 2021 - 13:58) писал:
Имя:
popup_event
Описание:
Вызов события и связанных с ним вычислений.
Параметры:
$table - массив параметров таблицы, полученный через get_table &$line - массив строки, по которой вызывается вычисление $event - массив события $display_notification = 1 - отображать ли системные сообщения о событииПримеры:
// вызываем событие на изменение поля 333 строки 222 в таблице 111 $table = get_table(111); $line = data_select(111, "id = 222"); $event = array( type' => 'save', 'table_id' => 111, 'line_id' => 222, 'changed' => array( 333 => array( 'field_id' => 333, 'int_name' => 'f333', 'old' => 'aaa', 'new' => 'bbb' ) ) ); popup_event($table, $line, $event);
Добрый день, Антон.
Ваше предложение на доработку находится на рассмотрении.
#11
Отправлено 20 Январь 2022 - 21:47
Создать свой внешний файл и туда положить всю нужную логику по вызову событий. Логика предполагает запуск функции popup_event() с нужными параметрами в коде файла.
Подключение к КБ идет через include 'common.php' и далее можно использовать функции КБ напрямую из кода.
Далее уже вызывается этот файл по тому же адресу, что и КБ.
Например: https://my_crm.com/my_script.php, где "https://my_crm.com" - адрес КБ, а "my_script.php" - указанный файл
Если точнее, в начале файла должно быть:
$config['script_noauth'] = 1; //чтобы не было редиректа на страницу логина require_once "common.php";
Количество пользователей, читающих эту тему: 5
0 пользователей, 5 гостей, 0 анонимных