mSklad + дополнение обмена данными УТ от Битрикс
приветствую. только начал разбираться как работает система экспорта товаров в 1С: УТ но уже встретил ряд проблем с дефолтным модулем обмена данными с интернет-магазином. судя по отзывам после перехода на CommerceML 2.07 все стало совсем плохо, в моем случае и вовсе ни цен, ни остатков не выводится (в xml файле данные отсутствуют).
собственно вопрос — можно ли приспособить модуль экспорта от Битрикс (имеющий более гибкие настройки) для работы с mSklad? при попытке авторизации на сайте выдает ошибку «неправильное имя кодировки ml». исходники пока не смотрел, возможно у кого-то уже есть опыт в подобном вопросе.
собственно вопрос — можно ли приспособить модуль экспорта от Битрикс (имеющий более гибкие настройки) для работы с mSklad? при попытке авторизации на сайте выдает ошибку «неправильное имя кодировки ml». исходники пока не смотрел, возможно у кого-то уже есть опыт в подобном вопросе.
Комментарии: 6
УТ случайно не вот это последняя самая?
У меня такая же беда.
У меня такая же беда.
УТ 11.1.10.131 от 20 апреля.
ну да она самая… Походу она кривая. Даже бренды не выгружает. 1С молчит.
вроде как разобрался с основными проблемами. вкратце о решении для УТ 11.1.10.131 (стандартный модуль выгрузки, CommerceML 2.07) + mSklad 1.0.7-pl. решение грубое, но работать надо.
для экспорта цен и остатков в 1С необходимо создать типовое соглашение с указанием вида цен, на странице создания соглашения отметить пункт «Доступно внешним пользователям». помимо этого, в настройках пользователей и прав (в разделе Администрирование) отметить аналогичный пункт — «Разрешить доступ внешним пользователям».
для корректной загрузки цен в настройках mSklad нужно включить импортирование всех цен (msklad_import_all_prices), изменить источник связи цены на «Типовое соглашение» (или как оно было названо в 1С), не забыть включить.
с остатками сложнее. раньше количество товара было между тегами <Количество>, сейчас же оно включено в тег <Склад> как свойство:
в mSklad установить связь 'Склад' с 'remains' (цель не принципиальна так полагаю), после этого заработает функция msklad_publish_by_quantity. но, для нескольких складов решение непригодно — будут использоваться остатки последнего в списке склада.
еще она проблема — имя xml файла было изменено, в этом же файле найти
тоже самое проделать для import.xml на случай если не будет производится выгрузка цен, по крайней мере синхронизация не прервётся.
для экспорта цен и остатков в 1С необходимо создать типовое соглашение с указанием вида цен, на странице создания соглашения отметить пункт «Доступно внешним пользователям». помимо этого, в настройках пользователей и прав (в разделе Администрирование) отметить аналогичный пункт — «Разрешить доступ внешним пользователям».
для корректной загрузки цен в настройках mSklad нужно включить импортирование всех цен (msklad_import_all_prices), изменить источник связи цены на «Типовое соглашение» (или как оно было названо в 1С), не забыть включить.
с остатками сложнее. раньше количество товара было между тегами <Количество>, сейчас же оно включено в тег <Склад> как свойство:
<Склад ИдСклада="a943bace-d3bb-11e4-8264-5c93a2ff55f9" КоличествоНаСкладе="9"/>
для корректной загрузки необходимо исправить либо модуль выгрузки 1C, либо скрипт импорта на стороне modx. для второго варианта в файле core\components\msklad\model\msklad\mskladcataloghandler.class.php закомментировать if(isset($this->properties['Количество'])){
$quantity = intval($xml->Количество);
добавитьif(isset($this->properties['Склад'])){
foreach($xml->Склад as $warehouse){
$quantity = intval($warehouse['КоличествоНаСкладе']);
}
к коде ниже заменить все ['Количество'] на ['Склад']в mSklad установить связь 'Склад' с 'remains' (цель не принципиальна так полагаю), после этого заработает функция msklad_publish_by_quantity. но, для нескольких складов решение непригодно — будут использоваться остатки последнего в списке склада.
еще она проблема — имя xml файла было изменено, в этом же файле найти
case 'offers.xml':
под ним добавить case 'offers0_1.xml':
если происходит выгрузка нескольких каталогов, таким же образом добавить offers1_1.xml и т.д.тоже самое проделать для import.xml на случай если не будет производится выгрузка цен, по крайней мере синхронизация не прервётся.
Имя файла кстати в последней версии протокола сильной роли не играет, 1с параметрами дополнительно шлет действия которые выполнить надо.
Просите нового разработчика вносить правки.
У меня эти проблемы решены уже :)
Просите нового разработчика вносить правки.
У меня эти проблемы решены уже :)
еще косяк критический, вдруг кому пригодится — если при выгрузке всего одной позиции скрипт уходит в бесконечный цикл:
в mskladcataloghandler.class.php заменить
в mskladcataloghandler.class.php заменить
if(count($prodSql)>0){
$sql = "INSERT INTO ".$this->modx->getTableName('mSkladProductTemp')." (`name`, `article`, `manufacturer`, `images`, `bar_code`, `description`, `features`, `properties`, `uuid`, `parent_uuid`, `status`) VALUES
".implode(',',$prodSql).";";
$stmt = $this->modx->prepare($sql);
$stmt->execute();
}
else{
на $sql_count = count($prodSql);
if($sql_count>0){
$sql = "INSERT INTO ".$this->modx->getTableName('mSkladProductTemp')." (`name`, `article`, `manufacturer`, `images`, `bar_code`, `description`, `features`, `properties`, `uuid`, `parent_uuid`, `status`) VALUES
".implode(',',$prodSql).";";
$stmt = $this->modx->prepare($sql);
$stmt->execute();
}
if ($sql_count = 0 || $totalProducts <= 1){
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.