Импорт

Загрузка объектов в систему

Давайте приведем пример, как можно загрузить данные в систему.

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

Пример файла.

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

К tFileInputExcel, в котором лежит наш excel файл присоединяем tJavaRow, в котором подготовим данные для системы. Для этого необходимо заполнить 3 обязательных компонента и 1 дополнительный:

  • identifier - Идентификатор продукта (должен быть на английском языке и не должен содержать пробелы)
  • typeIdentifier - Идентификатор типа. Будет создан объект этого типа.
  • parentIdentifier - Идентификатор родительского объекта. Новый объект будет создан под этим родителем, либо будет создан объект первого уровня если эта колонка не задана.
  • name_<идентификатор языка> - Это название объекта. Вы можете иметь несколько колонок таких как, name_ru, name_en и т.д для разных языков.

Заполняем tJavaRow данными из excel файла, а недостающие элементы берем из системы (такие как идентификатор родителя и типа):

Теперь, для того, чтобы выгрузить то, что мы написали в tJavaRow, используем компонент PIMOutput.

Чтобы данные полетели на конкретный сервер в контексте PIMOutput пишем необходимые данные:

  • server - url, путь к вашему серверу (каждой компании выдается свой путь);
  • user - username, имя пользователя, под которым будет производиться запись;
  • password -password, пароль пользователя.

Переходим к вкладке компонента. Необходимо заполнить все ячейки для выгрузки конкретно наших данных.

Данные url, user и password берем из контекста.

entity - Куда будут записываться данные. Существуют различные опции:

  • Item - объект;
  • Item Relation - зависимости объекта;
  • Type - тип, Attribute - атрибут;
  • Atribute Group - группа атрибутов;
  • Relation - зависимость;
  • User - пользователь;
  • Role - Роль;
  • List of values - список значений.

В нашем job мы будем использовать Item, тк. выгружаем объекты.

Import mode - То как будут записываться новые данные. Всего 3 варианта:

  • CREATE_UPDATE - новый объект будет создаваться, если его нет, иначе данные уже существующего обновятся;
  • CREATE_ONLY - новый объект будет только создаваться, если данный объект уже имеется, произойдет ошибка;
  • UPDATE_ONLY - новый объект будет только обновлятся, если данный объект еще не существует, произойдет ошибка.

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

В результате запуска этой схемы в системе появятся 2 папки из нашего excel файла на уровне 1 (level1):

Загрузка второго уровня

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

Для того, чтобы папки 2 уровня расположились внутри 1, мы качестве parentIdentifier(родителя) берем первый уровень папок. typeIdentifier берем из системы (level2), identifier и name_ru берем также из excel файла.

В результате, папки 2 уровня(level2) расположились внутри 1(level1), как мы и планировали.

Загрузка третьего уровня

Для загрузки 3 уровня папок действуем также как для загрузки 2. И в качестве parentIdentifier берем уже второй уровень папок.

В итоге, на данном этапе мы имеем 3 уровня папок в системе. Т.к. наши товары и их атрибуты лежат на 3 уровне, мы можем приступить к их загрузке.

Загрузка товаров

Чтобы загрузить товары, мы все также создаем аналогичную схему и работать будем снова только в tJavaRow.

В качестве parentIdentifier(родителя), по уже понятной схеме, берем третий уровень папок; typeIdentifier в этот раз не какой-либо level, а product; identifier и name_ru берем также из excel файла.

Продукты загружены.

Но продукт имеет только название и идентификатор. И чтобы внести в него какую-либо информацию (цена, количество и тд) необходимо загрузить его атрибуты.

Загрузка атрибутов товара

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

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

Для начала в edit schema в tJavaRow(Output) вносим identifier всех атрибутов из системы в данном виде - attr_identifier. В графе тип ставим соответственно из системы.

Для того, чтобы атрибуты появились в нужном формате(int, string и тд.) необходимо все output_row преобразовать в нужный им формат. Если изначально формат стоит string, то его можно не изменять:

Снова выгружаем товары в систему, но теперь они полетят вместе с атрибутами.

Загрузка файлов в систему

Давайте приведем пример, как можно загрузить файлы в систему.

Для примера возьмем данный файл excel:

Пример файла.

Создадим схему для загрузки:

Она состоит из tFileInput, tJavaRow, tLogRow и компонента PIMAssetUpload, с помощью которого и будут загружаться файлы.

Во входных и выходных данных лежат 2 колонки:

  • id - id созданного в системе типа, в который можно положить файл
  • file - путь к файлу

Если файлы лежат в разных папках, находящихся в одной, можно в контексте прописать начало пути файлов:

ЧТобы данные полетели в систему, заполняем tJavaRow:

В результате работы схемы, файлы из excel летят на сервер по их id

Загрузка атрибутов из другого формата

Приведем пример другой загрузки атрибутов данных.

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

Пример файла.

Чтобы быстро выгрузить все атрибуты, мы построим данную схему:

Она состоит из tFileInput, tJavaRow, tLogRow и компонента PIMValueOutput, с помощью которого мы загрузим атрибуты.

В качестве выходных данных мы будем использовать 4 колонки:

  • identifier - идентификатор продукта, которому будут записываться атрибуты.

  • attributeIdentifier - идентификатор атрибута.

  • attributeValue - значение, которое мы хотим записать в атрибут.

  • attributeType - тип атрибута. Изначально берем Integer, а в tJavaRow мы будем уточнять тип.

Заполняем первые три пункта из файла excel.

PIMValueOutput принимает 4 типа в следующем виде:

  • Text: 1,
  • Boolean: 2,
  • Integer: 3,
  • Float: 4.

Чтобы система приняла атрибуты в необходимом нам типе, мы пишем следующий код в tJavaRow:

В результате работы схемы, все атрибуты будут загружены в нужном типе в систему.