Логин
Пароль
Войти как пользователь
Зарегистрироваться
После регистрации на сайте вам будет доступно отслеживание состояния заказов, личный кабинет и другие новые возможности

Удобный вывод отладочной информации массивов в 1С-Битрикс

10.09.2021
При разработке сайта, очень часто нужно посмотреть, какие данные хранятся в том или ином массиве, посмотреть структуру массива. Например, это могут быть массивы, которые используются в шаблонах компонентов: $arResult, $arParams, $arItems и другие. В этой заметке, на примере массива $arResult, мы расскажем, как удобно просмотреть данные, которые в нем хранятся.

Наверняка любой, даже начинающий разработчик 1С-Битрикс, знаком с конструкцией вида:

	
<? echo "<pre>"; print_r($arResult); echo "</pre>"; ?>

Этот код выводит данные массива в удобном виде в теле страницы. Элементы <pre></pre> задают форматирование информации. Чтобы массив выводился не сплошным текстом, а по строкам и с табуляцией (отступами) вложенных элементов.

Основной минус при использовании такого кода - массив выводится прямо на странице, это очень неудобно, если проводятся доработки на уже функционирующем сайте. Ведь пользователи тоже увидят эту информацию.

Чтобы решить эту проблему, есть несколько вариантов.

Показывать массив только администратору. Для этого добавим условие на проверку пользователя. Выводим данные, только если пользователь является администратором.

<? 
global $USER;
if ($USER->IsAdmin()) 
{
echo "<pre>"; print_r($arResult); echo "</pre>";
}
?>

Второй вариант скрытия данных массива - это присвоить блоку с массивом стиль dispaly:none; В этом случае, чтобы просмотреть распечатанный массив, нужно открыть страницу в браузере в режиме правки кода. Пример такого вывода:

<div style="display:none;">	
<?
echo "<pre>"; print_r($arResult); echo "</pre>";
?>
</div>
Но самым удобным вариантом вывода отладочной информации из массива, по нашему мнению, это вывод через консоль браузера (с помощью console.log). Вот пример вывода массива $arResult в консоль браузера:

<? echo "<script>console.log(".json_encode(print_r($arResult, true)).")</script>"; ?>

Во-первых, при таком варианте вывода массива, пользователи не видят данные массива на странице сайта. 

Во-вторых, этот код не мешает просмотру страницы самому разработчику. 

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

Единственный минус такого подхода - антивирус Битрикса ругается на такой код, как на вредоносный, и может блокировать выполнение этого кода. Причес антивирус ругается, только если мы выводим массив $arResult. С другими массивами проблем нет.

Поэтому нужно добавить в исключения антивируса (/bitrix/admin/security_antivirus.php?lang=ru&tabControl_active_tab=exceptions) код:

 echo "<script>console.log(".json_encode(print_r($arResult, true)).")</script>";

Пример результата вывода массива в консоли браузера:

array.png

#Заметки программиста
Читайте также
Мы не будем с Вами работать!
#Заметки менеджера
14.05.2021
Что такое композитный сайт?
#Решения для сайта
#Для интернет-магазина
14.05.2021