[syncMoySklad] - синхронизация с "Мой Склад"
[syncMoySklad] — пакет для синхронизации с сервисом «Мой Склад».
В отличии от уже имеющихся дополнений работает с JSON API. Функционал работы по api существенно отличается от функционала протокола CommerceML, а инициатором синхронизации выступает сайт.
На данный момент реализована лишь следующая часть функционала…
Что уже реализовано…
и вкладка синхронизации. Там ненужно ничего руками заполнять, эти данные заполняются автоматически. Их редактирование полезно/возможно для отладки и когда вы понимаете что делаете. Самостоятельно там ненужно ничего прописывать.
Если эти данные вас смущают можно отключить вкладку настройкой sync_show_sync_data.
Синхронизация — админка сайта
Для запуска синхронизации достаточно выбрать нужное действие, будет открыто окно с логированием процесса.
Можно остановить/запустить/перезапустить процесс синхронизации.
Синхронизация — крон
Для синхронизации под крон пример файла ("/cron/sync.php"). Необходимо указать
Класс синхронизации
Возможно самостоятельное добавление класса синхронизации. Достаточно создать настройку
имя_класса_actions, к примеру
moysklad_actions и перечислить доступные действия
Будет добавлен пункт синхронизации имя_класса и подменю в виде перечисленных действий. Под каждое действие должен сущестовать процессор в папке имя_класса компонента синхронизации.
Базовый класс синхронизации с сервисом «Мой склад». На данный момент реализована синхронизация следующих сущностей.
Инициатором синхронизации является сайт. Более подробно можно ознакомиться по ссылке МойСклад JSON API
Настройки синхронизация — «Мой склад»
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Основные»
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Продукт»
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Модификация»
Доступные действия
Будет выполнена полная синхронизация с «Мой склад».
Импорт
Будет выполнен импорт с «Мой склад».
Экспорт
Будет выполнен экспорт в «Мой склад».
Импорт остатков
Будет выполнен импорт остатков с «Мой склад».
На данный момент api «Мой склад» не поддерживает выгрузку с указанием родителя. Поэтому при импорте всегда
будут выгружены полностью
все сущности импорта. Служба поддержки сообщила что работы по внедрению данного функционала ведутся. Как
только он будет доступен
— будет возможен выборочный импорт по родителю.
Экспорт же проходит с указанием текущей категории. Помните об этом при запуске синхронизации.
Первичная настройка
Необходимо задать логин и пароль пользователя «Мой склад»
moysklad_api_password
moysklad_api_user
Необходимо задать настройку moysklad_sync_folder — категорию синхронизации «Мой склад» и
moysklad_sync_parent — id категорию сайта.
К примеру мы хотим синхронизировать папку «Товары склада» в категорию сайта «Мой склад»
Поля категории
Настройка moysklad_category_fields — массив соответствия полей ресурса к полю сущности «Группа
товаров»
Поле «description» ресурса будет задано значение поля «description» сущности
Поля продукта
Настройка moysklad_product_fields — массив соответствия полей продукта к полю сущности «Товар»
Поле «description» ресурса будет задано значение поля «description» сущности
Поле «article» ресурса будет задано значение поля «article» сущности
Атрибуты продукта
Продукту или услуге можно добавить дополнительные поля, нажимаем на шестеренку и добавляем нужные поля
например добавим поле Размер
теперь нужно прописать соответствие поле МС к полю продукта на сайте. Пускай полю Размер будет соответствовать поле size продукта, тогда соответствие будет выглядеть так
можно задать значение поля по умолчанию, для этого надо задать атрибут value
options-
Например ключ поля stock, в настройкам прописываем его как
Также можно задавать соответствия к тв полям, для этого ключ необходимо указать в формате
tv3
Например нам нужна твшка с именем Остаток, смотрим идентификатор этого тв поля — 3 и в настройкам прописываем его как
Настройка moysklad_product_attributes — массив соответствия дополнительный полей продукта к полю
сущности «Атрибуты Товара»
Поле «color» ресурса будет задано значение поля «Цвет» сущности. Дополнительно указываем тип поля
«array»
Поле «size» ресурса будет задано значение поля «Размер» сущности. Дополнительно указываем тип поля
«array»
Примечание: Возможна работа с дополнительными опциями продукта, необходимо добавить префикс
«options-имяОпции» (options-stock)
Возможна работа с ТВ полями, имя поля необходимо задать как «tvидентификаторТВ» (tv1)
Цена продукта
Настройка moysklad_product_price — массив соответствия цен продукта к полю
сущности «Цена товара»
Значение по умолчанию 0
Остатки продукта
Настройка moysklad_product_stock — массив соответствия остатков продукта к полю
сущности «Остаток»
Значение по умолчанию 0.
Для minishop2 создаем опцию «stock», в нее и будет записываться остаток
Свои действия
Возможно добавление своих действий синхронизации. Для этого необходимо внести действие в настройку sync_moysklad_actions.
Рассмотрим добавление действия по импорту остатков продукта.
Настройка sync_moysklad_actions — sync,import,export,stock
Процессор stock. Указывает необходимые шаги синхронизации. Разрешаем опцию «process_stock» — обработки
остатков
WebHook
Возможна обработка событий от «Мой склад». Необходимо задать соответсвующие webHook.
Расмотрим пример обработки события при удалении продукта.
Описаны базовые функции
Задаем WebHook
сущности продукта
будет помечать ресурс на удаление.
Снять привязку
При синхронизации происходит связь объекта (ресурса) с сущностью синхронизации. Данные синхронизации доступны во вкладке синхронизации.
Возможно снять эту привязку, достаточно выполнить действие снять привязку — данные текущего объекта и всех вложенных будут очищены.
Полезно например когда вы выполнили синхронизацию, и сделали это допустим некорректно или еще что либо… и вам к примеру проще удалить сущность в сервисе Мой Склад и выполнить все заново, вот для этого и пригодится данное действие.
Снять блокировку
На время синхронизации происходит блокировка синхронизации. Действия синхронизации доступны только для пользователя запустившего процесс.
Данное действие снимает это ограничение. Не рекомендуется выполнять. Если у вас возникает предупреждение что процесс блокирован постарайтесь выяснить причины этого.
PS. Функционал описан кратко и возможностей конечно очень много. По мере возможностей постараюсь раскрыть тему шире.
Всем спасибо за внимание!
update (09.02.2017) .
— Пакет синхронизации разделен на [Sync] базовый пакет — основной функционал и [syncMoySklad] — класс и процессоры для работы с «Мой Склад»
— Добавлена работа с модификациями, адаптирован пакет [msOptionsPrice2]
update (04.03.2017).
— Добавлена работа с сущностью услуга — импорт/экспорт
— Добавлена работа различным кол-ом валют
— Добавлена работа со складами. Как следствие работа с остатками по складам.
В отличии от уже имеющихся дополнений работает с JSON API. Функционал работы по api существенно отличается от функционала протокола CommerceML, а инициатором синхронизации выступает сайт.
На данный момент реализована лишь следующая часть функционала…
Что уже реализовано…
- Группа товаров — импорт/экспорт
- Товары — импорт/экспорт
- Услуги — импорт/экспорт
- Модификации — импорт/экспорт
- Остатки — импорт
- Валюты — импорт
- Метаданные (товара, модификации) — импорт
и вкладка синхронизации. Там ненужно ничего руками заполнять, эти данные заполняются автоматически. Их редактирование полезно/возможно для отладки и когда вы понимаете что делаете. Самостоятельно там ненужно ничего прописывать.
Если эти данные вас смущают можно отключить вкладку настройкой sync_show_sync_data.
Синхронизация — админка сайта
Для запуска синхронизации достаточно выбрать нужное действие, будет открыто окно с логированием процесса.
Можно остановить/запустить/перезапустить процесс синхронизации.
Синхронизация — крон
Для синхронизации под крон пример файла ("/cron/sync.php"). Необходимо указать
- service — сервис синхронизации
- action — процессор синхронизации
- sync_step — начальный шаг синхронизации
$corePath = $modx->getOption('sync_core_path', null,
$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
/** @var Sync $Sync */
$Sync = $modx->getService('sync');
$params = array(
'service' => 'moysklad',
'action' => 'mgr/mscategory/sync',
'sync_step' => 'sync_init',
);
$response = $Sync->curlExec($params);
Пользователь синхронизации (задается в настройках sync) должен существовать в админке сайта с необходимыми правами (обновление и создание ресурсов и т.п. ), иначе при запуске вы получите сообщение "Доступ запрещён!".Класс синхронизации
Возможно самостоятельное добавление класса синхронизации. Достаточно создать настройку
имя_класса_actions, к примеру
moysklad_actions и перечислить доступные действия
Будет добавлен пункт синхронизации имя_класса и подменю в виде перечисленных действий. Под каждое действие должен сущестовать процессор в папке имя_класса компонента синхронизации.
{"mscategory":{"sync":"mscategory\/sync","import":"mscategory\/import","export":"mscategory\/export","stock":"mscategory\/stock"}}
Синхронизация — «Мой склад»Базовый класс синхронизации с сервисом «Мой склад». На данный момент реализована синхронизация следующих сущностей.
- Группа товаров — импорт/экспорт
- Товары — импорт/экспорт
- Модификации — импорт/экспорт
- Остатки — импорт
- Валюты — импорт
- Метаданные (товара, модификации) — импорт
Инициатором синхронизации является сайт. Более подробно можно ознакомиться по ссылке МойСклад JSON API
Настройки синхронизация — «Мой склад»
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Основные»
- sync_moysklad_actions — Доступные действия синхронизации.
- sync_moysklad_api_endpoint — Url для отправки запроса к МойСклад Api.
- sync_moysklad_api_user — Логин пользователя МойСклад.
- sync_moysklad_api_password — Пароль пользователя МойСклад.
- sync_moysklad_api_limit — Лимит обработки данных.
- sync_moysklad_sync_folder — Папка синхронизации. Название папки МойСклад.
- sync_moysklad_sync_parent — Категория синхронизации. Id категории сайта.
- sync_moysklad_currency — Валюта магазина.
- sync_moysklad_currency_rate — Тарифная ставка магазина.
- sync_moysklad_process_modification — Обрабатывать модификации.
- sync_moysklad_process_stock — Обрабатывать остатки.
- sync_moysklad_process_image — Обрабатывать изображения.
- sync_moysklad_category_class_key — Класс категории.
- sync_moysklad_category_template — Шаблон категории.
- sync_moysklad_category_published — Статус категории.
- sync_moysklad_category_fields — Основные поля категории продукта, массив соответсвия полей.
- sync_moysklad_category_skip_fields_on_upd — Поля категории продукта исключаемые при обновлении.
- sync_moysklad_category_process_on_import_upd — Обрабатывать категории продукта при импорте и обновлении.
- sync_moysklad_category_process_on_import_cre — Обрабатывать категории продукта при импорте и создании.
- sync_moysklad_category_process_on_export_upd — Обрабатывать категории продукта при экспорте и обновлении.
- sync_moysklad_category_process_on_export_cre — Обрабатывать категории продукта при экспорте и создании.
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Продукт»
- sync_moysklad_product_class_key — Класс продукта.
- sync_moysklad_product_template — Шаблон продукта.
- sync_moysklad_product_published — Статус продукта.
- sync_moysklad_product_fields — Основные поля продукта, массив соответсвия полей.
- sync_moysklad_product_skip_fields_on_upd — Поля продукта исключаемые при обновлении.
- sync_moysklad_product_attributes — Атрибуты продукта, массив соответсвия полей.
- sync_moysklad_product_price — Цены продукта, массив соответсвия полей.
- sync_moysklad_product_stock — Остатки продукта, массив соответсвия полей.
- sync_moysklad_product_process_on_import_upd — Обрабатывать продукты при импорте и обновлении.
- sync_moysklad_product_process_on_import_cre — Обрабатывать продукты при импорте и создании.
- sync_moysklad_product_process_on_export_upd — Обрабатывать продукты при экспорте и обновлении.
- sync_moysklad_product_process_on_export_cre — Обрабатывать продукты при экспорте и создании.
- sync_moysklad_product_process_attributes_on_import — Обрабатывать атрибуты продукты при импорте.
- sync_moysklad_product_process_attributes_on_export — Обрабатывать атрибуты продукты при экспорте.
- sync_moysklad_product_process_image_on_import_cre — Обрабатывать изображения при импорте и создании
продукта.
- sync_moysklad_product_process_image_on_import_upd — Обрабатывать изображения при импорте и обновлении
продукта.
- sync_moysklad_product_process_image_on_export_cre — Обрабатывать изображения при экспорте и создании
продукта.
- sync_moysklad_product_process_image_on_export_upd — Обрабатывать изображения при экспорте и обновлении
продукта.
- sync_moysklad_product_process_stock — Обрабатывать остатки продукта.
Доступны в разделе «Системные настройки» -> «syncMoySklad» -> «Модификация»
- sync_moysklad_modification_fields — Основные поля модификации, массив соответсвия полей.
- sync_moysklad_modification_characteristics — Характеристики модификации, массив соответсвия полей.
- sync_moysklad_modification_price — Цены модификации, массив соответсвия полей.
- sync_moysklad_modification_stock — Остатки модификации, массив соответсвия полей.
- sync_moysklad_modification_process_on_import — Обрабатывать модификации продукта при импорте.
- sync_moysklad_modification_process_on_export_upd — Обрабатывать модификации при экспорте и обновлении.
- sync_moysklad_modification_process_on_export_cre — Обрабатывать модификации при экспорте и создании.
- sync_moysklad_modification_process_char_on_export — Обрабатывать характеристики модификации при экспорте.
- sync_moysklad_modification_process_price_on_export — Обрабатывать цену модификации при экспорте.
- sync_moysklad_modification_process_stock — Обрабатывать остатки модификации при синхронизации.
Доступные действия
- sync — Полная синхронизации.
- import — Импорт.
- export — Экспорт.
- stock — Импорт остатков.
Будет выполнена полная синхронизация с «Мой склад».
Импорт
Будет выполнен импорт с «Мой склад».
Экспорт
Будет выполнен экспорт в «Мой склад».
Импорт остатков
Будет выполнен импорт остатков с «Мой склад».
На данный момент api «Мой склад» не поддерживает выгрузку с указанием родителя. Поэтому при импорте всегда
будут выгружены полностью
все сущности импорта. Служба поддержки сообщила что работы по внедрению данного функционала ведутся. Как
только он будет доступен
— будет возможен выборочный импорт по родителю.
Экспорт же проходит с указанием текущей категории. Помните об этом при запуске синхронизации.
Первичная настройка
Необходимо задать логин и пароль пользователя «Мой склад»
moysklad_api_password
moysklad_api_user
Необходимо задать настройку moysklad_sync_folder — категорию синхронизации «Мой склад» и
moysklad_sync_parent — id категорию сайта.
К примеру мы хотим синхронизировать папку «Товары склада» в категорию сайта «Мой склад»
Поля категории
Настройка moysklad_category_fields — массив соответствия полей ресурса к полю сущности «Группа
товаров»
{"pagetitle":{"key":"name","type":"string"},"description":{"key":"description","type":"string"},"editedon":{"key":"updated","type":"datetime"}}
Поле «pagetitle» ресурса будет задано значение поля «name» сущностиПоле «description» ресурса будет задано значение поля «description» сущности
Поля продукта
Настройка moysklad_product_fields — массив соответствия полей продукта к полю сущности «Товар»
{"pagetitle":{"key":"name","type":"string"},"description":{"key":"description","type":"string"},"article":{"key":"article","type":"string"},"weight":{"key":"weight","type":"float"},"volume":{"key":"volume","type":"float"},"editedon":{"key":"updated","type":"datetime"}}
Поле «pagetitle» ресурса будет задано значение поля «name» сущностиПоле «description» ресурса будет задано значение поля «description» сущности
Поле «article» ресурса будет задано значение поля «article» сущности
Атрибуты продукта
Продукту или услуге можно добавить дополнительные поля, нажимаем на шестеренку и добавляем нужные поля
например добавим поле Размер
теперь нужно прописать соответствие поле МС к полю продукта на сайте. Пускай полю Размер будет соответствовать поле size продукта, тогда соответствие будет выглядеть так
"size":{"key":"Размер","type":"array"}
можно задать значение поля по умолчанию, для этого надо задать атрибут value
"size":{"key":"Размер","type":"array","value":"oneSize"}
Также можно задавать соответствия к опциям продукта, для этого ключ необходимо указать с префиксомoptions-
Например ключ поля stock, в настройкам прописываем его как
options-stock
Также можно задавать соответствия к тв полям, для этого ключ необходимо указать в формате
tv3
Например нам нужна твшка с именем Остаток, смотрим идентификатор этого тв поля — 3 и в настройкам прописываем его как
tv3
Настройка moysklad_product_attributes — массив соответствия дополнительный полей продукта к полю
сущности «Атрибуты Товара»
{"introtext":{"key":"Описание товара","type":"string"},"color":{"key":"Цвет","type":"array"},"size":{"key":"Размер","type":"array"}}
Поле «introtext» ресурса будет задано значение поля «Описание товара» сущностиПоле «color» ресурса будет задано значение поля «Цвет» сущности. Дополнительно указываем тип поля
«array»
Поле «size» ресурса будет задано значение поля «Размер» сущности. Дополнительно указываем тип поля
«array»
Примечание: Возможна работа с дополнительными опциями продукта, необходимо добавить префикс
«options-имяОпции» (options-stock)
Возможна работа с ТВ полями, имя поля необходимо задать как «tvидентификаторТВ» (tv1)
Цена продукта
Настройка moysklad_product_price — массив соответствия цен продукта к полю
сущности «Цена товара»
{"price":{"key":"Цена продажи","type":"float","value":0},"old_price":{"key":"Цена старая","type":"float","value":0}}
Поле «price» ресурса будет задано значение поля «Цена продажи» сущностиЗначение по умолчанию 0
Остатки продукта
Настройка moysklad_product_stock — массив соответствия остатков продукта к полю
сущности «Остаток»
{"options-stock":{"key":"stock","type":"float","value":0}}
Поле «options-stock» ресурса будет задано значение поля «stock» сущностиЗначение по умолчанию 0.
Для minishop2 создаем опцию «stock», в нее и будет записываться остаток
Свои действия
Возможно добавление своих действий синхронизации. Для этого необходимо внести действие в настройку sync_moysklad_actions.
Рассмотрим добавление действия по импорту остатков продукта.
Настройка sync_moysklad_actions — sync,import,export,stock
Процессор stock. Указывает необходимые шаги синхронизации. Разрешаем опцию «process_stock» — обработки
остатков
require_once dirname(__FILE__) . '/sync.class.php';
class modSyncMoySkladStockProcessor extends modSyncMoySkladSyncProcessor
{
/**
* @var array
*/
protected $steps = array(
"sync_init",
"sync_read_stock",
"sync_import_upd_stock",
"sync_close",
);
public function initialize()
{
$initialize = parent::initialize();
$this->setOption('process_stock', true);
return $initialize;
}
}
return 'modSyncMoySkladStockProcessor';
WebHook
Возможна обработка событий от «Мой склад». Необходимо задать соответсвующие webHook.
Расмотрим пример обработки события при удалении продукта.
Описаны базовые функции
Задаем WebHook
- getWebHook — Получить список сущесвующих хуков.
- setWebHook — Установить хук. Необходимо указать 'action' — действие и 'entityType' — сущность
- updWebHook — Обновить хук.
- delWebHook — Отключить хук.
if (!$Sync->loadSyncTools("moysklad")) {
die('loadSyncTools');
}
$Sync->SyncTools->setWebHook(array('action' => 'DELETE', 'entityType' => 'product'));
Создаем плагин в админке сайта на событие «syncOnSyncObjectProcess» и при получении события удалениясущности продукта
будет помечать ресурс на удаление.
$syncService = 'moysklad';
if (!$Sync->loadSyncTools($syncService)) {
return;
}
/** @var xPDOObject $object */
$object = $modx->getOption('object', $scriptProperties, null, true);
if (
!$object
OR
!$Sync->isSyncObject($object, $syncService)
) {
return;
}
$syncType = $object->get('sync_type');
$syncAction = $object->get('sync_action');
$classKey = $object->get('class_key');
switch (true) {
/* hook event */
case $classKey == 'event' AND $syncType == 'product' AND $syncAction == 'update':
break;
case $classKey == 'event' AND $syncType == 'product' AND $syncAction == 'delete':
case $classKey == 'event' AND $syncType == 'service' AND $syncAction == 'delete':
$Sync->SyncTools->processSyncResourceDeleted($object);
break;
case $classKey == 'event' AND $syncType == 'productfolder' AND $syncAction == 'delete':
$Sync->SyncTools->processSyncResourceDeleted($object);
break;
}
Снять привязку
При синхронизации происходит связь объекта (ресурса) с сущностью синхронизации. Данные синхронизации доступны во вкладке синхронизации.
Возможно снять эту привязку, достаточно выполнить действие снять привязку — данные текущего объекта и всех вложенных будут очищены.
Полезно например когда вы выполнили синхронизацию, и сделали это допустим некорректно или еще что либо… и вам к примеру проще удалить сущность в сервисе Мой Склад и выполнить все заново, вот для этого и пригодится данное действие.
Снять блокировку
На время синхронизации происходит блокировка синхронизации. Действия синхронизации доступны только для пользователя запустившего процесс.
Данное действие снимает это ограничение. Не рекомендуется выполнять. Если у вас возникает предупреждение что процесс блокирован постарайтесь выяснить причины этого.
PS. Функционал описан кратко и возможностей конечно очень много. По мере возможностей постараюсь раскрыть тему шире.
Всем спасибо за внимание!
update (09.02.2017) .
— Пакет синхронизации разделен на [Sync] базовый пакет — основной функционал и [syncMoySklad] — класс и процессоры для работы с «Мой Склад»
— Добавлена работа с модификациями, адаптирован пакет [msOptionsPrice2]
update (04.03.2017).
— Добавлена работа с сущностью услуга — импорт/экспорт
— Добавлена работа различным кол-ом валют
— Добавлена работа со складами. Как следствие работа с остатками по складам.
Поблагодарить автора
Отправить деньги
Комментарии: 88
Ну вот, только отказался от МойСклад, так как в mSync не очень хорошо все импортировалось, как вышло новое дополнение. А Класс365 уже оплачен.
Дополнение еще не вышло, это так сказать больше анонс.
так как в mSync не очень хорошо все импортировалосьможно узнать в чем была загвоздка?
Точно не вспомню, но кажется, mSync некорректно выгружал остатки товара.
вы говорите о выгрузке остатков с «моего склада» на сайт? Или в обратную сторону?
да, с моего склада на сайт.
по api можно запросить информацию об остатках.
доступны:
stock — Остаток
inTransit — Ожидание
reserve — Резерв
quantity — Доступно
все это отлично выгружается.
Сложнее с обратной выгрузкой остатков в «Мой Склад», это реализуется только выгрузкой заказов, вот это еще не реализовано в моем компоненте.
доступны:
stock — Остаток
inTransit — Ожидание
reserve — Резерв
quantity — Доступно
все это отлично выгружается.
Сложнее с обратной выгрузкой остатков в «Мой Склад», это реализуется только выгрузкой заказов, вот это еще не реализовано в моем компоненте.
Вообще, конечно, очень интересно. По api, все же поправильнее интегрироваться, наверное) Я буду рад попробовать и приобрести. Интересует только пара вопросов:
Чем будет лучше синхры по CommerceML, которая в mSync сейчас? Можно ли будет плавно перейти с одного компонента на другой (сохранив все url и картинки к товарам)?
Чем будет лучше синхры по CommerceML, которая в mSync сейчас? Можно ли будет плавно перейти с одного компонента на другой (сохранив все url и картинки к товарам)?
Чем будет лучше синхры по CommerceMLНасколько я знаю CommerceML позволяет выгружать категории, продукты и заказы с сервиса «Мой Склад» на сайт.
По апи возможно как выгружать с сервиса «Мой Склад», так и загружать данные в «Мой Склад».
Аналогично и с другими сущностями сервиса. Так же поддержка пагинации при запросах к апи позволяет корректировать размер выборки в зависимости от мощности сервера. Работа с json всяко приятнее разбора xml.
Да много всего чего нет в CommerceML.
Можно ли будет плавно перейти с одного компонента на другой (сохранив все url и картинки к товарам)?да, конечно. Нужно будет установить и настроить компонент…
Подскажите когда ждать данный компонент?
К пятнице-субботе…
Прям как специально готовите)
А сколько стоить будет?
А сколько стоить будет?
1490 руб.
Обновил описание, отправил пакет в магазин.
— Пакет синхронизации разделен на [Sync] базовый пакет — основной функционал и [syncMoySklad] — класс и процессоры для работы с «Мой Склад»
— Добавлена работа с модификациями, адаптирован пакет [msOptionsPrice2]
Модуль работает на modx revo с шопкипером или на минишоп?
Модуль работает на modx revo с шопкипером или на минишоп?С шопкипером не пробовал, теоретически должно работать, так как нет какой то привязки к конкретному магазину. Нужно проставить необходимые классы ресурсов в настройках пакета и прописать соответствия полей.
Остается только вопрос по галерее продукта. Каким образом она у вас устроена? Скорее всего можно будет написать плагин на сохранение ресурса и там брать картинку синхронизации в поле sync_images и куда то ее сохранять. На первый взгляд особых сложностей быть не должно.
Спасибо за ответ, с этим модулем можно сделать синхронизацию с класс 365? или только с программой «мой склад»
с этим модулем можно сделать синхронизацию с класс 365не думаю, модуль работает по api МС. Возможно они в чет то и похожи, незнаю, с класс 365 не имел дела.
Добрый вечер. Как я понимаю у компонента нет возможности онлайн синхронизации остатков? Т.е., допустим, в нашем ИМ купили вещь, после оформления заказа (клиентом либо менеджером) в моем складе и ИМ остатки уменьшились на 1 ед.
Или нужно будет запускать синхронизацию вручную (либо по крону)?
Или нужно будет запускать синхронизацию вручную (либо по крону)?
Добрый вечер.
Теоретически можно задать вебхук на изменение остатков и написать плагин на обновление.
Практически не делал.
Теоретически можно задать вебхук на изменение остатков и написать плагин на обновление.
Практически не делал.
Через CommerceML, как я понял, это реализовать нельзя?
Как импортировать размеры, если в «Моем складе» они представлены в виде модификаций товара, а уже в самой модификации указывается дополнительное поле «Размер». Есть — ли стандартное решение или нужно
модификации МС синхронизируются с модификациями пакета msOptionsPrice2. В настройках syncMoySklad есть отдельный раздел связанный с модификациями.
Как импортировать размеры, если в «Моем складе» они представлены в виде модификаций товара
модификации МС синхронизируются с модификациями пакета msOptionsPrice2если же вы хотите чтото другое то вам в любом случае надо поставить выгрузку модификаций в пакете syncMoySklad и написав плагин например на сохранение ресурса брать модификации в поле sync_modifications и делать с ними что вам угодно
спасибо)
Спасибо, полезный плагин. Не могу понять, как синхронизировать неактивные товары? Пробовал в настройке «статус продукта» ставить «да/нет», но в МойСклад они никак не хотят выгружаться, как это сделать?
Спасибо, полезный плагин.
пожалуйста!
Не могу понять, как синхронизировать неактивные товары?
не предполагалось что либо делать с неопубликованными ресурсами.
Потому в данный момент никак их не выгрузить.
Вот так подстава :) А что если необходимо чтобы товар в админке был, синхронизировался, но не показывался на сайте временно. Может быть можно хотя бы в «Архивные» в «Мойсклад» его выгружать? Зачем тогда нужна настройка «статус продукта»?
Работать с неопубликованными ресурсами не считаю разумным. Архивные ресурсы моего склада это ресурсы к удалению.
Настройка статус для задания первоначального статуса продукта при импорте. Возможно ограничить вывод продуктов в каталог по какому либо признаку свойству…
Настройка статус для задания первоначального статуса продукта при импорте. Возможно ограничить вывод продуктов в каталог по какому либо признаку свойству…
В каталог да, ограничить вывод можно, но вот если товар опубликован, то ссылка прямая на него будет работать, что не всегда есть хорошо. Ладно, придется делать все товары активными и выгружать в МойСклад, потом опять делать неактивными, т.е. много ручной работы все равно :( Еще как на зло пропало куда-то ваше дополнение по массовому редактированию товаров.
Может хотябы можно какой-то Хук написать, который при синхронизации и наличии нулевых остатков (или по какому-то другому свойству) будет деактивировать/активировать товар на сайте?
Может хотябы можно какой-то Хук написать, который при синхронизации и наличии нулевых остатков (или по какому-то другому свойству) будет деактивировать/активировать товар на сайте?
Может хотябы можно какой-то Хук написать, который при синхронизации и наличии нулевых остатков (или по какому-то другому свойству) будет деактивировать/активировать товар на сайте?вы можете написать плагин на сохранение ресурса брать поле остатка и в зависимости от его значения
деактивировать/активировать товар на сайте
Еще момент, Владимир. Если товар был активирован и синхронизирован с МойСклад, то после его отключения(деактивации в магазине) и последующем импорте ИЗ МойСклад в Магазин товар становится активированным. Это баг или фича?
Если продукт активен в МС, то конечно он при импорте будет снова включен.
Попробуйте воспользоваться настройкой
Попробуйте воспользоваться настройкой
sync_moysklad_product_skip_fields_on_upd — Поля продукта исключаемые при обновлении.
А активность в МС определяется наличием в общей категории и в архиве? или есть какие-то другие опции?
А активность в МС определяется наличием в общей категории и в архиве?да, на одном магазине требовалось не выгружать некоторые товары. Было сделано следующее:
добавлена настройка sync_moysklad_filter_product_not_upload
значение — Не выгружать
в МС создано доп.поле — Не выгружать
у товаров которые не нужно выгружать в данное поле пишется что либо, соответственно эти товары не выгружаются c МС.
Здравствуйте. Возникла некоторая проблема с синхронизацией размеров из стандартного поля minishop2.
Изначально выглядит вот так:
В настройках компонента для поля прописана настройка из инструкции, а именно
Вроде бы все нормально, но вот после импорта значение поля приобретает следующий вид:
в базу данных значение сохраняется не как [«10»,«11»,«12»], а [«10,11,12»]
что с этим можно сделать или что я делаю не так?
Изначально выглядит вот так:
В настройках компонента для поля прописана настройка из инструкции, а именно
"size":{"key":"Размер","type":"array"}
После экспорта в МойСклад там отображается информация вот так:Вроде бы все нормально, но вот после импорта значение поля приобретает следующий вид:
в базу данных значение сохраняется не как [«10»,«11»,«12»], а [«10,11,12»]
что с этим можно сделать или что я делаю не так?
Добрый день.
Обновите baseSync до версии 1.0.9-beta и попробуйте выполнить импорт. Должно быть все ок.
Если будут проблемы — пишите в ТП.
Спасибо!
Обновите baseSync до версии 1.0.9-beta и попробуйте выполнить импорт. Должно быть все ок.
Если будут проблемы — пишите в ТП.
Спасибо!
Теперь всё правильно импортируется. Спасибо!
У меня есть каталог(1) и в нем ещё несколько каталогов(1.1;1.2;1.3) (а в них ещё подкаталоги).
Когда делаю экспорт с сайта на МС то синхронизация, как то коряво работает. То загрузит один 1.1, а другие нет. То загрузит 1.1 и несколько других подкаталогов (1.2.1; 1.2.3; 1.3.1 и тд, но не все). Пытаюсь снять привязку у 1, она снимается, но в 1.1;1.2;1.3 и подкаталогах привязка остается. В чем проблему? куда смотреть?
Когда делаю экспорт с сайта на МС то синхронизация, как то коряво работает. То загрузит один 1.1, а другие нет. То загрузит 1.1 и несколько других подкаталогов (1.2.1; 1.2.3; 1.3.1 и тд, но не все). Пытаюсь снять привязку у 1, она снимается, но в 1.1;1.2;1.3 и подкаталогах привязка остается. В чем проблему? куда смотреть?
Добрый день.
Напишите в ТП, укажите доступы к админке сайта и каталог в котором наблюдается данная проблема.
Спасибо!
Напишите в ТП, укажите доступы к админке сайта и каталог в котором наблюдается данная проблема.
Спасибо!
Дополнение требует miniShop2 или его можно настроить на сайтах, работающих на шопкипере?
miniShop2 не обязателен, но пакет содержит класс синхронизации только для miniShop2.
Для других магазинов теоретически можно написать обработчики аналогично имеющимся…
Для других магазинов теоретически можно написать обработчики аналогично имеющимся…
Спасибо!
Доброго дня. Возникла проблема 29.01 и продолжается, на новые товары не выгружаются остатки и цена, при этом в МойСклад всё в порядке. В настройках видно что повторяется ошибка, вручную тоже не получается выгрузить.
file.modx.pro/files/8/7/1/87186a34e10ae24b8f44f7976d9b8619.jpg
file.modx.pro/files/5/2/0/520d361134d26ea189a27cf95d662740.jpg
На стороне сайта плагин mSklad не позволяет себя обновить:
file.modx.pro/files/3/4/2/342fa3105c0f84e81cc924c563a0157b.jpg
Версия 1.0.10-pl.
file.modx.pro/files/8/7/1/87186a34e10ae24b8f44f7976d9b8619.jpg
file.modx.pro/files/5/2/0/520d361134d26ea189a27cf95d662740.jpg
На стороне сайта плагин mSklad не позволяет себя обновить:
file.modx.pro/files/3/4/2/342fa3105c0f84e81cc924c563a0157b.jpg
Версия 1.0.10-pl.
Добрый день.
Смотрим название пакета, смотрим название темы и видим что речь идёт о двух разных компонентах.
Пишем в ТП того компонента который используем.
Смотрим название пакета, смотрим название темы и видим что речь идёт о двух разных компонентах.
Пишем в ТП того компонента который используем.
Доброе время суток.
Подскажите в какое поле мне добавить
Например
Подскажите в какое поле мне добавить
"popular":{"key":"Популярный","type":"boolean"},"new":{"key":"Новый","type":"boolean"},"favorite":{"key":"Распродажа","type":"boolean"}
В МС поля с именами Популярный, Новый, Распродажа (тип флажок) созданы.Например
"tv6":{"key":"На главной","type":"boolean"}
Я добавил в moysklad_product_attributes и прекрасно работает
Здравствуйте, не получается синхронизировать поле производитель. Прописываю {«key»:«Производитель»,«type»:«array»} в sync_moysklad_product_attributes. В minishop2 созданы производители соответствующим id. Но при импорте в поле производителя просто первый вендор в списке выходит и все. Что не так делаю?
Доброе утро.
попробуйте как
попробуйте как
"vendor.name": {"key":"Производитель","type":"string"}
Благодарю! Работает.
Владимир добрый день
1. Можете подробнее описать про WebHook'и (может еще примеров)
2. Что указывать в sync_moysklad_web_hook_url?
3. Где задавать WebHook'и? (прочитал ваш пример и не понял)
4. Как я понял если задать webhook (пример на удаление) то при удалении товара из МС он автоматом и без дополнительных действий со стороны ИМ поставит продукт на удаление?
Написал не в ТП, может еще кому то пригодится.
Спасибо
1. Можете подробнее описать про WebHook'и (может еще примеров)
2. Что указывать в sync_moysklad_web_hook_url?
3. Где задавать WebHook'и? (прочитал ваш пример и не понял)
4. Как я понял если задать webhook (пример на удаление) то при удалении товара из МС он автоматом и без дополнительных действий со стороны ИМ поставит продукт на удаление?
Написал не в ТП, может еще кому то пригодится.
Спасибо
Добрый день.
1 — WebHook (wh) калбек на какое либо действие, обычно HTTP запрос по указанному адресу. Подробней в гугл…
2 — адрес по которому находится обработчик, можно получить как
3 — для работы с wh есть несколько методов
— getWebHook — Получить список сущесвующих хуков.
— setWebHook — Установить хук.
— updWebHook — Обновить хук.
— delWebHook — Отключить хук.
проще всего поставить компонент console и выполнить нужный код в нем
например, посмотреть список существующих wh
4 — да. Пример плагина syncMoySkladSystem. Там есть рабочий код на удаление категории/продукта.
1 — WebHook (wh) калбек на какое либо действие, обычно HTTP запрос по указанному адресу. Подробней в гугл…
2 — адрес по которому находится обработчик, можно получить как
$url_hook = $Sync->SyncTools->getHookUrl();
3 — для работы с wh есть несколько методов
— getWebHook — Получить список сущесвующих хуков.
— setWebHook — Установить хук.
— updWebHook — Обновить хук.
— delWebHook — Отключить хук.
проще всего поставить компонент console и выполнить нужный код в нем
например, посмотреть список существующих wh
<?php
echo "<pre>";
/** @var array $scriptProperties */
/** @var Sync $Sync */
$corePath = $modx->getOption('sync_core_path', null,
$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
if (!$Sync = $modx->getService('sync', 'Sync', $corePath . 'model/sync/',
array('core_path' => $corePath))
) {
return;
}
$service = 'moysklad';
if (!$Sync->loadSyncTools($service)) {
return;
}
$r = $Sync->SyncTools->getWebHook();
print_r($r);
4 — да. Пример плагина syncMoySkladSystem. Там есть рабочий код на удаление категории/продукта.
Владимир, что не так делаю.
1. В console выполняю код что бы посмотреть wh как вы написали. А почему ошибки?
2. в sync_moysklad_web_hook_url нужно это прописывать?
3. Повесил ваш пример для удаления на syncOnSyncObjectProcess и сейчас при синхронизации, экспорте или импорте вылезает ошибка
Синхронизация…
Пустой ответ. Попробуйте еще раз
prntscr.com/ivs44y
1. В console выполняю код что бы посмотреть wh как вы написали. А почему ошибки?
[2018-03-24 15:48:25] (ERROR @ /home/admin/web/tirinipul.ru/public_shtml/core/model/modx/modx.class.php : 1612)
[syncOnInit]
[2018-03-24 15:48:25] (WARN @ /home/admin/web/tirinipul.ru/public_shtml/core/xpdo/xpdo.class.php : 543)
Could not load package metadata for package sync.
[2018-03-24 15:48:25] (INFO @ /home/admin/web/tirinipul.ru/public_shtml/core/model/modx/registry/moddbregister.class.php : 147)
Message was null or expired: stdClass Object
(
[topic] => 4
[id] => moysklad
[created] => 2018-03-24 15:47:23
[valid] => 2018-03-24 15:47:23
[accessed] => 2018-03-24 18:47:23
[accesses] => 0
[expires] => 1521906503
[payload] => if (time() > 1521906503) return null;
return 'vqvsg75uatba9ho0k310e727s7';
[kill] => 0
)
Array
(
[0] => Array
(
[meta] => Array
(
[href] => https://online.moysklad.ru/api/remap/1.1/entity/webhook/39710f10-2f78-11e8-9ff4-34e80003c18b
[metadataHref] => https://online.moysklad.ru/api/remap/1.1/entity/webhook/metadata
[type] => webhook
[mediaType] => application/json
)
[id] => 39720f10-2f78-11e8-9ff4-34e80001c18b
[accountId] => 47278ea8-2d2b-11e8-9109-f8fc000014f6
[entityType] => product
[url] => https://site.ru/assets/components/syncmoysklad/hook.php?auth=YWRtaW5AZnJ3MTpkMsRlNzFiNzI2
[method] => POST
[enabled] => 1
[action] => DELETE
)
)
2. в sync_moysklad_web_hook_url нужно это прописывать?
https://site.ru/assets/components/syncmoysklad/hook.php?auth=YWRtaW5AZnJ3MTpkMsRlNzFiNzI2
3. Повесил ваш пример для удаления на syncOnSyncObjectProcess и сейчас при синхронизации, экспорте или импорте вылезает ошибка
Синхронизация…
Пустой ответ. Попробуйте еще раз
prntscr.com/ivs44y
1 — все так. Массив с хуками вам же вывел. На все что выше можете не обращать внимания.
2 — выше написал как его получить. Он формируется с помощью getHookUrl. Прежде нужно указать верные sync_user_password и sync_user_username в настройках синхронизации
3 — скорее всего что то криво подвесили
2 — выше написал как его получить. Он формируется с помощью getHookUrl. Прежде нужно указать верные sync_user_password и sync_user_username в настройках синхронизации
3 — скорее всего что то криво подвесили
В логах еще
[2018-03-24 16:14:50] (ERROR @ /home/admin/web/site.ru/public_shtml/core/components/sync/model/sync/sync.class.php: 386) Неправильное имя пользователя или пароль. Пожалуйста, проверьте введённые данные и попытайтесь снова.
а в sync_user_password и sync_user_username нужно указывать данные пользователя в ИМ или МС?
[2018-03-24 16:14:50] (ERROR @ /home/admin/web/site.ru/public_shtml/core/components/sync/model/sync/sync.class.php: 386) Неправильное имя пользователя или пароль. Пожалуйста, проверьте введённые данные и попытайтесь снова.
а в sync_user_password и sync_user_username нужно указывать данные пользователя в ИМ или МС?
нужно указывать данные пользователя в ИМ или МС?конечно ИМ
Здравствуйте! Хотел бы уточнить: из описания modstore.pro/packages/import-and-export/syncmoysklad понял, что компонент принимает данные об остатках, но не передаёт их в систему учёта. Т.е. при покупке в ИМ нескольких штук товара, на стороне МойСклад данные об их количестве не обновятся, верно?
Добрый вечер.
Все верно, для работы с заказами в МС предусмотренно отдельное апи. В данном пакете оно не реализовано.
Все верно, для работы с заказами в МС предусмотренно отдельное апи. В данном пакете оно не реализовано.
Возможно ли заказать такую доработку?
Здравствуйте, Володя.
Никак не получается снять блокировку с привязкой и запустить процесс синхронизации. Причем блокировка сразу при установке вылезла. Жму снять и ничего.
Никак не получается снять блокировку с привязкой и запустить процесс синхронизации. Причем блокировка сразу при установке вылезла. Жму снять и ничего.
Пробовал переустанавливать и все равно
Нажимаю руками снять привязку и блокировку — безрезультатно
Нажимаю руками снять привязку и блокировку — безрезультатно
Добрый день. Пишите в ТП modstore.pro/office/support#office/support/add
Спасибо!
Спасибо!
Добрый день,
Стоит ожидать доработку компонента на предмет работы с заказами или нет? Если да то когда?
Спасибо.
Стоит ожидать доработку компонента на предмет работы с заказами или нет? Если да то когда?
Спасибо.
Добрый вечер!
1) Компонент загружает только одно изображение, это мой косяк в настройке или ограничение со стороны Апи МС?
2) Очень не хватает дополнения для работы с заказами, вы не планируете в ближайшее время выпустить такое дополнение?
1) Компонент загружает только одно изображение, это мой косяк в настройке или ограничение со стороны Апи МС?
2) Очень не хватает дополнения для работы с заказами, вы не планируете в ближайшее время выпустить такое дополнение?
Добрый вечер.
1 — ограничение апи, отдает только 1 картинку.
2 — в ближайшее время не планирую.
1 — ограничение апи, отдает только 1 картинку.
2 — в ближайшее время не планирую.
подскажите, работает ли он с 1с?
Владимир, добрый день!
Название товаров и структура каталога в МС и Минишопе отличаются. Могу ли я обновлять остатки в Минишопе, находя нужный товар по полю Код из МС (поле будет содержать id товара на сайте) joxi.ru/l2ZRJK4FzEWxL2? При этом структуру каталога и товары на сайте не трогать, только обновлять остатки. Если это возможно, то как это лучше реализовать?
Название товаров и структура каталога в МС и Минишопе отличаются. Могу ли я обновлять остатки в Минишопе, находя нужный товар по полю Код из МС (поле будет содержать id товара на сайте) joxi.ru/l2ZRJK4FzEWxL2? При этом структуру каталога и товары на сайте не трогать, только обновлять остатки. Если это возможно, то как это лучше реализовать?
Добрый день! Подскажите, тип tv migx можно импортировать?
удалено
Может не нашел, есть ли в компоненте отправка заказов из minishop2 в Мой Склад и обновление статусов заказов из Мой Склад в Minishop2?
нет.
Привет Володя! Собираемся приобретать дополнение. Подскажи пожалуйта:
Возможно ли сделать так чтобы на сайт попадали:
— актуальные остатки
— актуальные цены
— измененные товары
То есть не весь каталог каждый раз по крону загружать из «Мой склад», а лишь изменения?
Возможно ли сделать так чтобы на сайт попадали:
— актуальные остатки
— актуальные цены
— измененные товары
То есть не весь каталог каждый раз по крону загружать из «Мой склад», а лишь изменения?
Добрый день, подскажите, пожалуйста 2 вещи.
Как получать «единицы измерения»
yadi.sk/i/gUxBQJrySQoiBQ
Как разносить остатки по складам. Я так понял, что это настройки в категории «фильтр», можете кто-нибудь написать пример как это вводить.
Как получать «единицы измерения»
yadi.sk/i/gUxBQJrySQoiBQ
Как разносить остатки по складам. Я так понял, что это настройки в категории «фильтр», можете кто-нибудь написать пример как это вводить.
Смог получить единицы измерения через доп. запрос JSON при синхронизации с помощью плагина.
Но с остатками по складам все еще вопрос, есть хоть какой-нибудь пример?
Но с остатками по складам все еще вопрос, есть хоть какой-нибудь пример?
Из МойСклад на сайт импортируются категории, но почему-то пустыми. Товаров внутри нет. Кто-то сталкивался с подобным? Как можно отследить где ошибка и исправить?
Володя, добрый день, можете скинуть полный пример с файлом, который работает по крону? По вашей инструкции не получилось настроить
Подскажите что сделано не правильно при настройке крона на импорт с мой склад
Создал PHP файл, с таким кодом, в качестве action указал «stock»
В настройках прописал пользователя
yadi.sk/i/klJ8mnJrJJkvPQ
В isp панели в планировщике создал задание
yadi.sk/i/CDhSrxkIO0pIyA
Но почему-то не срабатывает, в чем может быть причина?
Создал PHP файл, с таким кодом, в качестве action указал «stock»
<?php
// Подключаем
define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';
// Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
$corePath = $modx->getOption('sync_core_path', null,
$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
/** @var Sync $Sync */
$Sync = $modx->getService('sync');
$params = array(
'service' => 'moysklad',
'action' => 'mgr/mscategory/stock',
'sync_step' => 'sync_init',
);
$response = $Sync->curlExec($params);
В настройках прописал пользователя
yadi.sk/i/klJ8mnJrJJkvPQ
В isp панели в планировщике создал задание
yadi.sk/i/CDhSrxkIO0pIyA
Но почему-то не срабатывает, в чем может быть причина?
Я бы посоветовал две вещи попробовать
— уберите $_SERVER['DOCUMENT_ROOT'] в подключении index.php Укажите абсолютный путь к index.php
— в строке крона добавить php а затем уже путь к скрипту. (php /var/www/....) Если файл не содержит так называемый шебанг то система не будет знать каким интерпретатором его открывать.
— уберите $_SERVER['DOCUMENT_ROOT'] в подключении index.php Укажите абсолютный путь к index.php
— в строке крона добавить php а затем уже путь к скрипту. (php /var/www/....) Если файл не содержит так называемый шебанг то система не будет знать каким интерпретатором его открывать.
Вам удалось решить проблему?
Написал плагин, который делает товары с нулевым остатком неопубликованными, но он не срабатывает непосредственно после импорта. Приходится заново сохранять — тогда срабатывает. Подскажите, может я не на то событие повесил или что не так?
<?php
if ($modx->event->name=="OnDocFormSave" && $resource->get('template') == "17")
{
$pub = 0;
$q = $resource->get('id'); // Получаем id ресурса
$product = $modx->getObject('msProduct', $q); //id Товара msProduct
$stock = $product->get('stock.value');
$m = null;
$q = ['rid' => $resource->get('id')];
$res = $modx->getCollection('msopModification', $q);
foreach ($res as $item) {
//формируем массив из остатков всех модификаций этого товара
$prod[] = ['count' => $item->get('count')];
}
//Проверяем есть ли у нас в наличии хоть одна из модификаций текущего товара
$res = false;
foreach ($prod as $a) {
if ($a['count'] != 0) {
$res = true;
break;
}
}
if (isset($stock) || $res) {
$pub = 1;
}
$resource->set('published', $pub);
}
Разобрался. Было указано лишнее системное событие в настройках.
Не работает функционал синхронизации модификаций — ошибка в консоли:
[2021-03-20 09:22:37] (ERROR @ /home/h/hellogbj/groom1.ru/public_html/core/components/sync/model/sync/sync.class.php: 383) modification:export
[2021-03-20 09:22:37] (ERROR @ /home/h/hellogbj/groom1.ru/public_html/core/components/sync/model/sync/sync.class.php: 386) Array
(
[errors] => Array
(
[0] => Array
(
[error] => Ошибка сохранения модификации: должны быть заданы характеристики
[code] => 15001
[moreInfo] => dev.moysklad.ru/doc/api/remap/1.1/#обработка-ошибок-15001
[line] => 1
[column] => 2
[meta] => Array
(
[href] => online.moysklad.ru/api/remap/1.1/entity/variant/80799ea9-7825-11eb-0a80-0973000a2b0d
[metadataHref] => online.moysklad.ru/api/remap/1.1/entity/variant/metadata
[type] => variant
[mediaType] => application/json
[uuidHref] => online.moysklad.ru/app/#feature/edit?id=807999a5-7825-11eb-0a80-0973000a2b0b
)
)
)
)
[2021-03-20 09:22:37] (ERROR @ /home/h/hellogbj/groom1.ru/public_html/core/components/sync/model/sync/sync.class.php: 383) modification:export
[2021-03-20 09:22:37] (ERROR @ /home/h/hellogbj/groom1.ru/public_html/core/components/sync/model/sync/sync.class.php: 386) Array
(
[errors] => Array
(
[0] => Array
(
[error] => Ошибка сохранения модификации: должны быть заданы характеристики
[code] => 15001
[moreInfo] => dev.moysklad.ru/doc/api/remap/1.1/#обработка-ошибок-15001
[line] => 1
[column] => 2
[meta] => Array
(
[href] => online.moysklad.ru/api/remap/1.1/entity/variant/80799ea9-7825-11eb-0a80-0973000a2b0d
[metadataHref] => online.moysklad.ru/api/remap/1.1/entity/variant/metadata
[type] => variant
[mediaType] => application/json
[uuidHref] => online.moysklad.ru/app/#feature/edit?id=807999a5-7825-11eb-0a80-0973000a2b0b
)
)
)
)
А как можно получать изображения модификаций товаров из МойСклад в модификацию msOptionsPrice2? Используется API 1.2. Это где-то в настройках syncMoySklad указывать? Я вижу параметр sync_moysklad_modification_fields, но не понимаю, что дописать в JSON, чтобы получить картинку модификации. Это вообще возможно?
baseSync перестал авторизовываться. Друзья, кто может помочь разобраться?
Кто-нибудь выгружает Штрикоды к товарам?
У кого-нибудь работает обновление товаров по крону?
раньше были ошибки, прописал абсолютный путь к index.php, после этого пропали, но товары не экспортируются(
prnt.sc/nIKF9XajT9gJ
раньше были ошибки, прописал абсолютный путь к index.php, после этого пропали, но товары не экспортируются(
prnt.sc/nIKF9XajT9gJ
<?php
define('MODX_API_MODE', true);
$developmentConfig = dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))) . '/core/config/config.inc.php';
$productionConfig = dirname(dirname(dirname(dirname(__FILE__)))) . '/config/config.inc.php';
if (file_exists($developmentConfig)) {
/** @noinspection PhpIncludeInspection */
require_once $developmentConfig;
} else {
/** @noinspection PhpIncludeInspection */
//require_once $productionConfig;
}
/** @noinspection PhpIncludeInspection */
require_once '/home/ert/public_html/index.php';
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');
$modx->error->message = null;
/** @var Sync $Sync */
$Sync = $modx->getService('sync', 'Sync',
$modx->getOption('sync_core_path', null,
$modx->getOption('core_path') . 'components/sync/') . 'model/sync/');
$corePath = $modx->getOption('sync_core_path', null, $modx->getOption('core_path') . 'components/sync/');
$modx->lexicon->load('sync:default');
$params = array(
'service' => 'moysklad',
'action' => 'mgr/mscategory/export',
'sync_step' => 'sync_init',
);
$response = $Sync->curlExec($params);
//var_dump($response);
Можете поделиться как завели крон? Ни в какую не пашет, ни через crontab, ни через пакет cronmanager
Все решил, не проследил что исполняющий файл создан от другого пользователя, у кого проблемы с cron, проверяйте права и пользователя.
Файл cron:
Файл cron:
<?php
define('MODX_API_MODE', true);
require 'Полный пусть до файла index.php в корне';
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$corePath = $modx->getOption('sync_core_path', null,
$modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/sync/');
$Sync = $modx->getService('sync');
$params = array(
'service' => 'moysklad',
'action' => 'mgr/mscategory/sync',
'sync_step' => 'sync_init',
);
$response = $Sync->curlExec($params);
Добрый вечер. Обновил модуль для работы с api v1.2 Мой Склад. Но возникла проблема с дублями модификаций для товара. Кто сталкивался и может подсказать как решить?
Добрый вечер. Пишите в тп посмотрим в чем дело.
Но более 5 магазинов после обновления и с модификациями чувствуют себя нормально. Так что вероятно какая то локальная пенка связанная с опциями модификаций.
Но более 5 магазинов после обновления и с модификациями чувствуют себя нормально. Так что вероятно какая то локальная пенка связанная с опциями модификаций.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.