Меню
Поиск

Сложные интерфейсы и данные · Таблицы и списки

Как собрать рабочую таблицу: колонки, сортировка, пустое состояние и действия

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

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

1Колонки под решение, а не под базу

Таблицу собирают не из всех полей, которые есть в базе, а из тех, по которым человек что-то решает.

У заказа в базе магазина больше двадцати полей. Например: номер, дата, покупатель, телефон, почта, адрес, состав, вес, сумма, скидка, промокод, способ оплаты, способ доставки, интервал, комментарий, метка рекламной кампании.

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

Зачем открывают таблицу

Сначала поймите, зачем человек открывает таблицу. В Nielsen Norman Group выделяют четыре задачи, ради которых работают с таблицами данных:

  • найти записи по условию;
  • сравнить значения;
  • посмотреть или изменить одну запись;
  • сделать что-то с записями.

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

ПолеКакое решение помогает принятьГде ему место
Доставка: день и интервалЧто собирать первымКолонка, по ней отсортировано
Номер заказаКакой заказ назвать курьеру или покупателюКолонка
СуммаКакие заказы проверить перед отправкой: от 10 000 ₽ магазин проверяет вручнуюКолонка
СтатусЧто уже собрано, а что ещё нетКолонка
Телефон покупателяНикакого в таблице: звонят из карточки заказаКарточка заказа
Метка рекламной кампанииНикакого у оператора: это для маркетингаОтчёт маркетинга
Для каждой колонки должно найтись решение, которое по ней принимают. Не нашлось — полю место в карточке записи, а не в таблице.

Пометка в строке

Есть и третий путь, между колонкой и карточкой, — пометка в строке.

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

Тогда в строке стоит короткая пометка, а текст — в карточке.

Проверьте себя

Восемь полей заказа. Колонка, пометка или карточка?

Тренажёр · колонка, пометка или карточка
  1. Дата и интервал доставки: «30 сентября, 10:00–14:00».

  2. Телефон покупателя.

  3. Комментарий покупателя: «Позвоните за час, домофон не работает».

  4. Номер заказа.

  5. Промокод, по которому дали скидку.

  6. Отметка «Упаковать как подарок» — бывает у одного заказа из двадцати.

  7. Статус: новый, собран, передан курьеру.

  8. Метка рекламной кампании, из которой пришёл покупатель.

Спросите про каждое поле: что человек решит, глядя на него в таблице? Если ничего — это поле для карточки.

2Числа справа, текст слева

Числа, которые сравнивают, выравнивают по правому краю. Тогда тысячи стоят под тысячами, и крупную сумму видно, не читая.

Текст читают слева направо, поэтому имена и составы стоят по левому краю.

Число сравнивают по величине, а величину видно по длине: 12 450 длиннее 890. Но видно это, только если разряды стоят друг под другом, то есть по правому краю.

Так советуют и GOV.UK, и Material Design, и Контур.Гайды.

Заказы на 30 сентября · выравнивание

Всё по левому краю

№ПокупательВесСумма
1051Ирина Соколова0,5 кг1 850 ₽
1052Марат Хасанов0,25 кг890 ₽
1047Ольга Ким0,75 кг2 670 ₽
1049Павел Орлов3,2 кг12 450 ₽
1053Дина Абрамова0,25 кг990 ₽
Всё по левому краюЧтобы найти самый крупный заказ, приходится читать каждую сумму. 12 450 и 1 850 начинаются одинаково и на глаз почти равны.

По правилу

№ПокупательВес, кгСумма, ₽
1051Ирина Соколова0,501 850
1052Марат Хасанов0,25890
1047Ольга Ким0,752 670
1049Павел Орлов3,2012 450
1053Дина Абрамова0,25990
По правилуСуммы и вес по правому краю, заголовки над ними — тоже. Знаков после запятой везде поровну, единицы ушли в заголовок. Крупный заказ виден сразу: его число длиннее остальных.
Номер заказа стоит по левому краю, как текст: номера не сравнивают по величине, их ищут глазами.
Что в колонкеКак выровнятьЧто ещё
Текст: имя, состав, адресПо левому краю—
Числа, которые сравнивают: сумма, вес, количествоПо правому краюПоровну знаков после запятой, единица измерения — в заголовке, цифры одной ширины
Номера и коды: № заказа, артикулПо левому краюИх не складывают и не сравнивают по величине
Заголовок колонкиТак же, как данные под нимИначе заголовок висит над пустым местом

