В базе всё сохраняется как вводите, а вот при выводе обратно на страницу админки, разумеется, срабатывает обработчик (происходит «вывод пользователю»). Проверяйте в нём источник запроса и не преобразуйте текст, если человек находится в админке.
Очевидно, у вас очень старая версия Битрикса. Простое решение - развернуть современное ядро на пустом проекте с актуальной версией php и перенести туда шаблоны и кастомизации из вашего проекта. И вот если в них будут несовместимости с версией php, их уже можно и нужно править руками.
N, а чем скрипт-то поможет? Ну увидит автор, что у него php 8 и все галочки, например, зелёные. Скрипт же никак не проверит какая версия Битрикса установлена и какая версия php для неё максимальная.
Будет.
Вы бы могли просто написать два примера кода, запустить их и получить сразу ответы на все вопросы. Это не просто полезнее для усвоения знаний, но ещё и тупо быстрее.
Если вам нужно, чтобы скрипт был запущен, отработал и выключился, то зачем вообще использовать pm2? Гораздо проще в обычный системный крон добавить запуск скрипта напрямую.
Из метода forEach ничего не возвращается. В первом случае вы напрямую меняете свойство в объекте, во втором выбрасываете результат операции +1 в мусорку.
Так, как вы описываете, работает этот код: