Почему товары из 1С не попадают на сайт
Симптомы разные, причин немного. Ниже порядок, в котором их проверяют, от самого частого к редкому.
Что проверить по шагам
- Откройте журнал обмена на сайте и в 1С: там видно, сеанс завершился с ошибкой или вовсе не запускался.
- Проверьте пользователя обмена: не менялся ли пароль, есть ли права на импорт каталога. Это причина номер один.
- Посмотрите кодировку выгружаемых файлов, если в названиях товаров нечитаемые символы.
- Проверьте лимиты сервера: время выполнения скрипта, память, максимальный размер загружаемого файла.
- Сверьте типы цен: цены не обновляются, когда вид цены на сайте не соответствует выгружаемому из 1С.
- Проверьте правило для отсутствующих товаров, если часть каталога внезапно скрылась.
- Посмотрите, не обновлялась ли недавно 1С или сайт по отдельности: после одностороннего обновления обмен часто перестаёт понимать формат.
- Убедитесь, что задание обмена вообще выполняется: остановленный cron выглядит точно как сломанный обмен.
Неочевидные причины, которые ищут дольше всего
- Расхождение времени между сервером базы данных и веб-сервером. Если оно больше десяти минут, авторизация обмена перестаёт работать, хотя логин и пароль верные.
- Права на каталог
/upload/1c_catalog/. Пользователь веб-сервера должен иметь право записи: файлы выгрузки складываются именно туда частями. - Два обмена одновременно. Запущенные параллельно сеансы дерутся за временную таблицу, и появляется ошибка о том, что её не существует. Проверьте, не стоит ли расписание слишком плотно.
- Одинаковые названия типов цен в 1С — сайт не может их различить и импорт метаданных падает.
- Лимиты редакции. Число типов цен и складов ограничено редакцией продукта: лишние просто не создаются.
- Оборванная выгрузка плюс деактивация. Сайт скрывает всё, что не пришло в текущей сессии. Если связь оборвалась на середине полной выгрузки, каталог опустеет наполовину.
Симптом и причина
- Ошибка авторизации. Неверный логин, смена пароля или нехватка прав у служебного пользователя.
- Кракозябры в карточках. Несовпадение кодировок между выгрузкой и сайтом.
- Обмен падает по таймауту. Большой каталог и лимиты сервера; нужно дробление выгрузки.
- Пропали товары. Неполная выгрузка вместе с включённым скрытием отсутствующих позиций.
- Старые цены. Отдельный поток обмена ценами, который не запускается, или несовпадение типов цен.
- Нет заказов в 1С. Остановленное задание, истёкшие доступы или несопоставленные статусы.
Что сделать, чтобы не повторялось
Служебный пользователь с собственным паролем, который не трогают при кадровых изменениях. Уведомление ответственному при ошибке обмена: узнавать о поломке от клиента, который не нашёл товар, дороже. Разделение потоков, чтобы тяжёлая ночная выгрузка каталога не мешала частому обновлению остатков. И фиксация порядка обновлений: сначала тестовый контур, потом боевой.
Настройка обмена с нуля описана в инструкции как настроить обмен сайта с 1С. Если обмен падает регулярно и разбираться некому, это закрывается поддержкой сайта.
Частые вопросы
Вместо названий товаров непонятные символы. Что это?
Кодировка. Часть выгрузок отдаёт файлы в Windows-1251, а сайт ждёт UTF-8. Лечится настройкой кодировки в обмене; если выгрузку делает нетиповая обработка, правят её.
Обмен обрывается на середине большого каталога.
Обычно это таймаут или превышение размера запроса: на больших выгрузках сервер отдаёт ошибку и обмен останавливается. Выгрузку разбивают на пакеты поменьше и поднимают лимиты времени выполнения и памяти PHP.
Заказы с сайта не приходят в 1С.
Проверьте журнал обмена и расписание: часто дело в остановленном задании или истёкших доступах. Вторая частая причина — несопоставленные статусы заказов: документ не создаётся, потому что непонятно, в каком состоянии его заводить.
Каталог наполовину опустел после обмена. Что произошло?
Почти наверняка полная выгрузка оборвалась, а шаг деактивации отработал: сайт скрывает товары, которых не было в текущей сессии обмена. Лечится повторной полной выгрузкой, а чтобы не повторялось — разбивают выгрузку на части и следят, чтобы обмен не упирался в лимиты времени.