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

Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 14:08
SalahievFR
Подскажите, пожалуйста, где моя ошибка в коде.
План такой: нужно , чтобы при изменении статуса в поле Пользователи назначался человек, который поменял статус.
Вот код.

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

$manager_id = [current_user_id];
$entity_id = 215; // ИД сущности КЛИЕНТЫ 
$item_id = [id]; // ИД записи, в которой нужно изменить ответственного
$id_status = [225]; // ИД статуса сделки в форме
$id_statusnew = db_query("SELECT field_225 FROM app_entity_25 WHERE id=". $item_id);; // текущий ИД статуса сделки

// переменная для обновления поля
if ($id_status != $id_statusnew) {
$data = [
  'field_451' => $manager_id, // Значение поля, которое нужно поставить
];

// Команда обновления записи
items::update_by_id($entity_id,$item_id,$data);
  }

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 14:33
alena
$entity_id = 215; // ИД сущности КЛИЕНТЫ
чисто визуально на 1й взгляд - а вы тут скобки не забыли? может [215]?

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 15:26
SalahievFR
alena писал(а): 07 июн 2023, 14:33 $entity_id = 215; // ИД сущности КЛИЕНТЫ
чисто визуально на 1й взгляд - а вы тут скобки не забыли? может [215]?
Спасибо, Вы правильно подметили, скобки забыл. Но после проставления скобок код перестал выполняться. Ошибка выходит.


Warning: Illegal offset type in isset or empty in /home/c76141/klaus-auto-corp.ru/www/includes/classes/items/items.php on line 1516

Warning: Cannot modify header information - headers already sent by (output started at /home/c76141/klaus-auto-corp.ru/www/includes/classes/items/items.php:1516) in /home/c76141/klaus-auto-corp.ru/www/includes/functions/urls.php on line 14

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 15:28
SalahievFR
Я так понимаю этой командой нельзя менять назначенного пользователя?

items::update_by_id($entity_id,$item_id,$data);

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 15:41
alena
ну, примерно вот так наверное надо, я кусок вырезала, остальное не меняла, у вас ошибка т.к. вы запрос не разобрали db_fetch_array:

$id_statusnew = db_query("SELECT field_225 as sss FROM app_entity_25 WHERE id=". [id]); // текущий ИД статуса сделки

$info = db_fetch_array($id_statusnew);
$sss = $info['sss'];

// переменная для обновления поля
if ($id_status != $sss) {
$data = [
'field_451' => $manager_id, // Значение поля, которое нужно поставить
];

насчет вашего апдейта не знаю, я лично напрямую обновляю, могу вам скинуть пример как я назначаю пользователя-начальника на каждую новую создаваемую задачу в автоматизации

(если что, я не профи =)) могу запросто ошибаться)

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 15:42
SalahievFR
Решил проблему с обновлением назначенного пользователя. Вот код.

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

$manager_id = [current_user_id];
$entity_id = 215; // ИД сущности КЛИЕНТЫ 
$item_id = [id]; // ИД записи, в которой нужно изменить статус
$id_status = [225]; // ИД статуса сделки в форме
$id_statusnew = db_query("SELECT field_225 FROM app_entity_25 WHERE id=". $item_id);; // текущий ИД статуса сделки

if ($id_status != $id_statusnew) {
// Команда обновления записи
db_query("update app_entity_25 set field_451={$manager_id} where id={$item_id}");  
  }
Но данный код не понимает, что нужно менять назначенного пользователя только при изменении статуса. При редактировании независимо от того меняется статус или нет все равно переназначается пользователь. Подскажите, пожалуйста, как это исправить.

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 16:06
SalahievFR
alena писал(а): 07 июн 2023, 15:41 ну, примерно вот так наверное надо, я кусок вырезала, остальное не меняла, у вас ошибка т.к. вы запрос не разобрали db_fetch_array:

$id_statusnew = db_query("SELECT field_225 as sss FROM app_entity_25 WHERE id=". [id]); // текущий ИД статуса сделки

$info = db_fetch_array($id_statusnew);
$sss = $info['sss'];

// переменная для обновления поля
if ($id_status != $sss) {
$data = [
'field_451' => $manager_id, // Значение поля, которое нужно поставить
];

насчет вашего апдейта не знаю, я лично напрямую обновляю, могу вам скинуть пример как я назначаю пользователя-начальника на каждую новую создаваемую задачу в автоматизации

(если что, я не профи =)) могу запросто ошибаться)


Вот это я не до конца понимаю. Что делают эти строки?

$info = db_fetch_array($id_statusnew);
$sss = $info['sss'];

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 16:21
alena
Насколько я помню теорию db_query возвращает не единичное значение, а некий интерфейс, из которого уже путем парсинга нужно раздобыть значения... Но это лучше погуглить, я нормально не объясню)) $sss в моем примере - это тот ваш новый статус, который я и извлекла из db_query

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 16:38
SalahievFR
alena писал(а): 07 июн 2023, 16:21 Насколько я помню теорию db_query возвращает не единичное значение, а некий интерфейс, из которого уже путем парсинга нужно раздобыть значения... Но это лучше погуглить, я нормально не объясню)) $sss в моем примере - это тот ваш новый статус, который я и извлекла из db_query
Понял. В моем случае нет привязки к определенному статусу, а просто к изменению.

Re: Назначить ответственным пользователя по условию

Добавлено: 07 июн 2023, 17:45
SalahievFR
Подскажите, пожалуйста, что изменить в этом коде, чтобы новый пользователь назначался только если статус изменился в форме?

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

// ИД пользователя, который редактирует запись
$manager_id = [current_user_id];
// ИД сущности КЛИЕНТЫ
$entity_id = [215];
// ИД записи, в которой нужно изменить статус
$item_id = [id];
// ИД статуса клиента в форме
$id_status = [225];
// ИД текущего статуса
$id_statusnew = db_query("SELECT field_225 FROM app_entity_25 WHERE id=". $item_id);;
// условие ЕСЛИ СТАТУС ИЗМЕНИЛИ
if ($id_status != $id_statusnew) {
// Команда назначения нового пользователя
db_query("update app_entity_25 set field_451={$manager_id} where id={$item_id}");  
  }