Загрузка данных с сайтов поставщиков — различия между версиями
Krylovia (обсуждение | вклад) |
Krylovia (обсуждение | вклад) (→Настройка модуля) |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 14: | Строка 14: | ||
После предварительной настройки наша система будет по расписанию скачивать этот файл по ссылке и загружать из него наличие и цены товаров. | После предварительной настройки наша система будет по расписанию скачивать этот файл по ссылке и загружать из него наличие и цены товаров. | ||
+ | |||
+ | Поиск товаров для обновления цен и наличия будет осуществляться по следующему алгоритму: | ||
+ | # Сначала ищется товар с таким артикулом поставщика; | ||
+ | # Если товар не нашелся, то далее товар ищется по артикулу производителя; | ||
+ | # Если товар не нашелся, то по шаблону наименования формируется наименование и ищется товар с этим наименованием; | ||
+ | |||
+ | При этом есть возможность ограничить поиск товара определенной родительской группой товаров. | ||
+ | |||
+ | Если товар был найден не по артикулу поставщика, то артикул поставщика из файла будет привязан к товару автоматически. | ||
+ | |||
+ | '''Внимание!''' Модуль предназначен только для обновления цен и наличия для товаров, уже существующих в системе. Если в файле есть товары, которых нет в системе, то они не будут автоматически создаваться. | ||
= Включение модуля = | = Включение модуля = | ||
Строка 40: | Строка 51: | ||
** '''URL для загрузки файла''' - ссылка на файл поставщика; | ** '''URL для загрузки файла''' - ссылка на файл поставщика; | ||
** '''Узел товара''' - путь до узла товара внутри файла; | ** '''Узел товара''' - путь до узла товара внутри файла; | ||
− | ** '''Поле артикула''' - путь до поля с артикулом в рамках узла товара; | + | ** '''Поле артикула поставщика''' - путь до поля с артикулом поставщика в рамках узла товара; |
+ | ** '''Поле артикула производителя''' - путь до поля с артикулом производителя в рамках узла товара; | ||
** '''Шаблон наименования''' - шаблон для формирования наименования, по которому будет искаться товар, если он не был найден по артикулу поставщика; | ** '''Шаблон наименования''' - шаблон для формирования наименования, по которому будет искаться товар, если он не был найден по артикулу поставщика; | ||
** '''Поля с кол-вами (через запятую)''' - пути до полей с количествами в рамках узла товара; | ** '''Поля с кол-вами (через запятую)''' - пути до полей с количествами в рамках узла товара; | ||
** '''Поля с ценами (через запятую)''' - пути до полей с ценами в рамках узла товара; | ** '''Поля с ценами (через запятую)''' - пути до полей с ценами в рамках узла товара; | ||
+ | ** '''Родительская группа для ограничения поиска''' - товары для обновления цен/наличия будут искаться только в рамках указанной родительской группы товаров; | ||
== Пример настройки для XML-файла == | == Пример настройки для XML-файла == | ||
Строка 162: | Строка 175: | ||
В этом случае поле "Поле артикула" нужно заполнить так: "@cae" (символ "@" указывает на то, что это атрибут узла, а не отдельный узел). | В этом случае поле "Поле артикула" нужно заполнить так: "@cae" (символ "@" указывает на то, что это атрибут узла, а не отдельный узел). | ||
+ | |||
+ | == Пример настройки для JSON-файла == | ||
+ | |||
+ | Допустим, что поставщик предоставляет ссылку на JSON-файл с ценами и остатками: https://pro.4tochki.ru/export_data/rest_other.json | ||
+ | |||
+ | Если открыть эту ссылку в браузере, то увидим следуюшее содержимое файла: | ||
+ | <pre> | ||
+ | { | ||
+ | "tires": [ | ||
+ | { | ||
+ | "cae": "003309", | ||
+ | "brand": "Nokian", | ||
+ | "size": "R19", | ||
+ | "model": "AH213-19", | ||
+ | "rest_msk": 5, | ||
+ | "rest_spb": 2, | ||
+ | "price_msk": 3650, | ||
+ | "price_spb": 3685 | ||
+ | }, | ||
+ | { | ||
+ | "cae": "1014138", | ||
+ | "brand": "Nokian", | ||
+ | "size": "R20", | ||
+ | "model": "AH213-20", | ||
+ | "rest_msk": 5, | ||
+ | "rest_spb": "более 40", | ||
+ | "price_msk": 4120, | ||
+ | "price_spb": 4120 | ||
+ | }, | ||
+ | ... | ||
+ | ], | ||
+ | "rims": [ | ||
+ | { | ||
+ | "cae": "WHS152714", | ||
+ | "brand": "Nitro", | ||
+ | "model": "N20-123", | ||
+ | "rest_msk": 12, | ||
+ | "rest_spb": 2, | ||
+ | "price_msk": 2370, | ||
+ | "price_spb": 2370 | ||
+ | }, | ||
+ | { | ||
+ | "cae": "WHS152672", | ||
+ | "brand": "Nitro", | ||
+ | "model": "N20-124", | ||
+ | "rest_msk": 15, | ||
+ | "rest_spb": 7, | ||
+ | "price_msk": 3580, | ||
+ | "price_spb": 3600 | ||
+ | }, | ||
+ | ... | ||
+ | ] | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | В данном случае у поставщика разные узлы для разных типов товаров: '''tires''' - для шин, '''rims''' - для дисков. | ||
+ | |||
+ | Соответственно, необходимо создать две записи в табличной части "Настройки для обновления товаров": | ||
+ | |||
+ | '''Строка 1:''' | ||
+ | ** URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.json"; | ||
+ | ** Узел товара: "tires"; | ||
+ | ** Поле артикула: "cae"; | ||
+ | ** Шаблон наименования: "{brand} {size} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nokian R19 AH213-19"); | ||
+ | ** Поля с кол-вами (через запятую): "rest_msk,rest_spb"; | ||
+ | ** Поля с ценами (через запятую): "price_msk,price_spb"; | ||
+ | |||
+ | '''Строка 2:''' | ||
+ | ** URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.json"; | ||
+ | ** Узел товара: "rims"; | ||
+ | ** Поле артикула: "cae"; | ||
+ | ** Шаблон наименования: "{brand} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nitro N20-123"); | ||
+ | ** Поля с кол-вами (через запятую): "rest_msk,rest_spb"; | ||
+ | ** Поля с ценами (через запятую): "price_msk,price_spb"; | ||
+ | |||
+ | = Контроль результатов загрузки данных = | ||
+ | |||
+ | После сохранения настройки автоматически создается задача, статус выполнения которой можно увидеть в отчете "Отчеты / Запланированные задачи". | ||
+ | |||
+ | В результатах задачи отображается общее количество обновленных цен/остатков, а также общее количество пропущенных товаров. | ||
+ | |||
+ | Пропущенные товары - это узлы в файле, для которых не было найдено соответствующих товаров в системе (ни по артикулу поставщика, ни по шаблону наименования). | ||
+ | |||
+ | [[Файл:Module supplierRestPriceImport task result.png|border|688px|Результат загрузки данных]] | ||
+ | |||
+ | Кроме того, есть возможность сформировать отчет по пропущенным товарам (например, для того, чтобы занести в систему новые товары поставщика). | ||
+ | |||
+ | [[Файл:Module supplierRestPriceImport report btn.png|border|500px|Кнопка для открытия отчета о пропущенных товарах]] | ||
+ | |||
+ | [[Файл:Module supplierRestPriceImport report.png|border|940px|Отчет о пропущенных товарах]] | ||
[[Category:Интеграция с поставщиками]] | [[Category:Интеграция с поставщиками]] |
Текущая версия на 16:41, 10 ноября 2016
Содержание
Важно!
Перед загрузкой данных с сайтов поставщиков настоятельно рекомендуется внимательно прочитать данное руководство.
Компания "КлаудТим" не несет ответственности за любые проблемы, прямо или косвенно связанные с синхронизацией.
Со своей стороны мы стараемся сделать все возможное для обеспечения правильной и надежной синхронизации.
Возможности
Модуль позволяет загружать цены и наличие товаров у поставщиков напрямую с их сайтов по расписанию.
Для этого поставщик должен предоставить ссылку на JSON или XML-файл, в котором отражены его остатки и/или его цены. Ссылка может быть как на сайт (начинается с "http://"), так и на ftp-сервер (начинается с "ftp://").
После предварительной настройки наша система будет по расписанию скачивать этот файл по ссылке и загружать из него наличие и цены товаров.
Поиск товаров для обновления цен и наличия будет осуществляться по следующему алгоритму:
- Сначала ищется товар с таким артикулом поставщика;
- Если товар не нашелся, то далее товар ищется по артикулу производителя;
- Если товар не нашелся, то по шаблону наименования формируется наименование и ищется товар с этим наименованием;
При этом есть возможность ограничить поиск товара определенной родительской группой товаров.
Если товар был найден не по артикулу поставщика, то артикул поставщика из файла будет привязан к товару автоматически.
Внимание! Модуль предназначен только для обновления цен и наличия для товаров, уже существующих в системе. Если в файле есть товары, которых нет в системе, то они не будут автоматически создаваться.
Включение модуля
Для включения модуля необходимо зайти в ваш личный кабинет на сайте mrdoc.org и включить модуль "Интеграция с поставщиками".
Настройка модуля
После включения модуля в вашей программе появляется новый пункт меню "Настройки загрузки данных поставщиков".
Этот пункт ведет в журнал, где для каждого поставщика необходимо создать отдельную запись.
- Поставщик - поставщик, для которого будут загружаться цены и наличие. Цены будут загружаться по тому типу цен, который указан в карточке поставщика (в поле "Закупочный тип цен");
- Способ расчёта цены - способ вычисления итоговой цены поставщика для тех случаев, когда у поставщика несколько разных цен для одного товара (например, разные цены на разных складах);
- Периодичность - с какой периодичностью загружать данные с сайта поставщика;
- Валюта цен - валюта для загрузки цен;
- Сбрасывать наличие после загрузки - при установке этого флажка будет сбрасываться наличие для всех товаров, которых не было в файле, но по которым ранее было зафиксировано наличие у данного поставщика;
- Логин, пароль - некоторые поставщики требуют аутентификации для скачивания файла;
- Табличная часть "Настройки для обновления товаров" - это список правил для разбора файла:
- URL для загрузки файла - ссылка на файл поставщика;
- Узел товара - путь до узла товара внутри файла;
- Поле артикула поставщика - путь до поля с артикулом поставщика в рамках узла товара;
- Поле артикула производителя - путь до поля с артикулом производителя в рамках узла товара;
- Шаблон наименования - шаблон для формирования наименования, по которому будет искаться товар, если он не был найден по артикулу поставщика;
- Поля с кол-вами (через запятую) - пути до полей с количествами в рамках узла товара;
- Поля с ценами (через запятую) - пути до полей с ценами в рамках узла товара;
- Родительская группа для ограничения поиска - товары для обновления цен/наличия будут искаться только в рамках указанной родительской группы товаров;
Пример настройки для XML-файла
Допустим, что поставщик предоставляет ссылку на XML-файл с ценами и остатками: https://pro.4tochki.ru/export_data/rest_other.xml
Если открыть эту ссылку в браузере, то увидим следуюшее содержимое файла:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <data> <tires> <cae>003309</cae> <brand>Nokian</brand> <size>R19</size> <model>AH213-19</model> <rest_msk>5</rest_mkrs> <rest_spb>2</rest_sk2> <price_msk>3650</rest_sk3> <price_spb>3685</rest_sk4> </tires> <tires> <cae>1014138</cae> <brand>Nokian</brand> <size>R20</size> <model>AH213-20</model> <rest_msk>5</rest_mkrs> <rest_spb>более 40</rest_sk2> <price_msk>4120</rest_sk3> <price_spb>4120</rest_sk4> </tires> ... <rims> <cae>WHS152714</cae> <brand>Nitro</brand> <model>N20-123</model> <rest_msk>12</rest_mkrs> <rest_spb>2</rest_sk2> <price_msk>2370</rest_sk3> <price_spb>2370</rest_sk4> </rims> <rims> <cae>WHS152672</cae> <brand>Nitro</brand> <model>N20-124</model> <rest_msk>15</rest_mkrs> <rest_spb>7</rest_sk2> <price_msk>3580</rest_sk3> <price_spb>3600</rest_sk4> </rims> ... </data>
В данном случае у поставщика разные узлы для разных типов товаров: tires - для шин, rims - для дисков.
Соответственно, необходимо создать две записи в табличной части "Настройки для обновления товаров":
Строка 1:
- URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.xml";
- Узел товара: "tires" (путь к узлу товара не учитывает корневой узел "data");
- Поле артикула: "cae";
- Шаблон наименования: "{brand} {size} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nokian R19 AH213-19");
- Поля с кол-вами (через запятую): "rest_msk,rest_spb";
- Поля с ценами (через запятую): "price_msk,price_spb";
Строка 2:
- URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.xml";
- Узел товара: "rims" (путь к узлу товара не учитывает корневой узел "data");
- Поле артикула: "cae";
- Шаблон наименования: "{brand} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nitro N20-123");
- Поля с кол-вами (через запятую): "rest_msk,rest_spb";
- Поля с ценами (через запятую): "price_msk,price_spb";
В файлах некоторых поставщиков могут использоваться атрибуты XML-узлов.
Например, в данном файле артикул товара указан в атрибуте узла товара, а не отдельным подузлом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <data> <tires cae="003309"> <brand>Nokian</brand> <size>R19</size> <model>AH213-19</model> <rest_msk>5</rest_mkrs> <rest_spb>2</rest_sk2> <price_msk>3650</rest_sk3> <price_spb>3685</rest_sk4> </tires> <tires cae="1014138"> <brand>Nokian</brand> <size>R20</size> <model>AH213-20</model> <rest_msk>5</rest_mkrs> <rest_spb>более 40</rest_sk2> <price_msk>4120</rest_sk3> <price_spb>4120</rest_sk4> </tires> ... <rims cae="WHS152714"> <brand>Nitro</brand> <model>N20-123</model> <rest_msk>12</rest_mkrs> <rest_spb>2</rest_sk2> <price_msk>2370</rest_sk3> <price_spb>2370</rest_sk4> </rims> <rims cae="WHS152672"> <brand>Nitro</brand> <model>N20-124</model> <rest_msk>15</rest_mkrs> <rest_spb>7</rest_sk2> <price_msk>3580</rest_sk3> <price_spb>3600</rest_sk4> </rims> ... </data>
В этом случае поле "Поле артикула" нужно заполнить так: "@cae" (символ "@" указывает на то, что это атрибут узла, а не отдельный узел).
Пример настройки для JSON-файла
Допустим, что поставщик предоставляет ссылку на JSON-файл с ценами и остатками: https://pro.4tochki.ru/export_data/rest_other.json
Если открыть эту ссылку в браузере, то увидим следуюшее содержимое файла:
{ "tires": [ { "cae": "003309", "brand": "Nokian", "size": "R19", "model": "AH213-19", "rest_msk": 5, "rest_spb": 2, "price_msk": 3650, "price_spb": 3685 }, { "cae": "1014138", "brand": "Nokian", "size": "R20", "model": "AH213-20", "rest_msk": 5, "rest_spb": "более 40", "price_msk": 4120, "price_spb": 4120 }, ... ], "rims": [ { "cae": "WHS152714", "brand": "Nitro", "model": "N20-123", "rest_msk": 12, "rest_spb": 2, "price_msk": 2370, "price_spb": 2370 }, { "cae": "WHS152672", "brand": "Nitro", "model": "N20-124", "rest_msk": 15, "rest_spb": 7, "price_msk": 3580, "price_spb": 3600 }, ... ] }
В данном случае у поставщика разные узлы для разных типов товаров: tires - для шин, rims - для дисков.
Соответственно, необходимо создать две записи в табличной части "Настройки для обновления товаров":
Строка 1:
- URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.json";
- Узел товара: "tires";
- Поле артикула: "cae";
- Шаблон наименования: "{brand} {size} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nokian R19 AH213-19");
- Поля с кол-вами (через запятую): "rest_msk,rest_spb";
- Поля с ценами (через запятую): "price_msk,price_spb";
Строка 2:
- URL для загрузки файла: "https://pro.4tochki.ru/export_data/rest_other.json";
- Узел товара: "rims";
- Поле артикула: "cae";
- Шаблон наименования: "{brand} {model}" (то есть наименования для поиска будут принимать следующий вид: "Nitro N20-123");
- Поля с кол-вами (через запятую): "rest_msk,rest_spb";
- Поля с ценами (через запятую): "price_msk,price_spb";
Контроль результатов загрузки данных
После сохранения настройки автоматически создается задача, статус выполнения которой можно увидеть в отчете "Отчеты / Запланированные задачи".
В результатах задачи отображается общее количество обновленных цен/остатков, а также общее количество пропущенных товаров.
Пропущенные товары - это узлы в файле, для которых не было найдено соответствующих товаров в системе (ни по артикулу поставщика, ни по шаблону наименования).
Кроме того, есть возможность сформировать отчет по пропущенным товарам (например, для того, чтобы занести в систему новые товары поставщика).