В процессе интеграции «1С:Управление торговлей 11» (в том числе версии для Молдовы) и интернет-магазина на «1С-Битрикс» часто возникает загадочная ситуация: созданные в 1С новые товары не появляются на сайте после обмена, даже если в настройках узла установлена полная выгрузка. Однако стоит зайти в карточку нового товара, внести минимальное изменение (например, добавить и удалить пробел в названии) и сохранить, как товар успешно выгружается при следующей синхронизации. Разберем, почему возникает такой феномен и как его исправить, даже если вы используете синхронизацию с WordPress.
Рассмотрим ситуацию подробнее. У нас есть настроенный обмен между 1С и Битрикс (включая возможность настраивать группы каталога из карточек номенклатуры). Мы создаем новый товар со всеми необходимыми атрибутами: характеристиками, свойствами, ценами. Запускаем обмен, он проходит без ошибок, но товара на сайте нет. Почему так происходит?
Первая гипотеза, которая приходит на ум, связана с механизмом регистрации изменений в 1С. Обмен данными работает на основе планов обмена. Чтобы объект попал в выгрузку, он должен быть зарегистрирован в специальной таблице изменений. Возможно, при создании нового товара (событие ПриЗаписи) его ссылка (уникальный идентификатор) еще не сформирована, и поэтому система не может корректно зарегистрировать его для обмена. А при повторном сохранении, когда ссылка уже существует, регистрация проходит успешно. Эта теория логична, но не всегда объясняет все случаи, особенно когда требуется сопоставление номенклатуры.
Другой важный момент, который можно заметить при диагностике, — это анализ самого файла выгрузки (обычно `import.xml`). Даже при установленной галочке «Полная выгрузка» в настройках узла обмена в 1С, в XML-файле можно увидеть атрибут СодержитТолькоИзменения="true". Это не ошибка, а особенность протокола CommerceML. При больших объемах данных 1С выгружает каталог порциями (пакетами), и этот флаг сообщает сайту, что данный файл — это лишь часть данных, а не весь каталог целиком. Сайт, в свою очередь, не должен деактивировать товары, отсутствующие в этом файле. Проблема может возникнуть, если логика обработки этого флага на стороне сайта нарушена.
Как показывает практика, в большинстве случаев корень проблемы кроется не в 1С, а в настройках модуля обмена на стороне сайта «1С-Битрикс». Существует параметр, предназначенный для оптимизации, который и вызывает такое поведение.
Решение проблемы заключается в отключении использования контрольных сумм.
Разберем по шагам, что нужно сделать:
После этого выполните обмен данными из 1С снова. Новые товары должны выгрузиться корректно с первого раза.
Чтобы понять, почему эта настройка так влияет на выгрузку, давайте разберемся в ее механизме. Когда эта опция включена, Битрикс для каждого товара, приходящего из 1С, вычисляет хеш-сумму (MD5) на основе его данных: названия, описания, свойств и т.д. Эта сумма сохраняется в базе данных сайта.
Отключая эту опцию, мы заставляем Битрикс принудительно обрабатывать каждый элемент из файла выгрузки, игнорируя эту оптимизацию. Обмен может стать немного дольше, но он будет работать надежно.
Хотя отключение контрольных сумм является основным решением, полезно знать и о других возможных причинах и способах диагностики, если проблема не ушла или проявляется иначе.
Если вы не хотите менять настройки на стороне сайта или хотите быть уверены, что нужные товары точно попадут в выгрузку, можно зарегистрировать их к обмену вручную в 1С.
Номенклатура), отберите нужные товары и нажмите кнопку «Зарегистрировать».После этой процедуры выбранные товары гарантированно будут включены в следующий пакет выгрузки.
Иногда товар физически выгружается на сайт и попадает в базу данных, но не отображается в публичной части каталога. Причин может быть две:
Если каталог очень большой, обмен может прерываться по таймауту на стороне сервера. 1С отправляет пакет, сайт начинает его обрабатывать, но не успевает и соединение разрывается. При этом 1С может получить ложный ответ об успехе и снять регистрацию изменений с выгруженных товаров, хотя на сайте они так и не появились.
В этом случае попробуйте в настройках узла обмена в 1С уменьшить размер пакета выгрузки (например, выгружать не по 100 товаров за раз, а по 20). Это увеличит количество запросов, но каждый из них будет обрабатываться быстрее и стабильнее.
Таким образом, «феномен» с невыгрузкой новых товаров — это чаще всего следствие работы механизма оптимизации на стороне Битрикс. Отключение контрольных сумм является наиболее простым и эффективным решением этой распространенной проблемы.