IT рекрутинг

Супер-импорт: наполняем сайт с помощью одной таблицы + файл импорта

/users_files/wintramedia/super-import-blog_2_960-632.jpg

На протяжении 14 лет наша команда разрабатывает сайты, и мы как никто другой знаем, что самый трудоемкий этап — это наполнение. Сбор материалов, фотосессии, создание описаний товаров, внесение характеристик и прочее, прочее, прочее. Но собрать контент — это полдела. Дальше его необходимо как-то добавить на сайт.

Мы не рассматриваем в этой статье случаи, когда товаров 100 штук или даже 200–300 — с таким объемом можно справиться за 2–3 дня даже если руками поштучно наполнять. Также мы не рассматриваем случаи, когда есть система учета: СБИС, Мой склад, 1С, обычная CRM или любая другая. Мы говорим о компаниях, которым требуется загрузить на сайт большой объем информации и по внутренним причинам они не используют никакой единой базы данных. И поверьте нам — таких много, очень много. Причины такого выбора могут быть абсолютно разные: новая ниша, новый бизнес, экспериментальный проект, временные ограничения и многое другое.

В рассматриваемой нами конфигурации самым простым и адекватным решением стало использование простой электронной таблицы (с небольшими модификациями).

Так в целом работает магия импорта

Причины использования Excel

  • Электронные таблицы оптимально подходят для выполнения такой работы, как структурирование и обработка данных для их последующего использовании — это то, ради чего и придумали Excel и аналогичные программы.
  • Возможна работа со справочниками (подробно опишем далее). Как в 1С, например: при добавлении номенклатуры вы заполняете поля в карточке товара, выбирая значения из списка заранее предусмотренных вариантов. Не нужно каждый раз вводить одно и то же значение, а это максимально ускоряет внесение данных и, самое главное, минимизирует влияние человеческого фактора.
  • Таблицы в формате .XLS и аналогичных занимают мало дискового пространства и открываются на всех компьютерах, в том числе бесплатными программами типа Open Office.
  • В таблицах легко автоматизировать работу с данными, используя вычисления, подстановки и прочее.
  • Интерфейс и основные принципы редактирования таблиц знакомы подавляющему большинству пользователей, поэтому для наполнения каталога не требуется выделение «специально обученного человека».
  • И конечно же, таблицы позволяют выполнять импорт товаров на сайт «1С-Битрикс» одним кликом.

Как мы работаем с таблицами

С момента осознания, что Excel — лучший способ справиться с описанной задачей по наполнению сайта с привлечением минимум сотрудников, мы стали думать об оптимизации использования электронных таблиц. Ведь хотя товары из таблицы и импортируются одним кликом, ее все равно нужно наполнять руками, а это — время.

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

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

Google Таблицы

Начнем с уточнения: мы используем не ставший классическим Excel, а Google Таблицы. Причем работаем именно с онлайн версией Google Sheets. Дело в том, что процесс наполнения не только трудоемкий, но и зачастую командный. В нем могут принимать участие сразу несколько наших специалистов, нередко необходимо запросить проверку данных у сотрудников заказчика, а иногда его команда сама принимает участие в наполнении. И вот если каждый будет работать со своей версией таблицы, да еще и окажется, что частично дома, частично — на работе, частично — на компьютере жены, то собрать все правки воедино — задача максимально непростая. И в большинстве случаев такая «склейка» всегда сопровождается ошибками.

/users_files/wintramedia/1 Таблица-импорта-общее.jpg

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

Кроме того, онлайн-размещение документа дает возможность автоматизации его загрузки. Таблицу можно открыть для общего доступа по постоянной ссылке и настроить cron-планировщик на обработку файла, размещенного по ней. Никакой тебе загрузки на сервер последней (самой последней, крайней, с «!!!») копии.

Модуль «Импорт из Excel»

Еще одно важное уточнение: таблица — это лишь часть системы импорта. Ее необходимо обработать и загрузить на сайт. Для этого последние лет шесть мы используем решение «Импорт из Excel» от команды Esolutions. На наш взгляд, это самая производительная, удобная и решающая абсолютно любые задачи система с привлекательной ценой и супер-командой поддержки. Не будем расхваливать ее далее. Лишь отметим, что мы работаем только с этим модулем, и везде далее по тексту использование нашего файла импорта подразумевается в связке с ним.

