Импорты

Редактировал(а) Татьяна Брыкова 2025/10/21 12:04

Импорт в системе

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

1724753594262-852.png

Рис. Раздел «Импорт» в системе

На форме импорта отображаются следующие поля:

  • Наименование - название файла импорта.
  • Статус. Варианты значений: «Новый», «В процессе», «Завершено успешно», «Завершено с ошибками», «Внутренняя ошибка» (технического характера).
  • Дата начала - дата и время начала импорта.
  • Дата окончания - дата и время окончания импорта.
  • Сущность - название сущности, по которой осуществляли импорт (например, товар, магазин)
  • Успешно - количество успешно импортированных записей в файле импорта.
  • Ошибок - количество не импортированных записей.
  • Итого - общее количество записей в файле импорта.
  • Ответственный - ссылка на пользователя, который осуществил импорт.

Процесс импорта и обновления данных в интерфейсе системы осуществляется 2 способами:

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

1707724794051-201.png

Рис. Кнопка «Импорт» в разделе «Карты»

       2. Через общий импорт.

1724753698449-336.pngРис. Кнопка «Создать» для импорта сущностей системы в разделе «Импорт»

Шаги для 1-го способа:

1.          Нажать на кнопку «Импорт» => «Скачать шаблон». По итогу скачивания на локальный компьютер скачивается файл шаблона. Название файла формируется как название сущности + «_Шаблон импорта» (например, «Группа_баллов_Шаблон импорта»). В файле первой строки файла шаблона отображаются названия всех полей сущности. В файле импорта должны быть заполнены значения по всем обязательным полям сущности.

2.         Заполнить файл шаблона данными и сохранить в требуемом формате файлов. Допустимое расширение файла импорта данных: xlsx. Размер файла не может принимать значения более 8 Мб. В файле загрузки должно быть не более 40 тыс строк.

3.         Нажать на кнопку «Импорт» => «Загрузить файл».

4.         Выбрать подготовленный файл с данными в открывшемся окне, подтвердить действия кнопкой «Импортировать файл».

Открывается запись произведенного импорта, в котором отображается статус выполнения импорта. После успешного выполнения импорта в соответствующем разделе системы добавляются новые данные. Если какая-то запись не была создана при импорте (например, из-за ошибки уникальности или не заполнено обязательное поле), то в записи импорта показывается, какие строки файла не импортированы и по какой причине. При необходимости пользователь может экспортировать ошибочные строки импорта по кнопке «Экспорт».

По окончании процесса импорта обновляются поля «Статус», «Дата окончания», «Успешно», «Ошибок», «Итого», а также заполняются данными связанные представления «Детали импорта», «Импортированные строки» и «Ошибки импорта».

1707482416766-447.png

Рис. Представление с результатами импорта

«Детали импорта» - успешно импортированные строки и ошибочные не импортированные строки.

«Импортированные строки» - все успешно импортированные записи из файла импорта.

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

1705917991410-589.pngРис. Ошибки импорта

Для удобства работы в импортах предусмотрена сортировка по дате начала, по дате окончания, по столбцам "Успешно", "Ошибок", "Итого". В полях "Дата начала" и "Дата окончания" отображается не только дата, но и время.

Чтобы импортом можно было обновить существующую запись, в шаблоне импорта есть поле идентификатора - «ID записи (для обновления)». Сюда записывается числовое значение, расположенное в конце ссылки на страницу с импортируемой сущностью.

1707724440723-292.png

Рис. Поле «ID записи (для обновления)» в шаблоне импорта

1707724487887-259.png

В файле экспорта также присутствует заполненный соответствующим идентификатором столбец «ID записи». Для обновления соответствующих записей пользователю необходимо скопировать идентификаторы записи из файла экспорта в файл импорта.

Поскольку не все сущности отображаются в структуре разделов меню (например, Расширенные атрибуты карты/контакта), импортировать записи и связи возможно посредством Общего импорта, реализуемого в разделе «Импорт» по кнопке «Создать» через выбор окна «Скачать шаблон» и необходимой сущности из выпадающего списка. Дальнейшие шаги для импорта идентичны шагам, описанным для 1-го способа.

