Работа с импортом (ч.2)

В прошлой статье по работе с импортом я разбирал типовой вариант импорта товаров, когда у товара одна цена, нет сложных зависимостей, настройки импорта и т.п.. Во второй части статьи я разберу более сложные варианты импорта, обновление информации через импорт/экспорт и другие полезные вещи, не освещённые в первой части статьи.

Важное замечание: все материалы и описания данной статьи базируются на интерфейсе версии 7.0, поэтому Вы можете заметить различия в самом интерфейсе, а также в настройках по сравнению с интерфейсом версии 6.0.Х.Х.

Настройки файла описания импорта

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

Включение остатков/количества

Настройки описания файла импорта доступны по следующему пути:

настройки описания импорта

Для удобства работы в настройках я включаю следующие опции:

важные настройки

  1. Первая строка в файле импорта/экспорта будет содержать название полей.
  2. Данные после импорта будут сразу опубликованы (появятся на сайте).
  3. Импорт и экспорт я буду производить в отдельную тестовую категорию.

Если Ваш файл или результат отличается от представленного в статье - проверьте эти настройки.

Товары со связанными данными

Сначала скажу пару слов про характеристики. Они могут быть доступны при заказе и при этом ещё и влиять на цену. Покажу как это выглядит на примере тестового товара. Так это выглядит на сайте:

доп.характеристики

А так это выглядит в админ-панели. Слева - характеристика, справа - товар с этой характеристикой. Возможны различные варианты использования характеристик.

доп.характеристики

Если создаём характеристику с типом "Выпадающий список", то можно для товара выбрать одно из внесённых значений в админ-панели. Его и увидит пользователь на сайте. [1]

Можно указать тип "Список с выбором нескольких значений". При этом можно будет выбрать несколько значений одновременно. Пользователь увидит на сайте все выбранные. [2]

А если отметить галку "доступен к выбору при заказе" вкупе с типом "Список с выбором нескольких значений", то со стороны админ-панели всё то же самое, но выбирать из указанного уже может пользователь. [2]+[3]

И последний вариант - с галкой "Влияет на цену". Тут в админ-панели нужно указать для каждого варианта характеристики цену и изображение, если оно имеется. Пользователь на сайте будет выбирать характеристику и при этом будет изменяться цена на товар и его изображение, если оно было указано. [2]+[3]

Последний вариант характеристик с влиянием на цену указывается при импорте не как доп.характеристика, а в поле "Цена". На нём я заострю внимание ниже.

В статье рассматривается импорт товаров с разным количеством на складе, разными ценами, зависимыми характеристиками с влиянием на цену, имеющими изображения характеристик. Поэтому создам такую характеристику конкретно для тестовой категории с отметкой "доступен к выбору при заказе". Эта настройка позволяет характеристике влиять на цену:

характеристика

Также создам в категории товар и заполню в нём все вышеуказанные параметры, которые буду экспортировать и импортировать в дальнейшем:

тестовый товар

В результате получаем товар с двумя вариантами цвета с разными ценами, скидками (по старой цене), в разных валютах и с разным количеством остатков на складе. Теперь имеем сложные данные и можем переходить к работе с ними.

Описывать создание и настройку полноценного описания файла импорта/экспорта и его полей я не буду, т.к. уже уделил этому время в предыдущей части статьи. Тут разберём создание краткого описания для решения конкретных узкоспециализированных задач.

Обновление цен через импорт-экспорт в ручном режиме

Для того, чтобы обновить цены для уже имеющихся товаров на сайте, достаточно создать описание файла импорта всего с двумя полями - "ID" и полем "Цена". В моём случае имеются характеристики с прикреплёнными изображениями, влияющие на цену, поэтому я добавлю также третье поле "Изображения", чтобы иметь возможность добавлять новые варианты (расцветки) товара. Ниже я покажу как это делать.

Описаине файла импорта

Создаём новое описание (Тестовый ID4) и добавляем туда поля. Идентификатор с параметром "ID на сайте", поскольку товары уже загружены на сайт и им присвоен ID, с которым я и буду работать.

Поле ID

Далее создаём поле "Цена" и указываем в нём все необходимые настройки, имеющиеся у товара:

Поле цена

  1. Тип поля (Цена)
  2. Разделитель (символ, разделяющий параметры цен в строке - param1&param2&...)
  3. Определение параметров "По названию" (проще ориентироваться в файле).
  4. Количество каждой позиции товара (в рассматриваемом случае - кол-во каждого цвета).
  5. Указана старая цена (цена до скидки).
  6. Использование разных валют у товара.
  7. Определение валют "Название валюты" (проще ориентироваться в файле).
  8. В файле будут указаны изображения для характеристик, влияющих на цену.
  9. Поле нужно для кратного увеличения цен в процентах при импорте.
  10. Категория товара (в моём случае "Тестовая").

Важно понимать, что в строке отмеченные параметры будут следовать слева направо друг за другом, разделяясь символом, указанным в настойках (в данном случае символ &). Пропуск хотя бы одного из них в любом товаре приведёт к смещению остальных параметров, что может привести к ошибке.

Поэтому отсутствующие параметры должны быть отделены в файле импорта символом разделителем &&, вот так:

param1&&param3&...

Второй параметр пропущен, но место под него зарезервировано. Просто не указывать параметр не получится. В табличном редакторе об этом помнить не нужно, там всё будет указано автоматически. А вот при работе в текстовом редакторе - нужно обязательно.

Поле №9 можно использовать для формирования наценки. Например, вы выгрузили товары с ценами от поставщика и вам нужна своя наценка в размере 20%. Указываете в этом поле множитель 1.2 (100% + 20%) и при импорте цена будет скорректирована, в т.ч. "Старая цена", если она есть. Данное поле не фигурирует в файле импорта и используется в процессе импорта как множитель.

Далее создаём поле "Изображение". Если вам понадобится добавить к товару новый цвет, т.е. дополнить характеристику "Цвет" новым значением и новым изображением, то это изображение нужно будет загружать через поле "Изображения", а также указывать его в параметрах товара.

Для версии DIAFAN.CMS 6.0.13.3 в процессе импорта при обработке строки с данными товара фото будет сначала загружено, а затем прикреплено к характеристике товара, к которому привязано. В противном случае процесс импорта завершится с ошибкой.

Для версии DIAFAN.CMS 7.Х изображение, принадлежащее характеристике и указанное в поле "Цена", загрузится автоматически и само будет прикреплено к товару. Указывать его отдельно в поле "Изображение" уже не требуется.

Итого, для обновления цен получаем такое описание файла импорта:

обновление цен

Если Вы сами регулируете цены в интернет-магазине, то обновлять их нужно через процедуру экспорта-импорта. Сначала файл выгружается во вкладке "Экспорт":

экспорт

Затем в полученном CSV-файле цены правятся вручную, либо они повышаются глобально с помощью поля №9. В этом случае файл править не надо. Давайте посмотрим на содержимое файла:

ID;Цена;Фото
90;32.00&12&37&Euro&1.jpg&Цвет=красный|3000.00&10&3500&0&2.jpg&Цвет=синий;1.jpg|2.jpg|3.jpg

Первая строка - название полей (3 поля). Во второй строке эти 3 поля разделены между собой точкой с запятой. Во втором поле ("Цена") параметры разделены символом амперсанда &. Слева направо:

Цена & Кол-во & Старая цена & Валюта & Фото характеристики & Характеристика

Обратите внимание, что, не смотря на настройки, основная валюта указывается как ноль (0). Все прочие валюты указываются согласно настройкам, в данном случае в виде названия (Euro).

Затем файл через вкладку "Импорт" загружается обратно на сайт. В настройках на первом шаге указывается кодировка файл (cp1251 или utf8), на втором шаге важно не забыть указать описание файла импорта, которое используем.

настройки импорта

После загрузки файла все цены на товары, содержащиеся в файле импорта, будут обновлены. При этом сам файл получается очень компактный.

Также стоит обратить внимание на следующие настройки импорта:

добавление записей

Если отметить галку "Только обновить записи", то будут обновлены только те записи, которые уже присутствуют на сайте. Прочие записи, содержащиеся в файле, будут проигнорированы.

Если отметить галку "Добавить только новые записи", то будут обновлены только те записи, которые на сайте отсутствуют. Имеющиеся записи будут проигнорированы.

Если же отметить обе галки или оставить обе галки не отмеченными, то будут добавлены/обновлены все записи, присутствующие в файле импорта.