Справочники

Мы уже упомянули ранее об удобстве применения справочников для повторяющихся элементов. Например, при наполнении каталога нам необходимо вводить категорию и подкатегорию, бренд, цвет, какие-то значения характеристик и так далее.

/users_files/wintramedia/3 Применение-справочника.jpg

Каждый раз вводить такие названия вручную отнимает кучу времени, выбрать из справочника намного быстрее. Плюс немаловажный момент: при вводе вручную возможны ошибки. Например, зачастую бренды пишутся на иностранном языке и, указав в нескольких местах наименование производителя по-разному, например, Bosch и bosch или даже Bosh, на сайте при импорте мы получим трех отдельных производителей.

/users_files/wintramedia/2 Справочник.jpg

Множественные значения

При использовании справочников нередко возникает необходимость выбирать для одного товара сразу нескольких позиций из списка. Например, чтобы перечислить области применения продукта или входящие в состав вещества. Но штатно ни Excel, ни Google Таблицы не умеют работать с множественными значениями, что очень сильно усложняет жизнь и делает, по сути, применение справочников бессмысленным, когда нужны перечисления параметров. Решить эту проблему можно путем самостоятельного добавления средств автоматизации. В Excel это реализуется с помощью макросов, а в Google Workspace — расширением Apps Script.

/users_files/wintramedia/5 Множественный выбор 5.jpg

Apps Script — это платформа на основе JavaScript, созданная Google для разработки легких приложений для Google Workspace. Чтобы сделать нужное нам дополнение, переходим через пункт панели меню Google Таблиц «Расширение» к редактированию App Script и создаем два файла: multi-select.gs и dialog.html, используя код, который есть в открытом доступе.

Для удобства работы мы внесли правки в код для своих таблиц: заменили название скрипта и надписи на кнопках на русскоязычные, а разделитель значений — на точку с запятой, необходимую для нормального функционирования модуля импорта.

Если расширение добавлено правильно, после обновления страницы с Google-таблицей появится новый раздел меню «Scripts», а в нем — пункт «Множественный выбор» (в исходном коде — «Multi-select for this cell...»). При клике по нему скрипт запускается (в первый раз потребуется пройти авторизацию), и, если выделена ячейка с подключенным справочником, справа появится окошко со списком доступных значений.

/users_files/wintramedia/4 Множественный выбор 4.jpg

Дальше все просто: выделяем чек-боксы у нужных пунктов и нажимаем кнопки:

  • «Запись» (Set) — ячейка заполняется выбранными данными. Если ячейка не пустая, находящиеся в ней записи затираются.
  • «Добавить» (Update)— отмеченные значения добавляются к тем, что есть в ячейке. Причем в скрипте предусмотрена проверка данных: повторно одно и то же значение не записывается.
  • «Сброс» (Reset) — снимается отметка со всех чек-боксов.
  • «Нов. список» (Refresh validation) — перезагружается список значений, доступных для выделенной ячейки. Обычно используется при переходе к диапазону с другим списком возможных значений.

Важно! Для записи множественных значений в расширенных настройках Правила проверки данных для ячеек должно быть выбрано «Показывать предупреждение» для неверных значений.

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

Структура таблицы

Таблица имеет строгий порядок столбцов, для каждого из которых при импорте задается соответствие определенного параметра карточки товара. Дабы не переделывать ее бесконечно при необходимости добавить что-то новое, мы указываем в начале наиболее востребованные данные, используемые в 99% случаев, такие как:

  • id;
  • категория;
  • описание;
  • производитель;
  • цена.

Первые 3–5 столбцов закрепляем, чтобы при редактировании далеко отстоящих о начала листа ячеек не путаться в строках. Дополнительные свойства, например, характеристики товаров, добавляем в последние столбцы по мере необходимости.

/users_files/wintramedia/6 Структура.jpg

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

Инструкции

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

/users_files/wintramedia/7 Инструкции.jpg

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

Торговые предложения

