← К заметкам

Заметки

Пустое значение поля в CRM может быть не null

Пустая строка, null и отсутствующий ключ — разные результаты. А 0 может быть вполне заполненным значением: например, нулевой суммой.

Для строкового поля правило пустоты можно задать явно:

$field_name = 'UF_CRM_EXAMPLE';
$has_field = array_key_exists($field_name, $fields);
$field_value = $has_field ? $fields[$field_name] : null;
$is_empty = $has_field && ($field_value === null || $field_value === '');

Так отсутствие поля в частичном обновлении не превращается в команду очистки. empty() для этой задачи слишком широко: оно также считает пустыми 0, '0' и false.

Для списков, множественных полей и «Да/Нет» нужны собственные правила. Не сводите неизвестное значение к пустоте молча — иначе ошибка формата станет выглядеть как осознанная очистка.