Scott
Scott

Опубликовано 05.10.2026, обновлено 06.10.2026

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

Стройте сценарий вокруг этих решений, а не вокруг индикатора, который достигает 100%. Файл может успешно загрузиться, но содержать неоднозначный идентификатор или столбец, сопоставленный не с тем полем. Разделите состояния формы и проверку данных и окончательное применение изменений, чтобы «готово к импорту» не выглядело как «импорт завершён».

Три столбца CSV соединены с соответствующими полями имени, электронной почты и занятия

Начните с небольшого файла, в котором есть что решать

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

В файле пять строк данных. В нумерации ниже строка заголовков не учитывается. Записи P-104 и P-102 уже существуют, а P-108 и P-109 — ещё нет. Для P-102 сейчас выбрано занятие «Дизайн-системы».

Исходная строкаID записиПолное имяЭлектронная почтаЗанятие
1P-104Mira Chenmira@example.orgИсследования
2P-104Mira Chenmira@example.orgПрототипирование
3P-108Leo Martinleo@example.orgИсследования
4P-109Jo RiveraНе указанаИсследования
5P-102Ada Reedada@example.orgПрототипирование

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

Покажите исходный столбец рядом с целевым полем

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

Для столбца «Занятие» покажите «Исследования» и «Прототипирование» рядом с целевым полем «Занятие». Если приложение хранит ID занятия, объясните, как названия будут сопоставлены с идентификаторами. Два разных занятия с одинаковым названием требуют дополнительного признака. Похожее название само по себе не даёт основания для надёжного сопоставления.

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

В документации HubSpot по импорту (на английском) сопоставление свойств, идентификаторы записей и защита существующих значений рассматриваются отдельно. Конкретные правила относятся к этому продукту, но сам принцип полезен: решения следует показывать пользователю, а не прятать за кнопкой импорта.

До предпросмотра выберите операцию и правило совпадения

Надписи «Импортировать участников» недостаточно, если в файле есть существующие ID. Укажите выбранный режим: только создание, только обновление или оба действия. Затем объясните, что в этом режиме происходит при пустом или неизвестном идентификаторе.

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

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

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

Показывайте результат изменений, а не только образец файла

Предпросмотр исходных данных отвечает на вопрос «Правильно ли прочитан CSV?». Предпросмотр изменений отвечает на вопрос «Что сделает импорт?». Для второго нужны предполагаемый результат по каждой строке и, при обновлении, конкретные изменяемые поля.

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

Исходная строкаПредполагаемый результатЧто нужно знать оператору
1Требует проверкиP-104 также встречается в строке 2 с другим занятием. Пока не будет применена ни одна из этих строк.
2Требует проверкиВыберите нужное значение для P-104 и удалите лишнюю исходную строку.
3СозданиеСоздать P-108 для Leo Martin и выбрать «Исследования».
4Требует проверкиУ P-109 нет адреса электронной почты. Заполните обязательное поле.
5ОбновлениеИзменить занятие P-102 с «Дизайн-системы» на «Прототипирование».

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

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

Сравните сопоставление и последствия в Pixso

Создайте в дизайн-файле Pixso два фрейма: «Сопоставление столбцов» и «Проверка изменений». Используйте в обоих те же пять строк. В первом поставьте примеры значений занятия рядом с целевым полем. Во втором покажите итоговые количества, три строки с проблемами и изменение P-102: «Дизайн-системы → Прототипирование».

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

На холсте Pixso сопоставление полей участников показано рядом с предпросмотром пяти строк: одно создание, одно обновление и три строки для проверки
Это прогноз: одно создание и одно обновление, ещё три строки требуют проверки. Записи пока не изменены.

Спроектировать предпросмотр импорта в Pixso →

Свяжите исправление с исходной проблемой

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

В справочнике ошибок HubSpot (на английском) различаются повторяющиеся ID записей, одинаковое содержимое строк и дубли значений уникального свойства. Это показывает, почему название ошибки должно соответствовать фактической обработке: одно слово «дубликат» может скрывать разные результаты.

Предположим, администратор решил назначить P-104 занятие «Прототипирование». Он удаляет исходную строку 1 и добавляет адрес электронной почты Jo Rivera. Теперь в файле четыре строки, поэтому предпросмотр нужно пересчитать: два создания и два обновления, без строк, требующих проверки. Нельзя оставлять прежний итог «5 строк», если после исправления изменился сам входной файл.

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

Разделяйте готовность, обработку и завершение

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

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

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

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

Наверх
Поделиться в X
Поделиться в Facebook