Страница 1 из 1

Автоматизация

Добавлено: 17 май 2023, 13:18
mike_22
Доброго времени суток. Подскажите как можно решить данную задачу...
Есть такая схема сущностей (111.png). Создана кнопка автоматизации "Отмена Проекта" - Нужно что бы во всех вложенных сущностях (Этапы Проекта и Задачи Проекта) Статус менялся на "Отменён". Для первого вложения (Этап проекта) это сделать без проблем (222.png), а вот для "Задачи Проекта" возможности нет. Как можно выйти из данного положения?
Заранее спасибо!

Re: Автоматизация

Добавлено: 17 май 2023, 13:22
nruslan2
два варианта
-сделать явную связь между 1 и 3 сущностью (не удобно ни разу в использовании системой, но проще в настройке)
-использовать автоматизацию - код php и написать код который будет по структуре проходить и обновлять значения

Re: Автоматизация

Добавлено: 17 май 2023, 13:36
mike_22
Спасибо!
Первый вариант, наверное, сразу нет))) ибо действительно не удобно будет пользоваться.
Второй вариант - нужна помощь, т.к совсем не писатель кодов))))

Re: Автоматизация

Добавлено: 17 май 2023, 19:51
Fait
mike_22 писал(а): 17 май 2023, 13:36 Спасибо!
Первый вариант, наверное, сразу нет))) ибо действительно не удобно будет пользоваться.
Второй вариант - нужна помощь, т.к совсем не писатель кодов))))

Код: Выделить всё

$ent_1 = 55; // ID текущей сущности
$ent_2 = 77; // ID сущности 2 уровня
$ent_3 = 99; // ID сущности 3 уровня
$ent_1_f_stat = 555; // ID поля Статус в текущей сущности
$ent_1_f_stat_val = 5555; // ID значения "Отмена" в поле Статус в текущей сущности
$ent_2_f_stat = 777; // ID поля Статус в сущности 2 уровня
$ent_2_f_stat_val = 7777; // ID значения "Отмена" в поле Статус в сущности 2 уровня
$ent_3_f_stat = 999; // ID поля Статус в сущности 3 уровня
$ent_3_f_stat_val = 9999; // ID значения "Отмена" в поле Статус в сущности 3 уровня

// Если статус родительской сущности "Отмена"
if ($ent_1_f_stat == $ent_1_f_stat_val) {
	// То делаем запрос по вложенным сущностям
	$check_e2 = db_query('select * from app_entity_'.$ent_2.' where parent_item_id='.$ent_1);
	foreach ($check_e2 as $key => $value) {
		$ent2_id = $value['id'];
		// Обновляем статусы в записях сущности 2 уровня
		db_query ('update app_entity_'.$ent_2.' set field_'.$ent2_status.'='.$ent_2_f_stat_val.'where id='.$ent2_id);
		// Обновляем статусы в записях сущности 3 уровня
		db_query ('update app_entity_'.$ent_3.' set field_'.$ent3_status.'='.$ent_3_f_stat_val.'where parent_item_id='.$ent2_id);
	}
}
Заполните только значения в начале кода, заменив 55, 77, 99, 555, 777, 999, 5555, 7777, 9999 на соответствующие вашей системе значения.

Если заполните правильно, то всё сработает. Если нет, то присылайте результат, будем разбираться)

Re: Автоматизация

Добавлено: 17 май 2023, 21:15
mike_22
Спасибо огромное. Завтра буду пробовать!

Re: Автоматизация

Добавлено: 22 май 2023, 16:36
tehnos
Вот ещё вариант:

Изменить поля записей сущности второго уровня вложенности:
в автоматизацию добавить "Выполнить PHP скрипт"

XX - номер сущности "Этапы Проекта"
YY - номер сущности "Задачи Проекта"
ZZ - номер поля со статусом
VALUE - номер статуса из настроек поля ZZ

Код: Выделить всё

$var = db_query("SELECT `id` FROM `app_entity_XX` WHERE `parent_item_id` = [id]");
while($var_arr = mysqli_fetch_assoc($var)) {
db_query("UPDATE `app_entity_YY` SET `field_ZZ` = 'VALUE' WHERE `parent_item_id` = {$var_arr['id']}");
}