Этот пункт может быть очевиден не всем, но кто сталкивался с этим — оценит. Нередко у товара есть несколько вариантов исполнения, самый простой пример — размеры и цвета у одежды или обуви. С одной стороны, все вариации одного товара имеют немало общего: базовое наименование, описание, основные параметры. Поэтому логично собирать их в одной карточке. Но, с другой стороны, каждая такая позиция, называемое в «1С-Битрикс» торговым предложением —самостоятельная учетная единица со своей ценой, количеством остатков и рядом других уникальных параметров. Работа с торговыми предложениями — это отдельная история, и при наполнении таблицы возникает целая куча нюансов.

Чтобы максимально упростить работу с предложениями при импорте, прежде всего присваиваем каждому товару id. Обычно оно содержит несколько букв и порядковый номер, например, ex_1. При копировании на новые строки в Google Таблицах (как и в Excel) число автоматически увеличивается, поэтому мы легко получаем уникальные идентификаторы: ex_2, ex_3 и так далее

Не путайте идентификатор с артикулом или кодом производителя! Речь идет именно о внутреннем id, создаваемом для импорта товаров на сайт.

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

/users_files/wintramedia/8-Торговые-предложения.jpg

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

Во-первых, мы укажем для модуля импорта наличие товарных предложения явно: в столбце «Товар имеет торговые предложения?» выберем из справочника значение «Да». Во-вторых, создадим в таблице отдельный лист «Торговые предложения» и там пропишем все варианты товаров, указав свойства, отличающиеся у разных предложений. В нашем примере это будут:

  • признак наличия: «В наличии» или «Под заказ»;
  • наименование позиции (в нашем случае оно отличается у разных модификаций);
  • свойство для отбора предложения — «номинальная мощность»;
  • цена.

В случае работы с количественным учетом необходимо также вводить остаток на складе.

/users_files/wintramedia/9-Торговые-предложения.jpg

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

Для этого используется id товара. Причем у каждого торгового предложения тоже есть свой идентификатор. Он формируется путем добавления через дефис порядкового номера к id товара-родителя. Получается так: {id_товара}-1, {id_товара}-2 и так далее. В нашем примере для товара с id ex_1 мы имеем предложения ex_1-1, ex_1-2, ex_1-3.

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

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

Это становится проблемой, когда сайт создается на «1С-Битрикс» в редакции «Старт». Именно такая используется и в одном из наших последних проектов, который в основном демонстрируется в этой статье. Лицензия «Старт» — самая простая и не имеет полноценного торгового каталога и самих предложений. Но ребята из «Аспро» (решения которых мы используем для создания наших сайтов) дают возможность обойти эту проблему, добавляя в своих платформах, пусть и в усеченном виде, функционал интернет-магазина, работающий даже в простых редакциях.

Благодаря этому мы можем добавлять торговые предложения к карточкам каталога. Но у основного товара также должна быть цена, хотя в реальности ее не существует.

Поэтому мы настраиваем модуль импорта, чтобы он:

  1. Перебрал цены всех торговых предложений рассматриваемого товара.
  2. Нашел минимальное значение цены.
  3. Записал это значение в качестве стоимости основного товара.

В результате в каталоге карточка товара с торговыми предложениями отображается нормально, и в качестве стоимости значится реально существующая стоимость — {минимальная цена предложения этого товара}.

/users_files/wintramedia/10-Торговые-предложения.jpg

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

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

/users_files/wintramedia/11-Торговые-предложения.jpg

Как это сделать? Перекопировать мощности всех предложений вручную? «Нет, пусть будет автоматически», — скажем мы, настроим модуль импорта, и он, обработав предложения, сам соберет все варианты мощностей и запишет их в свойство основного товара как множественное значение.

Изображения

Ох уж эта работа с картинками. Сколько зубов сломано об это. Просто прописать в файле импорта какую картинку необходимо грузить для товара? А если их несколько?

Да, раньше мы вписывали путь до файла с именем самой картинки, затем закидывали по FTP картинки в нужную папку, и модуль искал в файловой системе сайта названия, вписанные в таблицу, и добавлял изображения к товарам. Это очень долго, кропотливо и может сопровождаться целой кучей ошибок. Но теперь в файле импорта мы вообще не прописываем картинки — модуль сам их ищет по заданным условиям и подгружает в карточку товара.

