Настройка обмена с 1С - точка обмена, доступ, порядок шагов
Готовим сайт к первому обмену с учётной системой: заводим доступ, проверяем точку обмена и разбираем результат первого запуска.
Решение
Заводим отдельного пользователя для обмена:
$user = new CUser();// отдельная учётная запись только для обмена, не для людей$id = $user->Add([ 'LOGIN' => 'exchange1c', 'PASSWORD' => $password, 'CONFIRM_PASSWORD' => $password, 'EMAIL' => 'exchange@example.com', 'GROUP_ID' => [$exchangeGroupId], // группа с правом на обмен, не администраторы 'ACTIVE' => 'Y',]);Отдельная учётная запись отделяет обмен от людей: её пароль не меняется вместе с кадровыми перестановками, а действия видно в журнале отдельной строкой. Права администратора ей не нужны.
Проверяем, что точка обмена отвечает:
# служебный адрес обмена: с верным паролем отвечает служебным текстомcurl -s -u exchange1c:PASSWORD \ 'https://example.com/bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth' | head -3# success в ответе означает, что доступ естьОтвет с отказом означает, что дело в правах или в пароле, а пустой ответ - что адрес закрыт правилом веб-сервера либо переадресацией. Учётная система в обоих случаях сообщает одно и то же: обмен не начался.
Настраиваем приём каталога:
// параметры импорта живут в настройках модуля торгового каталогаCOption::SetOptionString('catalog', '1C_IBLOCK_ID', (string)$iblockId);COption::SetOptionString('catalog', '1C_INTERVAL', '600'); // шаг по времениCOption::SetOptionString('catalog', '1C_FILE_SIZE_LIMIT', '204800');// оба значения подбирают под сервер: готовых универсальных чисел нетШаг по времени и предел размера файла подбирают под сервер. Слишком большой шаг упирается во время выполнения, слишком маленький растягивает обмен на десятки запросов.
Смотрим результат первого запуска:
tail -50 /home/bitrix/www/upload/1c_catalog/1c_exchange.log 2>/dev/nullls -lh /home/bitrix/www/upload/1c_catalog/ | head # что реально приехалоПервый обмен проверяют по журналу и по файлам, а не по витрине. Товары могут уже лежать в базе, но не показываться из-за настроек компонента, и это отдельная задача.
Порядок настройки один и тот же: сначала доступ, потом инфоблок под каталог, потом параметры импорта. Обратный порядок приводит к тому, что параметры подбирают до того, как обмен вообще смог начаться.
Разделение ответственности между сторонами стоит проговорить до первого запуска. Сайт отвечает за приём и раскладку данных, учётная система - за состав, полноту и частоту выгрузки. Разбор любой жалобы начинается с вопроса, на чьей стороне данные потерялись, и файл обмена отвечает на него однозначно.
Расписание и состав выгрузки задаются в учётной системе, а не на сайте. Сайт принимает то, что ему прислали, и не умеет ни запросить данные сам, ни выбрать из них часть.
Типичные проблемы
Учётная система не соединяется с сайтом.
Не проходит авторизация на точке обмена либо адрес закрыт правилом веб-сервера. Проверяют его обычным запросом с логином и паролем.
Обмен идёт под администратором.
Не заведён отдельный пользователь. Это работает, но действия обмена смешиваются с действиями людей в журнале.
Обмен обрывается на большом файле.
Предел размера файла или время выполнения меньше, чем нужно шагу. Оба параметра подбирают под сервер.
Товары приехали не в тот инфоблок.
В настройках импорта указан другой инфоблок либо узел в учётной системе настроен на другой тип каталога.
Обмен проходит, а на витрине пусто.
Данные в базе есть, но компонент их не показывает. Это уже настройка витрины, а не обмена.
Частые вопросы
Нужны ли обмену права администратора?
Нет, достаточно права на обмен и на нужный инфоблок. Отдельная учётная запись с узкими правами безопаснее и понятнее в журнале.
Можно ли обмениваться по защищённому соединению?
Да, и это обычная практика: пароль обмена иначе передаётся открытым текстом. Сертификат при этом должен быть доверенным для учётной системы.
Как обмениваться с двумя базами сразу?
Отдельными узлами обмена с разными пользователями. Внешние коды из разных баз не должны пересекаться, иначе записи будут перетирать друг друга.
Почему первый обмен идёт часами?
Полная выгрузка каталога тяжелее последующих: приезжают все товары, свойства и картинки. Дальнейшие обмены передают только изменения.
Смежное
-
Настройка обмена - оглавление подтемы
-
Выгрузка товаров из 1С на сайт - что происходит с каталогом
-
Обмен заказами с 1С - вторая половина обмена
-
Обмен с 1С и HTTP - устройство обмена целиком
-
Не выгружаются заказы в 1С - разбор второй половины обмена
-
Долгий обмен и обрывы: шаг, память, время выполнения - подбор шага под сервер
-
Несколько баз и организаций: разведение заказов - обмен с несколькими базами
-
1С не может прочитать ответ сайта: разбор причин - когда обмен обрывается на первом шаге
-
Протокол обмена с 1С: шаги, параметры, ответы, отладка - из каких запросов состоит обмен
-
Расписание обменов: частота, окна, конфликты, блокировка - как расставить обмены во времени
-
Веб-сервис SOAP на сайте - когда обмен идёт вызовами методов, а не файлами