1707724529107-904.png

Рис. Общий импорт сущностей

1707724565487-404.png

 Рис. Список сущностей для шаблона импорта

Импорт параметров карты

В текущей реализации есть возможность импортировать карты не только любым из описанных способов, но и изменять отдельные параметры уже существующих карт. Например, заполнять для существующих карт параметр «NFC-код».

Для импорта NFC-кодов в шаблоне для импорта карт - "Карта_Шаблон импорта", необходимо заполнить 2 столбца - NFC и ID записи (обновления). При чем в столбце "ID записи (обновления)" может быть записано как ID записи, так и номер карты.

1724763609866-189.png

Рис. Заполненный шаблон импорта для NFC-кодов.

Далее загрузить файл импорта стандартным образом и отследить результаты в связанных представлениях Импорта.

1724763950485-501.png

Рис. Результаты импорта

В каждую из 3 карт добавилось значение в параметр NCF-код.

1724764212351-884.png

Рис. Карточка карты с импортированным значением параметра NFC.

Аналогичным образом можно обновлять или заполнять любые параметры карты,  указанные в шаблоне импорта.

Импорты статусов карт

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

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

В разделе системы "Карты лояльности" при нажатии на «Импорт» появляется окно с кнопками. Для массового изменения статусов карт используются кнопки: «Загрузить файл статусов карт» и «Скачать шаблон импорта статусов карт»

1707472153856-523.png

Рис. Кнопка для импорта карт

1705923342644-277.png

Рис. Кнопки импорта карт для смены статусов

По итогу скачивания шаблона импорта на локальный компьютер загружается файл в формате xls  - "Изменение статусов карт_Шаблон импорта".

Файл импорта имеет следующие атрибуты:

ЗаголовокОписание
Номер картыНомер карты, статус которой должен быть изменен
Старый статусТекущий статус карты
Новый статусЦелевой статус карты
Код причины изменения статусаИдентификатор причины изменения статуса карты, указанный в записи справочника причин изменения статуса карты
КомментарийКомментарий при изменении статуса
Номер телефонаНомер телефона участника, к которому привязана карта
Имя участникаИмя участника, к которому привязана карта
Дата рожденияДата рождения участника, к которому привязана карта

Пример заполненной строки таблицы импорта:

 bonuscard_status_curbonuscard_status_newсhange_bonuscardstatus_reasonidchange_bonuscardstatus_commentmobile_phonebonuscardcontact_namebonuscardcontact_birthday
7000001977094831ПроданаАктивная1Подарок+79853154488Дмитрий29.12.1983

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

После заполнения файла по шаблону его импорт осуществляется по кнопке «Загрузить файл статусов карт». В раскрывающемся окне можно как выбрать файл из проводника компьютера, так и перетащить файл в центральное окно. Максимальный объем файла импорта составляет 32 Мб.

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

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

1705923509898-725.png

Рис. Окно для импорта файла со статусами карт

В подразделе системы «Импорт статусов карт» находятся связанные представления «Детали импорта», «Импортированные строки» и «Ошибки импорта», в которых отображаются результаты импорта по всем строкам файла импорта. В каждом представлении предусмотрена возможность скачать данные по кнопке «Экспорт».

1705923801618-605.png

Рис. Раздел меню системы «Импорты статусов карты» со связанными представлениями

1705924005008-155.png

Рис. Результаты импорта

1705923846379-413.png

Рис. Поля файла результатов импорта статусов карт

В столбце «Исходная строка» содержатся исходные данные импорта - старый статус, новый статус, код причины изменения статуса, комментарий, номер телефона, имя участника, дата рождения.

Перечень ошибок  и действий в системе при обработке импорта:

1.  «Карта не найдена» - импортируемой карты нет в системе.

2.  «Изменение статус карты из текущего на целевой запрещено» - если статус карты меняется на не разрешенный статус карты в соответствии с настройками системы.

Старый статусНовый статусПравила обработки импорта
ЗавершенаНовая, Продана, Активная, ЗаблокированаВ строке результатов импорта указывается статус «Ошибка» с описанием «Изменение статус карты из текущего на целевой запрещено»

