Заметки
После settype ID превратился в true
После приведения типа ID неожиданно стал true. Обычно причина в такой строке:
$s_id = '123';
$s_id = settype($s_id, 'int');
var_dump($s_id); // bool(true) settype меняет переданную переменную по ссылке, но возвращает логический результат операции. Присваивание записывает этот результат обратно поверх уже преобразованного ID.
Для обычного приведения используйте cast:
$s_id = '123';
$i_id = (int) $s_id;
var_dump($i_id); // int(123) Либо вызывайте settype($s_id, 'int') без присваивания — хотя после этого имя переменной уже не отражает её тип.
Приведение не является проверкой ID: строка "123abc" при cast тоже может превратиться в число. Формат входного значения и существование записи проверяются отдельно. Для settype эта ошибка одинакова в обработчике CRM, PHP-действии БП и обычном PHP-скрипте.
Документация: settype.