Мне часто приходится заниматься интеграцией 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 перехватит выполнение и остановит на указанной строке…
Будут вопросы — задавайте!
Будьте добры. Пожалуйста, продолжайте статьи по этой теме с примерами. Это очень актуально.
Хотел написать похожую статью по отладке на php в eclipse из 1с, но что то откладывал все.
(2) Неужели это бессовестный плагиат?!
(4) Артано, конечно плагиат, плагиат мануалов phpstorm и xdebug
Получилось!!
Автору спасибо, как я давно хотел разобраться с удалённой отладкой.
Я бы ещё в статью добавил скрин настройки отладки из phpstorm
И у меня вопросы к автору или тем, кто в теме.
Можете показать файлы в которых происходит обработка обмена с 1С. Не сам старт а именно внутренняя логика, в которую и хочется залезть попробовать разобраться? Я сам пока запутался.