Условный оператор в автоматизации действий

Все вопросы/проблемы по установке и использовании.
Ответить
Kashei
Сообщения: 3
Зарегистрирован: 28 янв 2025, 08:38
Имя: Айдар
Откуда: Казань

Условный оператор в автоматизации действий

Сообщение Kashei »

Столкнулся с проблемой при использовании условного оператора if в автоматизации действий.
В сущности есть 2 поля - простое текстовое с id 4106 и логический флажок 4107. Создана кнопка автоматизации действий, которая выполняет php скрипт:

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

$entity_id = 171;
$item_id = [id];
$randomNumber = rand(10, 100);
$checkboxstatus = [4107];

if ($checkboxstatus==true) {
    $temp9 = "не применимо";
} else {
    $temp9 = $randomNumber;
}

$data = [
  'field_4106' => $temp9,
];

items::update_by_id($entity_id,$item_id,$data);
После нажатия кнопки автоматизации текстовому полю 4106 присваивается значение "не применимо" независимо от того, установлен флажок 4107 или нет (по задумке, при снятом флажке в 4106 должно появиться случайное число). При этом присвоение значения true/false переменной $checkboxstatus происходит корректно. Пробовал переписать проверку условий с использованием оператора switch - та же петрушка.
Подскажите, плиз, в какую сторону копать.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1196
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Контактная информация:

Re: Условный оператор в автоматизации действий

Сообщение Fait »

Логическое поле "Флажок" хранит в БД не булево значение true, а строку вида "true" (ну и так, на будущее, булевы значения вообще в бд не хранятся в виде true/false, а чаще 1/0).
Код в вашем случае будет такой:

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

$item_id = [id];
$checkboxstatus = [4107];
if ($checkboxstatus=="true") {
    $temp9 = "не применимо";
} else {
    $temp9 = rand(10, 100);
}
$data = [
  'field_4106' => $temp9,
];
items::update_by_id(171,$item_id,$data);
Ответить