Частичное обновление каталога

Пару примеров как эти настройки можно использовать.

Пример 1: допустим, есть поставщик, предоставляющий выгрузку пяти различных производителей. Вы работаете только с одним из пяти. Отдельно выгружать данные возможности нет.

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

Пример 2:

Вы выгружаете полный каталог поставщика и настраиваете его под себя - меняете часть описаний, добавляете варианты товаров и комплектов от сторонних поставщиков. Эти данные дальше менять не нужно.

У поставщика со временем появляются в выгрузке новые позиции/производители. И отмечая галку "Добавить только новые записи" можно брать из файла поставщика только то, чего у вас на сайте ещё не представлено.

Далее можно также дорабатывать информацию и изолировать её от дальнейших изменений при синхронизации с файлом поставщика.

Обновление цен через импорт-экспорт посредством API

Выше я рассмотрел процесс обновления цен вручную с использованием выгрузки, правки и загрузки файла. Однако, это не всегда приемлемо и удобно. DIAFAN.CMS позволяет проводить данные манипуляции и удалённо с использованием API.

В настройках есть возможность указать для этого параметры:

удалённый запуск импорта

  • Логин и пароль - данные аутентификации учётной записи на сайте, от имени которой будет запускаться импорт.

  • Ключ - любое слово/словосочетание на латинице. Позволяет отсечь возможные автоматические обращения без ключа по типовому URL и т.п..

  • Адрес файла импорта - загружаемый файл с данными, которые требуется обновить удалённо или по расписанию.

  • URL-адрес файла импорта - загружаемый со стороннего ресурса файл с данными, которые требуется обновить удалённо или по расписанию.

URL в итоге имеет вид, если используется локальный файл:

http://site.ru/service/express/client/?key=PRICE_UPDATE&cat=4

и такой, если используется удалённый файл:

http://site.ru/service/express/client/?key=PRICE_UPDATE&cat=4&url=URL_файла_с_другого_сайта

cat=4 - это идентификатор (ID) описания файла импорта. При верных введённых учётных данных получим ответ success

удалённое обновление

В противном случае - "ошибка авторизации". То же будет при отсутствии ключа или неверном ключе.

ошибка авторизации

Вышеуказанную ссылку можно поставить на Cron и обновлять по расписанию. Источником файла может быть любой удалённый ресурс, выгрузку которого вы используете для обновления каталога.

А подготовив заранее разные описания импорта/экспорта для разных случаев, можно в широких пределах настроить синхронизацию, меняя в URL идентификатор описания.

Источник данных (загружаемый файл) можно указать один локально (лежит у Вас на сайте) и любое количество файлов с сайтом поставщиков, дропшипов и т.п.. Главное, чтобы поставщик отдавал сам файл при запросе по ссылке.

Изменение параметров товара, влияющих на цену

Как было описано выше, для добавления новой характеристики с изображением нужно указать путь к изображению в параметрах поля "Цена" и в поле "Изображения", если версия 6.0.13.3.

Допустим, есть выгрузка с одним товаром и туда требуется добавить вариант цвета и фото.

ID;Цена;Фото
90;32.00&12&37&Euro&1.jpg&Цвет=красный;http://test:81/1.jpg

После редактирования файл будет выглядеть следующим образом:

ID;Цена;Фото
90;32.00&12&37&Euro&1.jpg&Цвет=красный|3000.00&10&3500&0&http://test:81/2.jpg&Цвет=синий;1.jpg|http://test:81/2.jpg

При обработке этого файла у характеристики "Цвет" создастся новый вариант "синий" с прикреплённым фото 2.jpg, который будет иметь своё количество и свои цены.

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

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

ID;Цена;Фото
90;32.00&12&37&Euro&1.jpg&Цвет=красный;1.jpg

Комментарии
28 января 2021 г.
А если нету строчки "только обновить записи". Что делать?
13 февраля 2021 г.
А что если у товара есть характеристика влияющая на цену и так же есть характеристика с выбором нескольких значений (доступная к выбору при заказе)

