mSklad

Модуль для синхронизации с «1С УТ», «Класс365» и «Моим Складом»
Автор дополнения
Виталий Киреев
Пакетов
3
Закачек
1 903
Автор дополнения
Пакетов
3
Закачек
1 903
Версия 1.0.10-pl
Дата выпуска 11.12.2015
Загрузки 298
Просмотры 185

[mSync] 1.0.7 импорт характеристик (CommerceML 2)


Инструкция по интеграции Класс365
Инструкция по синхронизации вручную

Разбирем новую версию на примерах.


Начну с главного нововведения, импорт характеристик. В компоненте добавилась новая вкладка «Настройка импорта свойств»:

По умолчанию добавлены сразу несколько дефолтных связей, которые нельзя удалить, но можно изменить или деактивировать.

Здесь мы настраиваем какие характеристики товаров нам нужно импортировать.
Добавляем новую связь или редактируем существующую.

Поля:
  • «источник» — наименование поля характеристики из файлов import.xml и offers.xml, должно 1в1 совпадать
  • «тип поля» — тип поля куда сохраняем полученные данные(возможные значения «поле msProduct» или «tv»)
  • «цель» — наименование поля товара (должно совпадать с названием колонки в базе данных) или наименование тв параметра
  • чекбокс «активный» — использовать или нет связь при импорте

Новые настройки компонента

  • Добавление к псевдониму id товара (msklad_alias_with_id) — решает проблему с однаковыми псевдонимами, дописывая id товара
  • Создавать tv (msklad_create_properties_tv) — автоматически создаст и заполнит tv параметры для всех возможных характеристик товаров
  • Импортировать все цены (msklad_import_all_prices) — необходим когда в выгрузке offers.xml больше одной цены, настраивается через связи
  • Tv параметр цены с учетом характеристики (msklad_price_by_feature_tv) — tv параметр куда будут выгружены цены предложений одного товара в соответсвии с характеристикой
  • Публиковать товар если есть в наличии (msklad_publish_by_quantity) — публикует или отменяет публикацию в зависимости отналичия
  • Сохранять все свойства товара в одно tv (msklad_save_properties_to_tv) — tv параметр типа текст куда будут выгружаться все полученные характеристики в JSON формате

Первоначальная настройка для работы с CommerceML 2

Желательно перед установкой компонента иметь уже созданную и пустую «Категорию с товарами» компонента miniShop2, тогда при установке моего компонента он автоматически настроится на нее.
В настройках системы, по компоненту мы должны увидить следущее

Необходимо чтобы были заполнены следующие настройки «Id категории каталога (msklad_catalog_root_id)», «Шаблон по умолчанию для новых категорий (msklad_template_category_default)» и «Шаблон по умолчанию для новых товаров (msklad_template_product_default)»

Затем настраиваем синхронизацию
Переходим в компонент и открываем вкладку «Реквизиты синхронизации»

Переписываем параметры в 1с или сервис. Логин и пароль можно задать самостоятельно, через системные настройки.
В 1с «Администрирование» -> «Синхронизация данных» -> «Узлы обмена с сайтами»


Для правильной работы синхронизации, чтобы не было перебоев во время работы, желательно в сестемных настройках параметр «Лимит выполнения» (msklad_time_limit) сделать на пару секунд меньше чем лимит выполнения скриптов на сайте.

Важно!

Если не срабатывает авторизация, для FastCGI создайте файл .htaccess в папке /assets/components/msklad/ и добавьте в него следующие строки:
RewriteEngine On
RewriteCond %{HTTP:Authorization} !^$
 RewriteRule ^(.*)$ $1?http_auth=%{HTTP:Authorization} [QSA]

Так же может помочь, если прописать в .htaccess в корне сайта следующий код:
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=</body>

Примеры

Можно сделать первоначальную синхронизацию с сервисом, чтоб на сайт загрузились файлы import.xml и offers.xml для удобства дальнейшей настройки