3. «На карте есть транзакции» - возникает, если на карте есть транзакции.

Старый статусНовый статусПравила обработки импорта
ПроданаНовая

Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если на карте нет транзакций, то:

  1. Проверяется наличие контакта. Если контакт есть, то в строке результатов импорта указывается статус «Ошибка» с описанием «Карта привязана к контакту». Если контакта нет, то:
    1. Статус меняется.
    2. Удаляется связь счетчиков с картой.
АктивнаяНовая

Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если нет, то:

  1. Отвязывается карта от контакта.
  2. Удаляется  связь счетчиков с картой и контактом.
ЗаблокированаНовая

Если на карте есть транзакции, то в строке результатов импорта указывается статус «Ошибка» с описанием «На карте есть транзакции». Если нет, то:

  1. Отвязывается карта от участника.
  2. Удаляется связь счетчиков с картой и контактом.

4. «Карта привязана к контакту» - возникает при трансформации карты со статусом Продана в Новую, если на карте есть контакт (см. п. 3)

5. «Не заполнены атрибуты» - возникает, если хотя бы один из атрибутов карты не заполнен.

Старый статусНовый статусПравила обработки импорта
НоваяАктивная

Если хотя бы один из атрибутов карты не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:

  1. Проверить номер телефона: Если номер телефона не совпадает, то в строке результатов импорта указывается статус «Ошибка» с описанием «Номер телефона не совпадает». Если номер телефона совпадает, то:
    1. Меняется статус карты.
Продана Активная

Если хотя бы один из атрибутов файла не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:

  1. Проверить номер телефона. Если номер телефона не совпадает, то в строке результатов импорта указывается статус «Ошибка» с описанием «Номер телефона не совпадает». Если номер телефона совпадает, то:
    1. Меняется статус карты.
ЗаблокированаАктивная

Если хотя бы один из атрибутов файла не заполнен, то в строке результатов импорта указывается статус «Ошибка» с описанием «Не заполнены атрибуты». Если все атрибуты заполнены, то:

  1. К контакту привязывается карта.

6. «Номер телефона не совпадает» - возникает при трансформации карты со статусом Новая (или Продана) в Активная, если номер телефона не совпадает.

7. «Карта не привязана к контакту» - возникает при трансформации карты со статусом Заблокирована в Продана, если карта не привязана к контакту.

Старый статусНовый статусПравила обработки импорта
ЗаблокированаПродана

Если карта не привязана к контакту, то в строке результатов импорта указывается статус «Ошибка» с описанием «Карта не привязана к контакту». Если карта привязана, то:

  1. Карта отвязывается от контакта.

8. «Код причины изменения статуса не указан» - если указание кода причины изменения статуса карты обязательно, но код отсутствует. Обязательность указания кода регулируется соответствующей партнерской настройкой: Actions.UICardOperations.SetChangeStatusReason.TurnOn

9. «Код причины изменения статуса не найден в справочнике» - если код указан, но система не нашла код причины изменения в справочнике.

10.  «Комментарий при изменении причины не указан» - если указание комментария обязательно, но комментарий отсутствует. Обязательность указания комментария регулируется соответствующей партнерской настройкой: Actions.UICardOperations.SaveComments.TurnOn

11.  «Невозможно привязать еще одну карту данного типа» - если лимит количества карт в рамках типа исчерпан.

Импорты связей MxN

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

Импорт связей MxN осуществляется по кнопке «Cоздать». В появляющемся окне пользователь выбирает сущности для импорта. В первый столбец добавляется название первой сущности из выпадающего списка всех сущностей лояльности («Список товаров»), во втором столбце список сущностей ограничивается только теми, которые могут быть связаны с первой сущностью. Пользователь может выбрать «Товар».

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

Далее необходимо определить «Тип идентификатора» для каждой сущности для распознавания системой импортируемой записи. Возможные значения для сущностей Список товаров и Товар: «Целочисленный идентификатор», «Наименование», «Внешний идентификатор». Для товара рекомендуется выбрать в качестве типа идентификатора - "Внешний идентификатор".

Для "Контакта" типом идентификатора могут выступать также: мобильный телефон, e-mail и Guid-идентификатор.

1761047543065-131.png

Рис. Параметры для настройки шаблона импорта связей

После заполнения всех полей по кнопке «Продолжить» скачивается шаблон файла с названием «Список товаров_Товар_Шаблон импорта». В 5-ой строке файла шаблона два столбца с названиями выбранных сущностей. Все строки выше имеют техническое назначение.

1761047621065-494.png

Рис. Шаблон импорта связей

После заполнения файл необходимо загрузить через кнопки  «Создать» => «Загрузить файл» => «Импортировать файл». Скорость такого  импорта составляет около 50 тыс. записей в час

Далее автоматически открывается карточка импорта связей.

1761048260026-682.png

Рис. Карточка импорта связи списка товаров с товаром

Проверить импортированную связь можно в разделе системы «Список товаров» по названию списка в табе «Товары». При успешном импорте загруженный товар окажется в этом списке.

Ошибки при импорте

Основные ошибки при нажатии на кнопку «Импортировать файл», которые отображаются пользователю до начала процесса импорта данных:

  • Превышен максимальный размер файла (когда размер файла превышает максимально возможный размер файла для импорта);
  • Недопустимое расширение файла (когда расширение файла не соответствует допустимому xls);
  • Несуществующее поле (когда в первой строке файла есть поле с несуществующим названием).

Основные ошибки в процессе импорта данных, отображаемые в записи импорта в представлении «Ошибки импорта»

  • Некорректный тип данных (когда в поле указано значение с некорректным типом, например, в поле с типом дата и время в файле указана строка или число);
  • Не заполнены обязательные поля (когда не заполнено хотя бы одно из обязательных полей);
  • Запись с такими значениями уже существует (когда сработал индекс уникальности в базе);
  • Не найдена связанная запись (когда не найдена запись для поля с типом ссылка на другую сущность по наименованию или внешнему идентификатору);
  • Не найдено значение (когда в поле с типом выбора значения указано несуществующее значение этого поля).

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

Импорт связи маркетингового списка и контакта

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

Шаги для импорта связи маркетингового списка и контакта:

  1. Создать новый маркетинговый список в разделе Контакты => Маркетинговые списки => Создать. Заполнить обязательные поля и сохранить список.

1707725368957-664.png

Рис. Кнопка «Создать» маркетинговый список

1707729641502-112.pngIcon

Рис. Созданный маркетинговый список

       2. Перейти в раздел «Импорт», нажать на «Создать» => выбрать окно «Скачать шаблон». Если появляется окно без возможности выбрать параметры для настройки шаблона (см. рис), необходимо обновить страницу с интерфейсом с помощью Ctrl+F5 и перейти к следующему шагу.

1707728940870-409.png

Рис. Выбор действия при осуществлении импорта

1707892939399-453.pngIcon

Рис. Окно для настройки шаблона без возможности выбрать параметры

       3. В поле "Сущность" выбрать параметр «Связь маркетингового списка и контакта» для настройки шаблона => нажать «Продолжить».

1707731858379-904.png

Рис. Выбор параметра «Связь маркетингового списка и контакта» для настройки шаблона

     3. Заполнить скачанный файл шаблона «Связь_маркетингового списка_и_контакта_Шаблон импорта» двумя обязательными полями: наименование маркетингового списка и контакт. Значениями для поля «Контакт» могут быть: ФИО, телефон, email, guid. Номер телефона должен быть указан в формате +79000000000. Значения должны быть уникальны, иначе при загрузке файла возникнет ошибка. 

1707730302231-624.png

Рис. Заполненный шаблон импорта связи маркетингового списка и контакта

      4. Загрузить заполненный файл импорта с помощью кнопки «Создать» => «Загрузить файл». Добавить файл импорта и нажать «Импортировать файл».

1707725667261-680.png

Рис. Загрузка файла для импорта связи маркетингового списка и контакта

1707730947688-290.png

Рис. Импорт подготовленного файла

Файл с количеством записей более 20 тыс. рекомендуется разбить на отдельные файлы по 5 тыс. записей и загружать одновременно, примерное время импорта одного файла - 1 час.

