Уникальный статус у одной записей сущности

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
mailarn
Инвестор
Инвестор
Сообщения: 142
Зарегистрирован: 18 июн 2021, 10:33
Имя: Антон
Откуда: Екатеринбург
Контактная информация:

Уникальный статус у одной записей сущности

Сообщение mailarn »

Есть сущность и поле Выпадающий список, условно со значениями Да/Нет
Надо что бы в любой записи сущности при изменении на "Да", у записи, где в тот момент "Да", менялось на "Нет"
Т.е. Во всей сущности только одна запись может быть со значением Да.

На форуме обсуждалось подобное но только со вложенными сущностями.
Видимо надо делать автоматизацией - выполнить php скрипт.
Поделитесь кодом пожалуйста )
Создание отраслевых решений на базе CRM Руководитель https://webus.pro
alexinc
Сообщения: 391
Зарегистрирован: 03 мар 2022, 21:40
Имя: Alex
Откуда: Россия
Контактная информация:

Re: Уникальный статус у одной записей сущности

Сообщение alexinc »

mailarn писал(а): 23 май 2023, 17:24 Есть сущность и поле Выпадающий список, условно со значениями Да/Нет
Надо что бы в любой записи сущности при изменении на "Да", у записи, где в тот момент "Да", менялось на "Нет"
Т.е. Во всей сущности только одна запись может быть со значением Да.

На форуме обсуждалось подобное но только со вложенными сущностями.
Видимо надо делать автоматизацией - выполнить php скрипт.
Поделитесь кодом пожалуйста )
А делал нечто подобное. То есть, у меня было так:
Если в записях где-то стоит галка Да, то в других записях ее нельзя поставить и выводиться сообщение, что в записи № такая-то уже отмечено, снимите ее и будет счастье.
Если такое интересное - могу посмотреть.
Аватара пользователя
mailarn
Инвестор
Инвестор
Сообщения: 142
Зарегистрирован: 18 июн 2021, 10:33
Имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Уникальный статус у одной записей сущности

Сообщение mailarn »

alexinc писал(а): 23 май 2023, 17:44 Если такое интересное - могу посмотреть.
Мне желательно автоматизацией. В одной записи переключил на "Да", все остальные записи "Нет"
Создание отраслевых решений на базе CRM Руководитель https://webus.pro
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Уникальный статус у одной записей сущности

Сообщение tehnos »

Вот костыль. Простите за убожество, но если никто ничего не предлагает...
Нам понадобится такое же количество полей "Ajax запрос" сколько и логических полей.
Изменение логических полей в форме.

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

// скрыть поле ajax
echo '<script>$(".form-group-1073").hide()</script>';

// поле в форме
$var1 = [1074];

if($var1 == 'true') {
  echo '<script>$("#fields_1075").val("false");
  				$("#fields_1076").val("false");
  				$("#fields_1077").val("false");
  				$("#fields_1078").val("false");
  </script>';
}

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

// скрыть поле ajax
echo '<script>$(".form-group-1079").hide()</script>';

// поле в форме
$var2 = [1075];

if($var2 == 'true') {
  echo '<script>$("#fields_1074").val("false");
  				$("#fields_1076").val("false");
  				$("#fields_1077").val("false");
  				$("#fields_1078").val("false");
  </script>';
}

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

// скрыть поле ajax
echo '<script>$(".form-group-1080").hide()</script>';

// поле в форме
$var3 = [1076];

if($var3 == 'true') {
  echo '<script>$("#fields_1074").val("false");
  				$("#fields_1075").val("false");
  				$("#fields_1077").val("false");
  				$("#fields_1078").val("false");
  </script>';
}

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

// скрыть поле ajax
echo '<script>$(".form-group-1081").hide()</script>';

// поле в форме
$var4 = [1077];

if($var4 == 'true') {
  echo '<script>$("#fields_1074").val("false");
  				$("#fields_1075").val("false");
  				$("#fields_1076").val("false");
  				$("#fields_1078").val("false");
  </script>';
}

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

// скрыть поле ajax
echo '<script>$(".form-group-1082").hide()</script>';

// поле в форме
$var5 = [1078];