Вариант 1 — автоматическое добавление характеристик

В системных настройках включаем параметр «Создавать tv»
Производим импорт, и наблюдаем созданные связи и новые tv параметры

В данном случае tv параметр «Размер» явно лишний, так как в miniShop2 уже есть соответсвующее поле, перенастраиваем следующим образом:


Характеристику «Производитель» тоже желательно перенастроить в соответствии с полем miniShop2 vendor, но дополнительно отключим дефолтные связи «Изготовитель» и «Бренд», вот так:

Удаляем ненужные tv и запускаем синхронизацию.

Вариант 2 — добавляем характеристики

Все аналогично предыдущему варианту, но не включаем параметр «Создавать tv» при первой синхронизации.
После первого импорта смотрим файл assets/components/msklad/1c_temp/import.xml
Свойства могут быть как отдельным справочником в теге <Свойства>
<Свойства>
      <Свойство>
        <Ид>76221</Ид>
        <Наименование>Количество скрепок</Наименование>
        <ДляТоваров>1</ДляТоваров>
        <ТипЗначений>Строка</ТипЗначений>
      </Свойство>
      <Свойство>
        <Ид>76223</Ид>
        <Наименование>Размер</Наименование>
        <ДляТоваров>1</ДляТоваров>
        <ТипЗначений>Строка</ТипЗначений>
      </Свойство>
    </Свойства>
тогда для связи характеристик берем значение из поля "<Наименование>" и копируем его в «Источник».

Так и непосредственно в теге товара:
<Товар>
        <Ид>000</Ид>
        <Наименование>Скрепки стальные </Наименование>
        <БазоваяЕдиница Код="9" НаименованиеПолное="упаковка" МеждународноеСокращение="PCE">упак.</БазоваяЕдиница>
        <Артикул>0000</Артикул>
        <Группы>
          <Ид>00000</Ид>
        </Группы>
        <Описание>Доп описание</Описание>
        <ЗначенияСвойств>
          <ЗначенияСвойства>
            <Наименование>Количество скрепок</Наименование>
            <Значение>35</Значение>
          </ЗначенияСвойства>
        </ЗначенияСвойств>
        <ЗначенияРеквизитов>
          <ЗначениеРеквизита>
            <Наименование>ВидНоменклатуры</Наименование>
            <Значение>Товар</Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>ТипНоменклатуры</Наименование>
            <Значение>Товар</Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>Полное наименование</Наименование>
            <Значение>Скрепки стальные </Значение>
          </ЗначениеРеквизита>
          <ЗначениеРеквизита>
            <Наименование>Количество скрепок</Наименование>
            <Значение>25</Значение>
          </ЗначениеРеквизита>
        </ЗначенияРеквизитов>
      </Товар>
В этом случае характеристики импортируются из тегов <ЗначенияСвойств> и <ЗначенияРеквизитов> (дубли объединяются), берем значение из поля "<Наименование>" и копируем его в «Источник».

Вариант 3 — импорт характеристик в одно поле

Создаем новый tv параметр и назначаем его шаблону товара.

В системные настройки, в параметр «Сохранять все свойства товара в одно tv» (msklad_save_properties_to_tv) прописываем название созданного tv.
Запускаем импорт и смотрим что получилось.

Используйте по своему усмотрению.

Вариант 4 — импорт цены определенного типа или нескольких цен товара