- Что будет в этом случаи?
18 февраля 2021 г.
Цитата
А что если у товара есть характеристика влияющая на цену и так же есть характеристика с выбором нескольких значений (доступная к выбору при заказе)
Попробую сделать несколько сложных вариантов, проверю что и как, дополню статью.
21 февраля 2021 г.
Dmitry, есть проблема с галкой "влияет на цену при импорте". Отписал в багтрек.
21 февраля 2021 г.
Любимов Павел, я об этом говорил ещё год назад когда в обновлении цен пяти сайтов где по 3000 а где и по 12000 товаров
мне пришлось в ручную делать и я об этом писал везде и каждый раз говорили в поддержке и на сайте что всё отлично - типо сам идиот и даже удаляля из ошибок мои обращения и Это Явилось в итоге причиной того , что Забанили (Я НЕ УДОБНЫЙ ПОЛЬЗОВАТЕЛЬ ФОРУМА и ТРУБЛЮ ВО ВСЕ ТРУБЫ О СЕРЬЁЗНОЙ ОШИБКЕ) , за то что Называл всех кто ТУПИТ в Диафан - Своими ИМЕНАМИ....
21 февраля 2021 г.
СПасибо за то что ЗАПОСТИЛИ - Та часть из поддерживаемых Мной сайтов пока ещё повисит на Диафан - если сделают а часть сайтов уже начала миграцию и мигрировала на другие ЦМС с приличными ТИЦ которые делали рейтинг для ДИАФАН в ЦмсМагазин
24 февраля 2021 г.
Цитата
удаляля из ошибок мои обращения и Это Явилось в итоге причиной того , что Забанили

Dmitry, мы удаляли мат, нецензурную лексику, крики, КАПСЛОК и подобное. Делали кучу замечаний и предупреждений. Вы продолжали лить брань. За это вас и забанили.
28 февраля 2021 г.
Виталий, Просить восстановить хронологию не буду.
- Ставлю точку в этом вопросе , кто в теме - тот знает о чем речь...

PS: Спасибо за то , что это не удалили предложение
вот это: https://user.diafan.ru/wishlist/show3775/
, но зачем ставить РЕАЛИЗОВАНО, если реально совсем всё не так - просто изменили надпись=
ДО МАКСИМАЛЬНОЙ СКИДКИ "50%" ОСТАЛОСЬ СТОЛЬКО ТО РУБ
на
ДЛЯ СКИДКИ В (сумма руб) ОСТАЛОСЬ 38 000 руб.

и так же минуется плавное подведение к сл. скидке...


https://disk.yandex.ru/i/06QBHGa5d4yWVw

Логичнее написать у предложения - ОТКЛОНЕНО оно же Реально не РЕАЛИЗОВАНО....?
Верно же Виталий?
28 февраля 2021 г.
Цитата
Логичнее написать у предложения - ОТКЛОНЕНО оно же Реально не РЕАЛИЗОВАНО....?
Верно же Виталий?

Dmitry, я не видел это предложение и не участвовал в его обсуждении. Я не ставил ему "реализовано". Удалять я его не буду, но комментарии с Вашими матюками удалю безусловно. Повторюсь в десятый-двадцатый-сотый раз! Мы не общаемся, не реагируем и не видим сообщения "на херах"! Хоть истину семипядную во лбу напишите, но если она в формате мата, стеба, говна, негатива, мы даже читать не станем эту грязь, не говоря про вникать и тем более что-то исправлять. Сразу крест. Безусловно. Однозначно. Предупреждение автору, а при повторе бан.
Так что, Дмитрий, или учитесь общаться интеллигентно, или сразу идите кройте своими херами другую цмс. Посмею предположить, Вам неважно кого мазать говном и по какому поводу.
И да, всё вышесказанное Вами тут тоже не к месту, отношения к блогу, статье и импорту не имеет.
28 февраля 2021 г.
Виталий,
Приму выше описанное как:

Цитата
Спасибо Дмитрий, Вы в очередной раз умудрились НАХОДЯСЬ в статусе БАНА - указать на принципиально нами не замечаемые недостатки после Очередного обновления , право устранять в той или иной форме (1 - Исправить логику кода, 2 - просто изменить статус предложения) = мы ставим за собой...

А Вам Дмитрий - мы попробуем усложнить поиск недочётов - даже в обсуждении раздела БЛОГИ


Павел Любимов - Прошу извинения... Это Ласт Коммент

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.