Интеграция 1С и Bitrix не всегда проходит гладко, даже можно сказать что практически всегда возникают разного рода «подводные камни», с которыми приходится бороться. Вроде сделали всё по документации, но частенько можно столкнуться с разного рода ошибками. Довольно распространённая из них – появление при попытке соединения модуля обмена с сайтом, сообщение вида: «Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль».
Решение этой проблемы может быть разным, как на стороне 1С, так и на стороне сайта. По этой причине решил сделать вроде некого чек-листа, который позволит пройтись просмотреть каждый из пунктов и решить эту проблему без длительных поисков по разным ресурсам.
1. На компьютере, где запускается обмен с 1С — проверяем доступность сайта. 1C использует настройки подключения браузера Internet Explorer, поэтому стоит проверить открывается ли ваш сайт в этом браузере. Добавьте исключение для сайта – бывает соединение блокируется.
2. На стороне сайта — проверьте учётную запись, логин и пароль, а также разрешение для обмена в настройках интеграции с 1С. Пользователь должен быть в группе, для которой разрешен обмен с сайтом. Убедитесь, что логин состоит исключительно из букв латинского алфавита, т.к. это так же может стать причиной появления ошибок такого рода.
3. Очень часто бывает проблема с настройками временной зоны сервера базы данных. Т.е. временная зона базы данных должна быть выставлена правильно. Лечится очень просто, открываем файл /bitrix/php_interface/after_connect.php, и дописываем туда строку:
$DB->Query("SET LOCAL time_zone='".date('P')."'");
4. Ещё одна банальная причина – неправильный адрес указан в настройках подключения. Часто бывает ошибка именно в недоступности ссылки по http/https. Путь подключения по умолчанию должен быть такой:
рабочий_протокол://домен_вашего_сайта/bitrix/admin/1c_exchange.php
5. Если вышеуказанное не помогло, так же бывает ошибка может возникать при работе PHP в режиме CGI. В некоторых случаях бывают проблемы с передачей данных авторизации HTTP в PHP. Посмотреть в каком режиме отрабатывает PHP можно через функцию phpinfo() – если в режиме CGI, то будет «Server API: CGI». Простое решение – добавить в .htaccess строки вида:
RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
Далее в файле Bitrix/admin/.htaccess следует закомментировать строки, отключающие mod_rewrite:
#<ifmodule mod_rewrite.c=""> # RewriteEngine Off #</ifmodule>
После этого в файле bitrix/php_interface/dbconn.php добавляем строки:
$remote_user = $_SERVER["REMOTE_USER"] ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"]; $strTmp = base64_decode(substr($remote_user,6)); if ($strTmp) list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);
Стоить помнить, что описанное в этом пункте – это так называемый «костыль», по-хорошему лучше понастроить сервер под Bitrix или обратиться к тех поддержке хостинга.
Тут собраны самые распространённые причины данного вида ошибки. Если вы решили свою проблему иным путём, делитесь им в комментариях.