Бывают ситуации когда нужно импортировать только определенный тип цены, а по умолчанию импортируется только первая цена.
После первого импорта смотрим файл assets/components/msklad/1c_temp/offers.xml
<ТипыЦен>
      <ТипЦены>
        <Ид>111111</Ид>
        <Наименование>Оптовая</Наименование>
        <Валюта>RUR</Валюта>
        <Налог>
          <Наименование>НДС</Наименование>
          <УчтеноВСумме>true</УчтеноВСумме>
        </Налог>
      </ТипЦены>
      <ТипЦены>
        <Ид>2222222</Ид>
        <Наименование>Розничная</Наименование>
        <Валюта>RUR</Валюта>
        <Налог>
          <Наименование>НДС</Наименование>
          <УчтеноВСумме>true</УчтеноВСумме>
        </Налог>
      </ТипЦены>
    </ТипыЦен>
    <Предложения>
      <Предложение>
        <Ид>aaaaaaaa</Ид>
        <Наименование>Скрепки стальные</Наименование>
        <БазоваяЕдиница Код="9" НаименованиеПолное="упаковка" МеждународноеСокращение="PCE">упак.</БазоваяЕдиница>
        <Цены>
          <Цена>
            <Представление>175 RUR за шт.</Представление>
            <ИдТипаЦены>111111</ИдТипаЦены>
            <ЦенаЗаЕдиницу>175</ЦенаЗаЕдиницу>
            <Валюта>RUR</Валюта>
            <Единица>шт.</Единица>
            <Коэффициент>1</Коэффициент>
          </Цена>
          <Цена>
            <Представление>182.5 RUR за шт.</Представление>
            <ИдТипаЦены>2222222</ИдТипаЦены>
            <ЦенаЗаЕдиницу>182.5</ЦенаЗаЕдиницу>
            <Валюта>RUR</Валюта>
            <Единица>шт.</Единица>
            <Коэффициент>1</Коэффициент>
          </Цена>
        </Цены>
        <Количество>12</Количество>
      </Предложение>
Нас интересует только розничная цена, для ее импорта делаем следующее:
  • включаем системную настройку Импортировать все цены (msklad_import_all_prices)
  • переходим на вкладку «Настройка импорта свойств» в компоненте
  • добавляем новую связь
Для нескольких цен настраиваем аналогично, предварительно создав tv или добавив поля в товар miniShop2

Вариант 5 — импорт цен/наличия для нескольких торговых предложений одного товара

Если в системе установлен и настроен компонент msOptionsPrice, то цены автоматически выгрузятся в него в соответсвии с размерами. Необходимо наличие связи источник «Размер», тип «поле miniShop», цель «size».

Если компонента msOptionsPrice нет, то цены выгрузятся в tv параметр указанный в системной настройка «msklad_price_by_feature_tv» формате 110х120==95||200х200==176||300х300==257, при незаполненной настройке цены не выгружаются.

Наличие в соответствии с характеристикой выгружается при настроенной связи с источником «Количество» в аналогичном формате — 110х120==15||200х200==2||300х300==0.

Плагины

Теперь можно использовать собственные плагины во время синхронизации. Добавлены события «mskladOnProductImport» и «mskladOnProductOffers».

Пример плагина на событие «mskladOnProductImport»

Работаем с объектом $resource и массивом параметров $properties
if ($modx->event->name == 'mskladOnProductImport') {
	//fix series
	if(isset($properties['КатегорияБренда'])){
		$resource->set('series', $properties['КатегорияБренда']);
		$resource->save();
	}
}
return;

Пример плагина «mskladOnProductOffers»

Работаем с объектом $resource.
if ($modx->event->name == 'mskladOnProductOffers'){
	$qt = intval($resource->get('quantity'));
	if($qt) {
		$resource->set('instock', 1);
	}
	else {
		$resource->set('instock', 0);
	}
	$resource->save();
}
return;
Убрано всплывающее окно с реквизитами API МойСклад при установке, изменяется при необходимости через системные настройки.

mSync (ex mSklad) 1.0.10 pl (11.12.2015)

  • Правка багов

mSync (ex mSklad) 1.0.9 pl (27.10.2015)

  • Поддержка 1С Управление торговлей 11.
  • Установка miniShop2, если его еще нет.

mSync(ex mSklad)1.0.7 rc9 (04.12.2014)

mSklad 1.0.7 rc9 (13.11.2014)

  • fix update category/product on import
  • fix import freeze on import properties