Цифры одной ширины

Чтобы разряды вставали ровно, у цифр должна быть одинаковая ширина. У многих шрифтов есть такой набор — моноширинные цифры, подробно о них в уроке «Типографика, Senior». Проверьте свой шрифт: наберите столбиком 1111 и 5555 и посмотрите, одной ли ширины строки.

Число, которое сравнивают, стоит по правому краю, и заголовок над ним — тоже. Текст и номера — по левому.

3Сортировка: по чему и в какую сторону

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

Порядок по умолчанию выбирают под главную задачу.

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

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

Попробуйте сами

Нажмите на заголовки «Доставка», «Покупатель» и «Сумма». Повторное нажатие меняет направление.

Заказы · живая таблица
Заказы 6 на 30 сентября и 1 октября
№ Доставка Покупатель Состав Сумма, ₽ Статус
105130.0910:00–14:00Ирина СоколоваЭфиопия, Кения1 850Собран
105230.0910:00–14:00Марат ХасановКолумбия890Новый
104730.0914:00–18:00Ольга КимБразилия, 3 пачки2 670Собран
104930.0918:00–22:00Павел ОрловКения, кофемолка12 450Новый
105301.1010:00–14:00Дина АбрамоваЭфиопия без кофеина990Новый
104401.1014:00–18:00Сергей ЛебедевГватемала, 2 пачки1 780Собран

Отсортировано: доставка, сначала ближайшие

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

Илья Бирман из Бюро Горбунова идёт дальше: стрелка в шапке путает, а сортировать в обе стороны часто незачем. Он советует подсветить колонку, по которой отсортировано, или назвать полезные порядки словами — «Сначала самые нагруженные» вместо «Нагрузка ↑». В живой таблице выше словами сделана строка под ней.

Для разработки у сортировки есть своя разметка: у заголовка, по которому отсортировано, стоит атрибут aria-sort с направлением, а сам заголовок сделан кнопкой. Так порядок таблицы слышит и тот, кто читает её экранным диктором. Пример такой таблицы есть в руководстве W3C по доступным компонентам.

Не сортируйте всё подряд. Двойная стрелка на каждой колонке обещает сортировку там, где она бессмысленна: по алфавиту составов или по статусам. Сортируйте колонки, по которым ищут крайние значения — ближайшее, крупное, давнее.

4Пустая таблица

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

Причин у пустоты три, как и у любого пустого экрана из урока про состояния.

Пусто бывает и из-за ошибки или нехватки прав, но тогда это уже ошибка, и показывают её как ошибку. Как развести все четыре случая текстом, разобрано в уроке «Тексты ошибок и пустых состояний», Middle.

У таблицы есть особенность: она часто пустеет из-за фильтра или поиска. Тогда главное — показать, что именно отфильтровано.

Заказы · три причины пустоты

Ещё ничего нет

Возвраты 0
№ заказаДатаПричинаСумма, ₽
Возвратов пока не былоКогда покупатель вернёт заказ, возврат появится здесь: причина, сумма и кто его оформил.
Ещё ничего нетРаздел новый, и это не ошибка. Сказано, что здесь появится. Действия нет, и это честно: возврат нельзя создать из этой таблицы, он приходит из заказа.

Ничего не нашлось

Заказы 0 из 1 240
Доставка: самовывоз ×30 сентября ×Сбросить всё
№ДоставкаПокупательСумма, ₽
На 30 сентября самовывоза нетБез фильтра «самовывоз» на эту дату 14 заказов.Показать все доставки
Ничего не нашлосьВидно, какие фильтры мешают, и сколько найдётся без одного из них. Одно нажатие — и таблица снова полная.

