При интеграции интернет-магазина на платформе «1С-Битрикс» с конфигурациями 1С (например, 1С:Управление торговлей) часто возникает ситуация, когда комментарий, оставленный покупателем при оформлении заказа, не отображается в созданном документе 1С. Разберем основные причины этой проблемы и способы ее устранения.
Главная причина кроется в структуре хранения данных в «1С-Битрикс». В отличие от 1С, где поле комментария в документе чаще всего одно, на стороне сайта существует сразу несколько сущностей и полей для хранения текстовых заметок:
Стандартный модуль обмена по протоколу CommerceML передает в теге <Комментарий> значение системного поля USER_DESCRIPTION. Если на сайте комментарий записывается в кастомное свойство или поле менеджера, типовой обмен его игнорирует.
Проанализируем порядок действий в конфигурации 1С (на примере 1С:Управление торговлей 11 или аналогичных типовых решениях):
Заказ клиента.CommerceML.ЗначенияРеквизитов XML-файла), необходимо настроить правильное сопоставление дополнительных реквизитов сайта с реквизитами документа 1С.Если в 1С настройки выполнены верно, но комментарий все равно не приходит, проверим настройки на стороне «1С-Битрикс»:
USER_DESCRIPTION).В случаях, когда комментарий покупателя сохраняется в кастомное пользовательское свойство заказа, можно продублировать его значение в системное поле с помощью обработчика событий на стороне сайта. Для этого в файл инициализации init.php добавляют обработку события сохранения заказа:
AddEventHandler("sale", "OnOrderSave", "CopyCustomCommentToDescription");
function CopyCustomCommentToDescription($propertyId, $arFields, $values)
{
// Получаем значение пользовательского свойства и копируем в USER_DESCRIPTION
}
Таким образом, значение из кастомного поля автоматически попадет в системный тег USER_DESCRIPTION, откуда типовой модуль обмена 1С легко прочитает комментарий покупателя и подставит его в создаваемый документ.