mSklad 1.0.7 rc8 (11.11.2014)

  • add second format to import quantity
  • fix import sizes for msOptionsPrices

mSklad 1.0.7 rc7 (10.11.2014)

mSklad 1.0.7 rc6 (09.11.2014)

  • properties move to first tab in component
  • fix error on properties tab
  • fix slashes in properties
  • add support "class365" service
  • add settings "msklad_alias_with_id" and "msklad_publish_by_quantity"
  • remove MoySklad window from install

mSklad 1.0.7 rc5

  • fix errors on import properties
  • Removed unnecessary things

mSklad 1.0.7 rc4

  • add events "mskladOnProductImport", "mskladOnProductOffers"

mSklad 1.0.7 rc3

  • fix import categories

mSklad 1.0.7 rc2

  • fix import properties

mSklad 1.0.7 rc1

  • fix product prices import
  • add settings "msklad_import_all_prices"
  • fix import categories and properties
  • remove setting "msklad_quantity_tv"

mSklad 1.0.7 beta8

  • fix properties lexicon

mSklad 1.0.7 beta7

  • add parse "ЗначенияРеквизитов" to properties array

mSklad 1.0.7 beta6

-fix link properties in manager

mSklad 1.0.7 beta5

  • fixes in import properties
  • add settings "msklad_create_properties_tv"
  • add settings "msklad_save_properties_to_tv"

mSklad 1.0.7 beta4

  • fixes in import offers
  • fix generate alias on import

mSklad 1.0.7 beta3

  • fix price by feature in offers

mSklad 1.0.7 beta2

  • add price by feature setting
  • add translit to generate alias

mSklad 1.0.7 beta

  • add settable properties sync

mSklad 1.0.6 rc2

  • disable cache on import offers.xml

mSklad 1.0.6 rc1

  • fix cycling import products on import from import.xml

mSklad 1.0.6 rc

  • fix all errors on import from import.xml

mSklad 1.0.5 rc6

  • add settings "msklad_template_product_default" (import from minishop2 on install) and "msklad_template_category_default"
  • fix errors

mSklad 1.0.5 rc5

  • remove locks on create/update category and product
  • remove checkParentPermissions on create category/product
  • remove "Updating resourceMap before OnDocSaveForm event" on create category/product
  • add temp table for import category
  • fix errors

mSklad 1.0.5 rc4

  • fix product template
  • fix errors

mSklad 1.0.5 rc3

  • fix images source

mSklad 1.0.5 rc2

  • auto fill "msklad_catalog_root_id" setting on first install
  • fix import categories
  • add setting "Time limit"
  • increased import speed of large files

mSklad 1.0.5 rc1

  • add images support

mSklad 1.0.4 rc3

  • fix import errors

mSklad 1.0.4 rc2

  • fix errors
  • change encoding to windows-1251
  • add currency option

mSklad 1.0.4 rc1

  • fix errors
  • increased import speed of large files
  • save errors to modx log on import catalog from 1c
  • add debug messages on import catalog from 1c

mSklad 1.0.3 rc2

  • fix import prices by processor

mSklad 1.0.3 rc1

  • fix import products and categories

mSklad 1.0.3 beta

  • change view in backend
  • add external code field for products and categories
  • change mode for external code
  • add setting "Sync direction"
  • add plugin for change setting "Sync direction"
  • add loading products from 1c
  • add setting for root of catalog
  • hide sync button in component on mode "From 1c/MoySklad to miniShop2"
  • fix utf-8 charset for CommerceML import/export
  • change: create resources by processor
  • add settings: user_id_import and publish_default
  • add plugin for remove 1c uuid on "OnEmptyTrash" event
  • add context setting

mSklad 1.0.2 rc7

  • fix csv export
  • add new area for component

mSklad 1.0.2 rc7

  • add setting order status parameter
  • add new area for component

mSklad 1.0.2 rc6

  • add setting quantity tv parameter

mSklad 1.0.2

Stable release

Последние обсуждения в сообществе MODX.pro