Всё сделано

Ждут сборки 0
№ДоставкаСоставСтатус
Все заказы на сегодня собраныСледующие придут вечером. Собранные — во вкладке «Передать курьеру».
Всё сделаноПусто, потому что работа закончена. Сказать это прямо и подсказать, где собранное.
Здесь заголовки колонок оставлены: видно, какие данные будут в таблице. В IBM Carbon советуют иначе — убирать и заголовки, и подвал, чтобы пустое состояние встало на место всей таблицы. Годятся оба способа, если в продукте выбран один.
Не показывайте «Нет данных», пока таблица грузится. Если данные придут через две секунды, человек успеет решить, что заказов нет. Пока идёт загрузка, на месте строк стоит скелет: серые полосы в форме таблицы.
Пустая таблица говорит, почему пусто и что сделать. Если пусто из-за фильтра — какого, и как вернуть всё.

5Где живёт действие над строкой

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

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

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

ГдеДля каких действийВ таблице заказов
Строка целикомОткрыть запись. Это самое частое действие с таблицейНажатие по строке открывает карточку заказа
Кнопка в строкеОдно частое действие, которое делают, не открывая запись«Передать курьеру» — оператор делает это с каждым собранным заказом
Меню «⋯» в конце строкиРедкие действия. Опасные — там же, с подтверждением или отменой«Скопировать номер», «Повторить заказ», «Отменить заказ»
Только в карточкеДействия, для которых нужно видеть всю запись«Изменить адрес», «Изменить состав»
Строка заказа · кнопки на всё и одна кнопка с меню
Кнопки на всё
№ПокупательСумма, ₽Действия
1047Ольга Ким2 670Открыть Изменить Курьеру Печать Удалить
Одна кнопка и меню
№ПокупательСумма, ₽Действия
1047Ольга Ким2 670Передать курьеру ⋯ ещё действия
Сверху пять кнопок, и красное «Удалить» стоит вплотную к «Печать»: промахнуться легко. Снизу строка открывает заказ, частое действие — кнопкой, остальное — в меню.
Не прячьте главное действие до наведения курсора. Кнопки, которые появляются только при наведении, не видны на сенсорном экране, и о них никто не узнает, пока случайно не проведёт мышью. Редкие действия можно убрать в меню, но само меню видно всегда.

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

Проверьте себя

Восемь действий над заказом. Где им место?

Тренажёр · где живёт действие
  1. Посмотреть состав и адрес заказа.

  2. «Передать курьеру»: оператор делает это с каждым собранным заказом, 40–60 раз за утро.

  3. «Отменить заказ» — пару раз в неделю, после звонка покупателя.

  4. «Изменить адрес доставки».

  5. «Скопировать номер заказа» — нужен, когда пишут в службу доставки, раз в несколько дней.

  6. «Отметить собранным» в таблице сборщика: он собирает заказы один за другим весь день.

  7. Покупатель звонит и спрашивает, где его заказ.

  8. «Повторить заказ для покупателя» — когда покупатель просит то же самое по телефону.

Место действия зависит от того, кто работает с таблицей. Одно и то же действие у оператора бывает в меню, а у сборщика — кнопкой.
Частое — на виду, редкое — в меню, опасное — с подтверждением или отменой. Строка целиком открывает запись.

6Найдите ошибки в таблице заказов

Макет таблицы, который новый дизайнер принёс на обсуждение. Пять мест в нём мешают оператору.

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