if($var5 == 'true') {
  echo '<script>$("#fields_1074").val("false");
  				$("#fields_1075").val("false");
  				$("#fields_1076").val("false");
  				$("#fields_1077").val("false");
  </script>';
}
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Уникальный статус у одной записей сущности

Сообщение tehnos »

Аааа, кажется я не правильно понял исходный вопрос. Значения не в форме менять надо...
Изменение логического поля во всех записях кроме текущей. Если так, то вот:
Поле "Ajax запрос". При выборе в логическом поле текущей записи значения "Да", все остальные записи перепишутся значением "Нет":

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

// скрыть поле ajax с номером 1083
echo '<script>$(".form-group-1083").hide()</script>';

// YY - номер сущности
$log = [XXX]; // логическое поле которое мы отслеживаем
$item_id = $_GET['item_id']; // получаем id текущей записи

if($log == 'true') {
 db_query("UPDATE `app_entity_YY` SET `field_XXX` = 'false' WHERE `id` != {$item_id} AND `field_XXX` = 'true'"); 
}
Последний раз редактировалось tehnos 24 май 2023, 08:46, всего редактировалось 3 раза.
Аватара пользователя
mailarn
Инвестор
Инвестор
Сообщения: 142
Зарегистрирован: 18 июн 2021, 10:33
Имя: Антон
Откуда: Екатеринбург
Контактная информация:

Re: Уникальный статус у одной записей сущности

Сообщение mailarn »

Логика понятна, но синтаксис не нравится. Ладно, разбираться буду
sin.jpg
Создание отраслевых решений на базе CRM Руководитель https://webus.pro
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Уникальный статус у одной записей сущности

Сообщение tehnos »

Простите, накосячил с полем [id].
В ajax полях его надо вот так звать:

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

$item_id = $_GET['item_id'];
Поправил предыдущий пост.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Уникальный статус у одной записей сущности

Сообщение Fait »

Думаю, автор имел ввиду не про AJAX, а чтобы так было: поставил галочку в текущей записи - и где-то в другой записи, где эта галочка была, она отключилась автоматически.

Если я правильно понимаю, то вот этот код нужно назначить на автоматизацию с типом срабатывания "После изменения записи":

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

$item_id = [id];
$flag = [777];
if ($flag == 'true') {
    db_query('update app_entity_77 set field_777="false" where id<>'.$item_id);
}
77 - id сущности
777 - id поля с флажком

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

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

$item_id = [id];
$f_list = [777];
if ($f_list == 55) {
    db_query('update app_entity_77 set field_777=44 where id<>'.$item_id);
}
77 - id сущности
777 - id поля со списком
44 - id значения поля "Нет"
55 - id значения поля "Да"
nruslan2
Сообщения: 2411
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Уникальный статус у одной записей сущности

Сообщение nruslan2 »

Fait писал(а): 24 май 2023, 02:38 Думаю, автор имел ввиду не про AJAX, а чтобы так было: поставил галочку в текущей записи - и где-то в другой записи, где эта галочка была, она отключилась автоматически.

Если я правильно понимаю, то вот этот код нужно назначить на автоматизацию с типом срабатывания "После изменения записи":

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

$item_id = [id];
$flag = [777];
if ($flag == 'true') {
    db_query('update app_entity_77 set field_777="false" where id<>'.$item_id);
}
77 - id сущности
777 - id поля с флажком

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

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

$item_id = [id];
$f_list = [777];
if ($f_list == 55) {
    db_query('update app_entity_77 set field_777=44 where id<>'.$item_id);
}
77 - id сущности
777 - id поля со списком
44 - id значения поля "Нет"
55 - id значения поля "Да
в обоих кодах лучше после where добавить условие выборки значения полей со значением "да"! так как смысла менять все записи нет, в некоторых же будет и так значение "нет"!
Например: если у вас их там 25000, потом будут жалобы на тормаза и вылеты)
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Уникальный статус у одной записей сущности

Сообщение tehnos »

Согласен. Добавил в свой пост условие, что меняем только трушные записи.
Да и php скрипт в автоматизацию при изменении записи - более логично конечно.

Для автоматизации:

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

$log = [XXX]; // логическое поле которое мы отслеживаем
if($log == 'true') {
 db_query("UPDATE `app_entity_YY` SET `field_XXX` = 'false' WHERE `id` != [id] AND `field_XXX` = 'true'"); 
}
Ответить