Задачу мы решили в несколько шагов. Во-первых, модуль «Импорт из Excel» имеет замечательный функционал мультизагрузки картинок. Так мы избавляем клиента (и себя) от необходимости загрузки по FTP-соединению, подразумевающему использование специальной программы, которую еще нужно правильно настроить и освоить.

Достаточно просто зайти в админку сайта, выбрать на компьютере папку с фото, и модуль загрузит все изображения в заранее определенную папку, например, у нас это /upload/imgToImport/

/users_files/wintramedia/12 Загрузка фото.jpg

Вторую часть задачи — привязку картинок к нужной товарной карточке— мы решили, назначая картинке в качестве имени id товара. Тут возникают вопросы: что делать, если картинок у товара несколько или если у какой-то из них расширение не .jpg, а .png , например? А — автоматизация! Мы прописываем условие поиска изображений по маске, а если картинок несколько добавляем в имя картинки порядковый номер через дефис. Например: ex_1-1.jpg, ex_1-2.png, ex_1-3.gif и так далее. Модуль ищет в заранее заданной папке все возможные варианты, начинающиеся с нужного id и, если находит, то загружает их в соответствующую карточку товара. Причем расширение — все, что после точки — никак не учитывается.

Картинка ex_1.jpg станет детальным изображением товара (анонсная картинка при этом сгенерируется автоматически стандартным инструментом «1С -Битрикс»). А все остальные фото загрузятся в поле дополнительных изображений. Таким образом, задача при наполнении сводится просто к указанию правильного наименования картинок и загрузке их на сайт простым перетаскиванием с компьютера.

/users_files/wintramedia/13 Фото.jpg

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

Документы

В нашем случае документация к товарам представлена в виде изображений. Для их размещения было решено использовать галерею в основном описании. Как добавить картинки в нее? Все через тот же способ обработки изображений по маске. Нужно лишь по-другому назвать картинку-документ: добавить к id товара суффикс dop.

/users_files/wintramedia/14 Доп фото.jpg

Например, для товара с id «ex_1» наименования будут иметь вид ex_1_dop-1.jpg, ex_1_dop-2.jpg и так далее. И модуль по маске dop отберет эти картинки и загрузит их в фотогалерею описания.

Наименование товара

Наша практика показывает, что многие клиенты не понимают, как правильно работать с названиями товаров. Мы привыкли видеть на сайтах электроники типа citilink.ru такие названия как, например: «Кабель Apple A2561, Lightning (m) - USB Type-C (m), 1м, MFI, белый [mm0a3zm/a]».

И многие компании, видя это, называют свою номенклатуру аналогично. И в результате в базах данных клиентов, например, в «1С», мы часто видим такие названия. Но ведь это в корне неправильно: в длинных именах бывает трудно вычленить суть, с ними неудобно работать, трудно привести к однообразию. Плюс это мешает при работе с SEO.

Мы считаем, что оптимально, когда в базе данных название товара имеет вид типа BTV2-CR — коротко и ясно. Так позиция называется в таблице импорта, так же — в каталоге на сайте. Но в товарной карточке наименование превращается в «Промышленный греющий кабель Raychem BTV2-CR саморегулирующийся». Как так получается? Легко! Разложим это имя через призму формулы:

  • Промышленный греющий кабель — наименование категории;
  • Raychem — это значение свойства «бренд»;
  • BTV2-CR — собственно наименование товара;
  • саморегулирующийся — значение характеристики «Тип кабеля».

За генерацию такого имени отвечает штатный SEO модуль «1С-Битрикс», с помощью которого мы можем видоизменять наименования товаров, используя в качестве переменных любые его свойства.

/users_files/wintramedia/15 Формулы.jpg

Для раздела «Термостаты, датчики», например, прописаны формулы со своим набором свойств, отличным от используемого в «Греющих кабелях».

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

Связанные товары