Макет таблицы · найдите ошибки
Заказы 1 240
Номер, имя или телефонСегодня ×
№ Доставка ↕ Покупатель ↕ UTM-метка ↕ Сумма ↕ Действия
105130.0910:00–14:00Ирина Соколоваvk_sept_promo1 850 руб.Курьеру⋯
105230.0910:00–14:00Марат Хасановкомментарий—890 руб.Курьеру ⋯
104930.0918:00–22:00Павел Орловyandex_direct12 450 руб.кнопки при наведении
фильтр «Завтра»:Нет данных
1–25 из 1 240 · ‹ 1 2 3 … 50 ›
  1. Поиск «Номер, имя или телефон».Оставить. Покупатель звонит и называет что-то одно из трёх. Поиск по всем трём полям сразу — ровно то, что нужно.
  2. Одинаковые стрелки ↕ у всех колонок.Переделать. Непонятно, по какой колонке отсортировано и в какую сторону. У активной колонки — стрелка направления, а метку кампании сортировать незачем.
  3. Колонка «UTM-метка».Убрать. Оператор по ней ничего не решает, а место она занимает. Это данные для отчёта маркетинга.
  4. Номер заказа по левому краю.Оставить. Номер ищут глазами, а не сравнивают по величине, поэтому он стоит как текст.
  5. Суммы «1 850 руб.» по левому краю.Переделать. Разряды не стоят друг под другом, и 12 450 на глаз не длиннее 1 850. Суммы — по правому краю, «руб.» — один раз в заголовке: «Сумма, ₽».
  6. Кнопка «Курьеру» и меню «⋯».Оставить. Частое действие — кнопкой, редкие — в меню, которое видно всегда.
  7. Пометка «комментарий» у заказа.Оставить. Видно, что комментарий есть, а текст — в карточке. Своя колонка была бы почти пустой.
  8. Кнопки появляются только при наведении.Переделать. На планшете у склада наводить нечем, а мышью о кнопках узнают случайно. Кнопка и меню видны в каждой строке всегда.
  9. «Нет данных» под фильтром «Завтра».Дописать. Непонятно: заказов на завтра нет или они ещё грузятся. Нужно «На завтра заказов пока нет» и что делать: сбросить фильтр или посмотреть сегодняшние.
  10. Подвал «1–25 из 1 240» и страницы.Оставить. Видно, сколько всего заказов и какая часть на экране.

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

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

7Задание

Соберите таблицу своего продукта с сортировкой, действиями над строкой и пустым состоянием.

Часть 1 · Выбрать колонки, 20 минут

  1. Выберите таблицу, с которой кто-то работает каждый день: заказы, заявки, клиенты, товары. Если своего продукта нет, возьмите таблицу заказов «Лесной обжарки» из урока.
  2. Назовите, кто с ней работает и что он делает первым делом, когда её открывает.
  3. Выпишите все поля записи и у каждого — какое решение оно помогает принять в таблице.
  4. Разложите поля: колонка, пометка в строке или только карточка.
Колонки таблицы · заполните перед макетом
ТАБЛИЦА: ______________________        Дата: __.__.____
КТО РАБОТАЕТ: ______________________
ЧТО ДЕЛАЕТ ПЕРВЫМ ДЕЛОМ: ______________________

КОЛОНКИ
поле ____________  решение ____________  край: левый / правый  сортировка: да / нет
поле ____________  решение ____________  край: левый / правый  сортировка: да / нет
поле ____________  решение ____________  край: левый / правый  сортировка: да / нет

ПОМЕТКИ В СТРОКЕ: ______________________
ТОЛЬКО В КАРТОЧКЕ: ______________________

ПОРЯДОК ПО УМОЛЧАНИЮ: по ____________, сначала ____________
ПОЧЕМУ: ______________________

ДЕЙСТВИЯ
строка целиком: ______________________
кнопка в строке: ______________________
меню «⋯»: ______________________
только в карточке: ______________________

ПУСТО
ещё ничего нет: ______________________
ничего не нашлось: ______________________
всё сделано: ______________________
Колонка без решения в строке «решение» — кандидат в карточку.

Часть 2 · Нарисовать, 40 минут

  1. Соберите таблицу на настоящих данных: пять–семь строк с разными суммами, именами и датами, а не «Текст, текст, 100».
  2. Выровняйте колонки по правилу и перенесите единицы измерения в заголовки.
  3. Покажите сортировку по умолчанию: стрелка только у одной колонки.
  4. Расставьте действия: строка открывает запись, частое — кнопкой, редкие — в меню.
  5. Нарисуйте три пустых состояния с текстом и действием.

