Отладка обмена с web-сайтом на Битрикс









Часто возникает необходимость отладки обмена между 1С и web-сайтом на Битрикс. Разберемся, какие инструменты есть для этого…

Мне часто приходится заниматься интеграцией 1С с интернет-магазинами на Битрикс, и часто возникают непонятные ситуации при обмене на стороне сайта, и без пошаговой отладки много времени уходит на выяснение причин этих ошибок…

Расскажу, чем пользуюсь я в этих случаях.

Что нам понадобится:

1. Вирутальная машина битрикс, я пользуюсь версией под VirtualBox

2. Среда разработки PHP, я пользуюсь phpStorm

Теперь что делаем:

1. Устанавливаем VirtualBox и запускаем в нем скачанную виртуальную машину Битрикс, предварительно настроив сетевое подключение:

После запуска виртуальной машины мы увидим ip адрес виртуальной машины, с помощью этого адреса и зайдем на свеже развернутый сайт

 Далее, перейдя по данному адресу в браузере, мы можем либо настроить новый сайт, либо иммпортировать резервную копию с другого сайта….

Пока резервная копия разворачивается, нужно включить модуль xdebug в вирутальной машине, он там уже есть, просто отключен. Заходим в консоль BitrixVM под root (стандартный пароль bitrix).  И добавляем в файл  /etc/php.d/15-xdebug.ini следующий текст:

 

zend_extention=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=192.168.99.150  // ip адрес вашего компьютера
xdebug.remote_port=9000
xdebug.idekey=phpstorm

затем? после восстановления резервной копии сайта, нужно перезагрузить виртуальную машину.

для проверки правильности работы xdebug можно посмотреть информацию в /phpinfo.php, должно быть так:


Теперь настроим PhpStorm. Создаем новый проект из существующих файлов: меню File — New project from existing files… и выбираем расположение файлов на удаленном сервере через SFTP:

Дальше указываем имя проекта и путь к нему, Далее указываем адреса sftp и http нашей виртуальной машины Битрикс, Далее будет предложено выбрать путь на sftp сервере загрузки файлов проекта:

 

выбираем путь /home/bitrix/www и жмем ProjectRoot.

Пока проект синхронизирует файлы, перейдем к 1С:

Нам понадобится добавить в план обмена Б_ОбменССайтом строковый реквизит — КлючОтладки, 10 символов достаточно, и вынести этот ревизит на форму узла. И в общем модуле Б_ОбщиеПроцедурыИФункцииОбменаССайтом в функции ПолучитьДанныеССервера изменить первые строки кода следующим образом:

     Если ПараметрыОбмена.Ссылка.КлючОтладки <> "" Тогда
КодОтладки =  "&XDEBUG_SESSION_START=" + ПараметрыОбмена.Ссылка.КлючОтладки;
Иначе
КодОтладки = "";
КонецЕсли;

ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();

Попытка

Соединение.Получить(СокрЛП(ПараметрыЗапроса) + КодОтладки, ИмяФайлаОтвета, СокрЛП(Заголовки));

Исключение

СообщитьПодробно("Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль," + Символы.ПС + "а также настройки подключения к Интернет.", ПараметрыОбмена)

КонецПопытки;

Теперь запускаем нашу конфигурацию на отладку, форме узла плана обмена указываем КлючОтладки «phpstorm». В PhpStorm включаем ожидание отладки кнопкой:

Теперь включаем точки останова на необходимом коде обмена с 1с, например:

и запускаем обмен из 1С, как только дойдет исполнение на сервере до этого участка, в PhpStorm перехватит выполнение и остановит на указанной строке…

Будут вопросы — задавайте!

6 Comments

  1. script

    Будьте добры. Пожалуйста, продолжайте статьи по этой теме с примерами. Это очень актуально.

    Reply
  2. capitan
  3. invertercant

    Хотел написать похожую статью по отладке на php в eclipse из 1с, но что то откладывал все.

    Reply
  4. Артано

    (2) Неужели это бессовестный плагиат?!

    Reply
  5. vital1c

    (4) Артано, конечно плагиат, плагиат мануалов phpstorm и xdebug

    Reply
  6. FreeArcher

    Получилось!!

    Автору спасибо, как я давно хотел разобраться с удалённой отладкой.

    Я бы ещё в статью добавил скрин настройки отладки из phpstorm

    И у меня вопросы к автору или тем, кто в теме.

    Можете показать файлы в которых происходит обработка обмена с 1С. Не сам старт а именно внутренняя логика, в которую и хочется залезть попробовать разобраться? Я сам пока запутался.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *