Рабочий дашборд на таблицах собирается за один день и держится на одном правиле: три слоя, между которыми данные идут только в одну сторону. Сырые выгрузки лежат отдельно и не правятся руками никогда. Расчёты живут на своём листе. Витрина ничего не считает — она только показывает то, что посчитано слоем ниже. Всё остальное в этой задаче — детали.
Нарушение этого правила выглядит безобидно. Кто-то поправил опечатку прямо в выгрузке, кто-то дописал строку «плюс наличными», кто-то добавил на витрину формулу «чтобы не переключаться». Через два месяца файл считает не то, что в источнике, и никто не может сказать, где именно разошлось. Именно так умирает большинство самодельных дашбордов — не от объёма данных, а от смешивания слоёв.
Ниже — устройство трёх слоёв, пять шагов сборки с проверкой после каждого, состав витрины, шесть типовых сообщений об ошибках и честные пороги, за которыми таблица перестаёт справляться. Расположение пунктов меню в табличных редакторах различается и меняется, поэтому описана логика, а не путь по кнопкам.
Три слоя, которые нельзя смешивать
Три листа в одном файле, и у каждого свой режим доступа. Разделение выглядит избыточным ровно до первого расхождения цифр, после которого оно объясняет всё за минуту.
| Слой | Что лежит | Кто трогает | Что запрещено |
|---|---|---|---|
| Сырые данные | Выгрузки из CRM, учётной системы и банка как есть, ни одной формулы | Никто вручную — только процедура обновления | Сортировать, править опечатки, добавлять столбцы и строки, удалять лишнее |
| Расчётный лист | Формулы, таблицы соответствия, промежуточные итоги, справочник периодов | Один человек — владелец файла, по имени | Вводить числа руками: каждое значение либо ссылка на сырой слой, либо формула |
| Витрина | Шесть блоков для чтения и строка о полноте данных | Никто не правит, все смотрят | Считать что-либо на месте: только ссылки на расчётный лист |
Опечатка в выгрузке кажется мелочью, и её правят прямо в файле. Но при следующем обновлении выгрузка перезапишет лист, правка исчезнет, а формула, которая на неё опиралась, вернёт ошибку или, что хуже, тихо другое число. Правило простое: если данные в источнике неверны, чинят источник, а не таблицу. Всё, что нужно поправить по дороге, живёт в расчётном слое отдельной таблицей соответствия, где видно, что и на что заменяется.
Вертикальная схема из трёх горизонтальных полос-слоёв, снизу вверх. Нижняя полоса «Сырые данные» с тремя входящими стрелками слева, подписанными «CRM», «учётная система», «банк», и пометкой «правки запрещены». Средняя полоса «Расчётный лист» с подписью «формулы и таблицы соответствия, владелец — одно имя». Верхняя полоса «Витрина» с шестью маленькими прямоугольниками-блоками и подписью «только ссылки, ничего не считает». Между полосами широкие стрелки вверх; отдельная тонкая стрелка вниз перечёркнута крестом с подписью «обратной правки не бывает». Подписи по-русски, чертёжный стиль.
Сборка за день: пять шагов с проверкой
Порядок важен: витрина рисуется последней, хотя хочется начать именно с неё. После каждого шага есть проверка на несколько минут — если она не проходит, дальше идти бессмысленно.
- 1Шаг 1. Назвать решение, ради которого всё это
Одно предложение: какое действие руководитель совершит по-другому, увидев эти цифры. «Понимать ситуацию» — не решение. «Решить, кому из менеджеров передать сделки на этой неделе» — решение. Получилось, если для каждого будущего блока витрины записано, какое решение он обслуживает, и ни один блок не остался без решения.
- 2Шаг 2. Три листа и режимы доступа
Создаются три листа, у сырого и расчётного ограничивается редактирование, у витрины остаётся только просмотр. Получилось, если сотрудник, открывший файл, физически не может изменить ячейку в сыром слое, а не просто знает, что этого делать не надо.
- 3Шаг 3. Источник и обновление
Выгрузка из CRM и учётной системы подключается так, чтобы обновляться сама. Здесь начинается зона инженера: настройка регулярной выгрузки — это то, как настроить выгрузку отчёта по расписанию, и делается она вне таблицы. Получилось, если после обновления число строк в сыром слое совпало с числом записей в источнике за тот же период, а не «примерно совпало».
- 4Шаг 4. Ключи соответствия
Строки из разных источников связываются по идентификатору, а не по названию: по коду клиента и номеру документа, а не по «ООО Ромашка». Названия различаются пробелами, регистром и кавычками, и связка по ним рассыпается на первой же выгрузке. Получилось, если доля строк, которым не нашлось пары, ниже 2 %, и все несовпадения выписаны поимённо, а не списаны на округление.
- 5Шаг 5. Расчёты и витрина
Сначала расчётный лист со всеми формулами, потом витрина из шести блоков, где нет ни одной формулы сложнее ссылки. Получилось, если три показателя витрины совпали с теми же цифрами, посчитанными вручную из источника за один произвольный день, а строка о полноте показывает время последнего обновления.
Если данные приходится вытаскивать из CRM руками каждый раз, третий шаг превращается в отдельную задачу — способы связать таблицу с CRM и правило старшинства полей мы разбирали в отдельной инструкции. А если в источниках нет порядка в справочниках, четвёртый шаг не пройдёт вовсе: почему дашборд начинается со справочников, а не с графиков, — тоже отдельный разговор.
Шесть блоков витрины
Витрина читается с телефона за двадцать секунд. Шесть блоков — рабочий максимум для руководителя небольшой компании; седьмой блок съедает внимание у первых шести.
- 1Строка о полноте. Когда обновлялось, за какой период данные, из скольких источников собрано: «на 08:00, источники — 3 из 3». Без неё вчерашние цифры выглядят как сегодняшние.
- 2Деньги месяца. Выручка с начала месяца, план и отклонение одним числом. Три значения, не таблица.
- 3Воронка за месяц. Заявки, сделки, оплаты — и рядом те же три числа за прошлый месяц. Сравнение важнее абсолютных значений.
- 4Топ-5 по марже. Клиенты или позиции, дающие больше всего валовой прибыли. Именно по марже, а не по выручке: сортировка по выручке регулярно выводит наверх убыточных.
- 5Просрочка одним числом. Дебиторская задолженность старше 30 дней. Один показатель, по которому чаще всего немедленно принимают решение.
- 6Пять сделок, требующих решения на этой неделе. Не показатель, а список с именами и суммами. Это единственный блок, который превращает просмотр дашборда в действие.
Нарисованный абстрактный экран витрины в чертёжном стиле, без имитации конкретного продукта. Сверху узкая служебная полоса «на 08:00, период — сентябрь, источники 3 из 3», обведённая рамкой с подписью «строка о полноте». Ниже сетка: два крупных блока «Деньги месяца: выручка, план, отклонение» и «Воронка: заявки, сделки, оплаты + прошлый месяц»; под ними два блока поменьше «Топ-5 по марже» в виде пяти полос и «Просрочка старше 30 дней» одним крупным числом. Внизу широкий блок «Пять сделок, требующих решения» в виде пяти строк с именем и суммой. Все подписи по-русски.
Что пойдёт не так: шесть сообщений
Формулировки в разных табличных редакторах различаются, но узнаваемы. Пять из шести случаев чинятся за минуты, если знать, что искать.
| Что видите | Что это значит | Что делать |
|---|---|---|
| #ССЫЛКА! или #REF! | Формула ссылается на удалённую ячейку: выгрузка отдала другой набор столбцов | Ссылаться на столбцы по заголовку, а не по букве, и фиксировать состав выгрузки при настройке |
| #Н/Д или #N/A | Ключ соответствия не найден: пробел в конце значения, разный регистр, разное написание организации | Связывать по идентификатору, а не по названию; временно вывести все ненайденные ключи отдельным списком |
| #ЗНАЧ! или #VALUE! | Число пришло текстом: разделитель разрядов пробелом, запятая вместо точки, символ валюты в ячейке | Приводить типы в расчётном слое, а не править выгрузку руками |
| Циклическая ссылка | Расчётный лист ссылается на витрину, а витрина обратно на расчёт | Признак нарушенного разделения слоёв: убрать все вычисления с витрины |
| Файл заблокирован другим пользователем | Файл лежит там, где его одновременно открывают несколько человек | Витрину раздавать только на просмотр; редактирование оставить одному владельцу |
| Две копии файла показывают разные итоги | Кто-то скопировал файл, чтобы не сломать оригинал, и работает в копии | Единственный источник истины — один файл по одной ссылке; копии удалять, а не переименовывать |
Последняя строка — не техническая ошибка, а организационная, и она самая частая. Файл копируют из осторожности, потом правят копию, потом в копию заглядывает кто-то ещё. Через месяц в компании три версии правды и никто не знает, какая настоящая.
Сколько это стоит и когда окупается
Модельная ситуация: помощник руководителя каждый понедельник собирает цифры к совещанию — выгружает из CRM и учётной системы, сводит, верстает слайд. Замер по секундомеру: 2 часа 15 минут в неделю. Ставки сквозные: полный час рядового сотрудника — 700 ₽, час инженера — 3 000 ₽.
Считать надо по своим числам, и все три измеримы за неделю. Время сборки — засеките секундомером три раза подряд, а не спрашивайте «сколько примерно»: в подобных замерах названное время расходится с фактическим в полтора-два раза в обе стороны. Ставка часа — из фонда оплаты с учётом взносов и рабочего места, а не из оклада. Если сборка занимает 20 минут в неделю, экономии почти не будет, и это нормальный результат расчёта.
Вторая часть выгоды в расчёт не попадает, но заметна сразу: собранный человеком отчёт не появляется в отпуск, в болезнь и в аврал — то есть ровно тогда, когда цифры нужнее всего.
Три признака, что таблица кончилась, и когда дашборд не нужен вовсе
Переход на BI перестаёт быть блажью, когда совпадают минимум два признака из трёх. Все три измеряются, а не ощущаются.
- Файл открывается дольше 20 секунд или пересчитывается дольше 10. Обычно это значит, что в сыром слое больше 100 000 строк или формулы протянуты на весь столбец до миллионной строки. Первое лечится только переносом хранения, второе — переписыванием расчётов, и второе стоит дешевле.
- Формулы правят руками чаще раза в месяц. Каждая ручная правка — это расчёт, который знает один человек. Когда таких правок больше десятка, файл превращается в личное знание, и его отпуск становится риском для отчётности.
- Две копии файла дают разные итоги. Признак того, что единственного источника истины уже нет. Дальше расхождение растёт само, и обнаруживается оно обычно на разговоре с налоговой или с банком.
Куда переезжать — отдельный вопрос со своими ограничениями. Из живых российских систем чаще всего рассматривают Visiology, Yandex DataLens, Polymatica, Luxms BI и Apache Superset в самостоятельной установке. Важная оговорка, которая всплывает поздно и дорого: Yandex DataLens формально не включён в реестр отечественного ПО, хотя данные лежат в российском облаке, — для государственного заказчика это блокер. Критерии выбора мы собрали в разборе того, как выбрать российскую BI-систему, а устройство полноценного контура отчётности на CRM и таблицах — в материале про отчётность без BI.
И случай, в котором не нужен ни дашборд, ни BI. Если решение по цифре принимается раз в квартал, четыре просмотра в год не окупают ни семи часов сборки, ни 1 050 ₽ поддержки в месяц: такой отчёт дешевле открыть руками, когда он понадобится. То же самое, если на витрину нечего выносить, потому что первый шаг не пройден — ни для одного блока не названо решение, которое он обслуживает. Дашборд, который просто показывает, как идут дела, перестают открывать примерно через три недели.
Таблица держится не на формулах, а на дисциплине: сырой слой не трогают, витрина не считает, файл один.