Обычно в интернет-магазине в карточке товара снизу мы видим такие блоки, как «С этим товаром покупают» или «Похожие». И если в «С этим товаром покупают», скорее всего, логично отображать статичный список связанных товаров, то блок «Похожие» можно и нужно автоматизировать.

Странно видеть, когда «Похожими товарами» являются все оставшиеся позиции из категории. Интереснее, когда этот блок интерактивен. Например, как у «Авито». Просматриваем мы 3- комнатную квартиру в аренду — блок покажет нам другие 3-комнатные квартиры в аренду, да еще и по схожей цене. Так куда привлекательнее. И работу блока в «1С-Битрикс» можно полностью автоматизировать при импорте. Достаточно знать формулу:

{"CLASS_ID":"CondGroup","DATA":{"All":"AND","True":"True"},"CHILDREN":[{"CLASS_ID":"CondIBSection","DATA":{"logic":"Equal","value":"#IE_IBLOCK_SECTION_ID#"}},{"CLASS_ID":"CondIBProp:43:636","DATA":{"logic":"Equal","value":"#IP_PROP636#"}},{"CLASS_ID":"CondIBElement","DATA":{"logic":"Not","value":"#IE_ID#"}}]}

Выглядит сложно, но мы объясним суть.

Модуль в блок «Похожие» добавит позиции из того же раздела, что и просматриваемый товар (#IE_IBLOCK_SECTION_ID#), у которого тот же тип кабеля (#IP_PROP636#) и исключит из подбора текущий товар. Так в карточке мы увидим другие саморегулирующиеся кабели из категории «Промышленный греющий кабель».

/users_files/wintramedia/16 Похожие.jpg

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

Еще целая череда простых, но очень полезных моментов

Модуль импорта позволяет сохранять значение одной ячейки таблицы сразу в нескольких свойствах товара. Например, заполнив только один id, мы можем записать его на сайте сразу и как «Артикул», и как «Символьный код», и как «Внешний код».

/users_files/wintramedia/17 Импорт в одно поле.jpg

Описание для анонса можно создавать двумя способами. Если есть возможность, лучше прописывать в анонс уникальный текст — краткое, но емкое описание товара. Но если отдельных анонсов нет, мы можем использовать PHP-преобразование при импорте, и в поле анонс взять, например, первые 300 символов основного описания. И в конце к ним аккуратно добавим «...» и ссылку «подробнее».

/users_files/wintramedia/18 PHP код.jpg

Лучший способ сделать отдельные товары более заметными в каталоге — присвоить им яркие метки «Хит продаж», «Новинка», «Акция» и аналогичные. К тому же товары можно отбирать по этим меткам и выводить, например, в специальном блоке на главной или в акционном разделе.

/users_files/wintramedia/19 Лучшие предложения.jpg

Иногда товар нужно скрыть из каталога, не удаляя насовсем, например, в связи с временным прекращением поставок. Конечно, можно зайти в админку сайта, найти нужную позицию и снять отметку активности/видимости. Но с нашей таблицей импорта все проще — достаточно указать «Нет» в столбце «Показывать на сайте». А когда ячейка станет пустой — товар снова будет активен, потому что в модуле импорта прописано по умолчанию ставить «Да» в поле активности. И напомним, что все изменения в таблице переносятся на сайт автоматически благодаря cron-планировщику.

/users_files/wintramedia/20 Отметка Активности.jpg

Даже если выбор стоит только между «Нет» и {пусто} удобно использовать подстановку из справочника.

Все это — наш стандартный набор рабочих инструментов, которым мы пользуемся каждый раз, когда встает задача создать сайт с выгрузкой каталога из Excel. Максимальная автоматизация позволяет в кратчайшие сроки вносить объемную номенклатуру и в дальнейшем просто и удобно изменять ее путем редактирования самой обычной электронной таблицы.

И мы постоянно работаем над оптимизацией наших решений. Поэтому когда вы закажете в «Винтра» интернет-магазин с XLS-импортом, не исключено, что процесс выгрузки будет иметь еще больше возможностей.

Текущую версию таблицы импорта можно посмотреть и даже потыкать здесь. Будем рады узнать ваше мнение о ней или предложения по ее улучшению. А может, у вас есть в запасе более интересные инструменты для решения подобных задач?