Часть 3 · Проверить, 10 минут

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

Что должно получиться

  • Макет таблицы с сортировкой по умолчанию и действиями над строкой.
  • Три пустых состояния с текстом и действием.
  • Заполненный шаблон колонок с решением у каждой.

План работы: 20 минут на колонки, 40 на макет, 10 на проверку. Всего — чуть больше часа.

Частые сложности

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

8Чек-лист и ошибки

Таблица готова, если

  • Для каждой колонки названо решение, которое по ней принимают
  • Числа, которые сравнивают, стоят по правому краю, заголовки над ними — тоже
  • Единицы измерения — в заголовке, а не в каждой ячейке
  • Порядок по умолчанию выбран под главную задачу
  • Видно, по какой колонке отсортировано и в какую сторону
  • Строка целиком открывает запись
  • Частое действие видно в строке, редкие — в меню, которое тоже видно
  • Для пустой таблицы есть текст: почему пусто и что сделать

Что мешает

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

9Три ступени темы

В этом уроке учимся собирать таблицу, с которой можно работать. На следующих ступенях — держать настоящие объёмы данных, а потом сводить все таблицы продукта к общим правилам.

СтупеньЧто нужно уметьКак проверить результат
Junior — этот урок Выбирать колонки под решение; выравнивать числа и текст; показывать сортировку; рисовать пустую таблицу с объяснением; решать, где живёт действие над строкой Для каждой колонки можно объяснить, какое решение она помогает принять
Middle Держать длинные значения, много колонок и сотни строк; проектировать таблицу для узкого экрана; показывать применённые фильтры; давать выбор строк и групповые действия с отменой На данных с самыми длинными значениями раскладка не ломается ни на одной ширине
Senior Сводить таблицы продукта к общим правилам; задавать поведение по умолчанию; описывать, когда таблица не подходит; проверять новые экраны по правилам и обновлять правила Новая таблица, собранная другим дизайнером по правилам, ведёт себя так же, как остальные
Ориентир по этой теме: про любую колонку своей таблицы вы можете сказать, что по ней решают, и про любую строку — что с ней делают.

Что почитать дальше

  • Data Tables: Four Major User TasksNielsen Norman Group, Пейдж Лаубхаймер · на английском · бесплатноЧетыре задачи, под которые строят рабочую таблицу, и что нужно каждой: понятный первый столбец, закреплённая шапка, скрытие колонок, правка записи в боковой панели, групповые действия.
  • ТаблицыКонтур.Гайды · на русском · бесплатноГайд Контура по рабочим таблицам на русском: какие колонки оставить, выравнивание и формат чисел, шапка, выбор строк, действия в строке, итоги и настройка колонок. Действия и флажки там появляются при наведении.
  • TableGOV.UK Design System · на английском · бесплатноКороткая справка GOV.UK: когда нужна таблица, подпись и заголовки строк и колонок для экранного диктора, числа по правому краю, что делать с большой таблицей. Половина страницы — код.
  • Как верстать заголовки таблиц с сортировкой?Советы Бюро Горбунова, Илья Бирман, 2021 · на русском · бесплатноИлья Бирман о том, почему стрелка в заголовке сбивает с толку и чем её заменить: подсветить колонку или вынести порядки в список со словами «Сначала новые». В комментариях с ним спорят.
  • Empty statesIBM Carbon Design System · на английском · бесплатноПустые состояния в IBM Carbon: данных ещё нет, ничего не нашлось, всё сделано, ошибка или нет доступа — что писать и какую кнопку дать. У пустой таблицы Carbon убирает и шапку, и подвал.
  • What to consider when creating tablesDatawrapper, блог, Лиза Шарлотта Мут, 2019 · на английском · бесплатноТаблицы в статьях и отчётах: когда таблица лучше графика, как сузить колонки, какие строки ставить первыми, когда нужны зебра и поиск. Совет прятать колонки на телефоне — для статей, а не для рабочих таблиц.