В результате произведенных действий открывается запись импорта, в котором отображается статус выполнения: 2 контакта импортировались успешно, 1 - с ошибкой "Не найдена связанная запись", что означает отсутствие такого контакта в базе зарегистрированных клиентов.

1707730427256-742.png

Рис. Результаты импорта связи маркетингового списка и контакта

Импортированные в маркетинговый список контакты можно увидеть в табе «Контакты» этого списка. Контакты были зарегистрированы в базе без указания ФИО (по номеру телефона и электронной почте), поэтому в поле "Контакт" импортированных записей отображается значение "Нет имени".

1707730730147-202.pngРис. Маркетинговый список с импортированными контактами

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

При попытке ручного добавления такого контакта в МС, он не будет отображаться в строке поиска в окне Добавления нового элемента.

1745244130005-917.png

Если добавлять контакта в МС через общий импорт, он завершается с ошибкой "Запись с такими значениями уже существует".

1745244542692-770.png

Рис. Ошибка добавления в МС дубликата контакта

Импорты купонов

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

В карточке контакта новый и погашенный купоны находятся в связанной записи «Купоны».

1705926510359-479.png

Рис. Импортированные купоны в карточке контакта

Импорты новых купонов

В разделе «Импорты новых купонов» осуществляется загрузка новых купонов посредством файла загрузки через кнопку «Создать» => «Скачать шаблон».

1724753860761-515.png

Рис. Раздел Импорты купонов

Файл шаблона «Импорт_новых_купонов_Шаблон импорта» имеет поля:

ПолеНаименование поля Тип поля (формат ячейки)Обязательное
numberНомер купонаЧисловойДа
mobilephoneМобильный телефон контактаТекстовыйНет
start dateДата  и время начала действия купонаОбщийДа
end dateДата и время окончания действия купонаОбщийДа

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

1710850367535-751.png

Рис. Окно загрузки файла импорта новых купонов

В результате выполнения импорта формируется запись, в которой хранится вся информация об импорте и логи.

1710850421558-394.pngРис. Запись импорта новых купонов

1710851561864-947.png

Рис. Карточка с деталями импорта новых купонов

Если у купона заполнен номер телефона, то загруженный купон привязывается к контакту с указанным номером. Если контакт не существует, купон не загружается. В логе формируется соответствующая ошибка «Контакт не найден».

Если номер телефона не заполнен, пул номеров записывается в соответствующий выпуск купонов.

Импорты для гашения купонов

Аналогично процессу импорта новых купонов, в разделе «Импорты для гашения купонов» производится загрузка купонов, которые необходимо массово погасить. По кнопкам «Создать» => «Скачать шаблон», формируется файл загрузки с полями:

ПолеНаименование поляОбязательное
numberНомер купонаДа
mobilephoneМобильный телефон контактаНет

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

1710851477777-255.png

Рис. Окно загрузки файла импорта для гашения купонов

В результате выполнения импорта формируется запись, в которой хранится вся информация об импорте и логи.  Время ожидания загрузки в секундах каждой строки из файла импорта\гашения купонов регулируется партнерской настройкой  Loyalty.Import.Coupons.TimeOut.

1710851433546-813.png

Рис. Запись импорта для гашения купонов

1710851361785-681.png

Рис. Карточка с деталями импорта для гашения купонов

Правила гашения купонов:

  1. Купон не гасится, в логах формируется ошибка, если:
    • у купона заполнен номер телефона, но контакт не принадлежит партнеру, который был указан в модальном окне;
    • купон привязан к контакту, которого не существует;
    • номер телефона принадлежит другому контакту;                                                                                                                                                                             
  2. Если у купона есть контакт или карта, но не указан номер телефона в файле импорта, то купон гасится.
  3. Если купона с таким номером не существует, возвращается соответствующая ошибка.
  4. Если все поля заполнены корректно, купоны переводятся в статус «Погашен».
  5. Если купон уже погашен по чеку, то его статус не меняется. В логе возвращается статус «Купон уже погашен».

Ошибки импорта купонов:

  • Контакт не найден
  • Не найден партнер
  • Купон уже погашен
  • Выпуск купона не найден
  • Тип купона не найден
  • В системе уже есть купон с таким номером