PHP « Битрикс и 1С УТ. Как запретить 1С перезаписывать названия товара в Битрикс?

При выгрузке товарных позиций из 1С в Битрикс выгружаются все параметры данных позиций.
Номенклатурные названия в 1С являются бухгалтерскими (т.е. такими, какими они являются в сопроводительных документах товара: в товарных накладных), они являются не подходящими для названий в интернет-магазине. При изменении названия товара в Битриксе, это название меняется на прежнее из 1С при следующей автоматической синхронизации.

Например, товар в товарной накладной (в базе 1С) называется "Стул-23".
Когда на сайте он должн иметь навзание "Стул для детей (деревенный)".

Как можно решить данную проблему? Без решения этой проблеммы синхронизация является относительно бессмысленной, т.к. названия товаров являются совершенно непонятными для покупателей. Оно также не подходит для поиска в Яндекс Маркете и в других поисковых системах.

В поддержке Битрикса получил следующий ответ:

Как в задается название так оно и выгружается.
Штатными средствами битрикса нельзя изменить эту логику.
Для реализации вашей задачи вам понадобится использовать обработчики событий:
Обработка событий - http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3493
OnBeforeIBlockElementAdd - http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockelementadd.php
OnBeforeIBlockElementUpdate - http://dev.1c-bitrix.ru/api_help/iblock/events/onbeforeiblockelementupdate.php


Я не понимаю, что необходимо конкретно изменить и где.

Заранее спасибо за помощь! =)
П.С. может быть есть какое-то более простое и правильное решение?

1 ответов


Тех поддержка уточнила, тем самым ответив на мой вопрос:

"В /bitrix/php_interface/init.php вставьте код:


AddEventHandler("iblock", "OnBeforeIBlockElementUpdate",  "DropNAME");
function DropNAME($arFields)
{    
    if (@$_REQUEST['mode']=='import')
    {
        unset($arFields['NAME']);
    }
}
 

После этого можно будет на сайте менять название элемента, при последующем обновление элемента из 1с, название не будет меняться."


Тут скорее не Битрикс, а саму 1С-ку ковырять надо - ту обработку, которая делает синхронизацию. Насколько я помню, в стандартных конфигурациях у номенклатуры есть "наименование" и "полное наименование". Так вот: в поля "полное наименование" вбить те названия, которые должны быть на сайте, и немного поправить обработку выгрузки на сайт - что-бы бралось именно полное наименование.


За обмен данными отвечает обработка ОбменССайтом.
Для вас самый реальный вариант будет:
Добавить дополнительное поле в справочник номенклатуры, либо приспособить какое-нибудь существующее под наименование для сайта.
После этого в обработке вы можете подменить наименование на нужное вам поле.