Страница 1 из 2
Ошибка при переходе на версию php 8.0
Добавлено: 14 янв 2024, 12:37
tradesu
Здравствуйте, ошибка не в самой версии программы, а в версии php. На версии php 7.4 все нормально работает, на версии 8.0 выскакивает ошибка.
Ошибка пояляется при клике на кнопку автоматизации.
Warning: Undefined array key 779 in C:\Users\TRADESU\Documents\OpenServer\OpenServer\domains\localhost\crm\modules\dashboard\actions\ajax_request.php on line 55
Warning: Trying to access array offset on value of type null in C:\Users\TRADESU\Documents\OpenServer\OpenServer\domains\localhost\crm\modules\dashboard\actions\ajax_request.php on line 55
Re: Ошибка при переходе на версию php 8.0
Добавлено: 14 янв 2024, 19:21
Fait
Переход на PHP требует некоторых изменений в своих написанных кодах.
Тут вам придётся переделать свой код скорее всего.
У меня при переходе на 8.2 потребовалось явно объявлять массивы, которые в 7.4 объявлять были необязательно.
Перестала корректно работать функция count(), некоторые формулы...
Пришлось переделывать
Re: Ошибка при переходе на версию php 8.0
Добавлено: 14 янв 2024, 19:58
support
Все верно. Необходимо переделать ваш код. Теперь необъявленные элементы массива не допускаются. С помощью функции isset() нужно проверять наличие элемента и затем выполнять действие.
Re: Ошибка при переходе на версию php 8.0
Добавлено: 14 янв 2024, 20:43
tradesu
Подскажите, что нужно сделать. На скрине показал пример.
Есть поля у которых свои айди, в автоматизации указываю айди этих полей в ручную.
При клике на кнопку автоматизации, всплывает форма для ввода данных. А над ней ошибки.
По сути сама автоматизация работает даже при выводе ошибки. Просто смущает что ошибка выскакивает.
Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in C:\Users\TRADESU\Documents\OpenServer\OpenServer\domains\localhost\crm\modules\items\views\processes.php on line 318
Я не писал отдельного кода, просто использую поля из сущностей для автоматизации
1. Есть выпададющие поля, которые нужно выбирать в ручную
2. При выборе полей - остальные заполняются автоматом
Сама автоматизация отрабатывает как нужно, но из-за того, что мне нужно сначала выбрать поля из выпадающего списка - остальные поля не заполнены и система показывает ошибки. Или я ошибаюсь?
Как устранить ошибку или на край отключить ее вывод?
Re: Ошибка при переходе на версию php 8.0
Добавлено: 15 янв 2024, 02:39
Fait
Где-то в полях сущности используется функция str_replace, в которой есть переменная $replace, нужно проверить её и сделать обработку пустого значения.
Самое простое - объявить эту переменную в самом начале кода и назначить ей пустое значение. Примерно вот так:
Сделайте это, потом посмотрим, что будет.
Re: Ошибка при переходе на версию php 8.0
Добавлено: 15 янв 2024, 11:57
tradesu
Спасибо огромное всем кто отвечает на мой вопрос! Отличная CRM система, отличное комьюнити и поддержка.
1. Создал Сущность Проекты.
2. Создал подсущность Акты
3. Поля, по которым появляются ошибки не имеют никаких формул и отдельного кода
4. Создал автоматизацию Акты, настроил процессы и заполнил значение полей.
Весь процесс по шагово показал на скринах.
В целом вывод ошибок никак не влияет на работу CRM все отрабатывает как нужно. Чтобы ошибки не радражали отключил их.
Отключил вывод ошибок в Open Server php 8.1
Поменял на:
было ;display_errors = "0"
стало: display_errors = "0"
Не знаю правильно ли отключать вывод ошибок или нужно как-то устранить проблему.
Re: Ошибка при переходе на версию php 8.0
Добавлено: 15 янв 2024, 13:51
support
Ошибка обнаружена. Файлы из архива замените в папке где установлена программа.
Сообщите результат.
Re: Ошибка при переходе на версию php 8.0
Добавлено: 15 янв 2024, 14:44
tradesu
Да, проблема с сущностью акты исчезла. Спасибо огромное!
Сохранилась другая ошибка, но так же все работает, просто она отображается.
Жалуется на actions\ajax_request.php кричит на поля 779 и 781
Прикрепил скрины сущностей и настроек.
Еще описал доп поля, которые есть в этих сущностях, не знаю влияют ли они на ошибку или нет но описал, чтобы была видна более полная картина.
В сущности ФИКСАЦИЯ ВРЕМЕНИ есть еще 2 поля:
850 (тайминг) ajax запрос с кодом:
$value = ''; //Переменная в которой будет хранится значение из списка
$tsc_id = [848]; //Получаем ID выбранного элемента из списка
$item_query = db_query("SELECT seconds FROM app_ext_timer WHERE entities_id=38 and items_id={$tsc_id}");
if($item = db_fetch_array($item_query)){
$value = $item['seconds'];
if ($value == 0){
echo '<b style="color:red">' . "Вы не зафиксировали время!" . '</b>';
} else {
echo $value;
$form_field_value = $value;
}
}
849 (время) ajax запрос с кодом:
$value = ''; //Переменная в которой будет хранится значение из списка
$tsc_id = [848]; //Получаем ID выбранного элемента из списка
$item_query = db_query("SELECT seconds FROM app_ext_timer WHERE entities_id=38 and items_id={$tsc_id}");
if($item = db_fetch_array($item_query)){
$value = $item['seconds'];
}
$seconds = $value;
if (is_numeric($seconds)) {
$minutes = floor($seconds / 60);
$seconds %= 60;
$hours = floor($minutes / 60);
$minutes %= 60;
$time = sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds);
/*echo "Время: $hours часов, $minutes минут, $seconds секунд";*/
echo $time; // Время (в формате ЧЧ:ММ:СС):*/
$form_field_value = $time;
} else {
echo '<b style="color:red">' . "Не выбрана задача" . '</b>';
}
В сущности ЗАДАЧИ есть еще 1 поле:
795 (время) ajax запрос с кодом:
$item_id = $_GET['item_id'];// получить айди текущей записи
$item_query = db_query("SELECT SUM(field_794) AS total FROM app_entity_51 WHERE parent_item_id = $item_id");
if ($item = db_fetch_array($item_query)) {
$total = $item['total'];
echo $total;
} else {
$form_field_value = "таймер не запускался";
}
$seconds = $total;
if (is_numeric($seconds)) {
$minutes = floor($seconds / 60);
$seconds %= 60;
$hours = floor($minutes / 60);
$minutes %= 60;
$time = sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds);
$form_field_value = $time;
} else {
echo "Некорректное значение времени";
}
Re: Ошибка при переходе на версию php 8.0
Добавлено: 15 янв 2024, 15:12
tradesu
При выполнении поиска отображается вот такая надпись:
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in C:\Users\TRADESU\Documents\OpenServer\OpenServer\domains\localhost\crm\plugins\ext\classes\global_search.php on line 121
оно выводит если в запросе 3 символа и он наход текст, если 3 символа и не находит текст, то не выдает надпись
Re: Ошибка при переходе на версию php 8.0
Добавлено: 16 янв 2024, 07:22
support
tradesu писал(а): ↑15 янв 2024, 15:12
При выполнении поиска отображается вот такая надпись:
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in C:\Users\TRADESU\Documents\OpenServer\OpenServer\domains\localhost\crm\plugins\ext\classes\global_search.php on line 121
оно выводит если в запросе 3 символа и он наход текст, если 3 символа и не находит текст, то не выдает надпись
Для исправления файл из архива замените в plugins\ext\classes\