Руководство компании пришло к нам с простой задачей: навести порядок в учёте и нормально считать. Учёт к тому моменту жил в Google-таблицах, и сводный отчёт строился 4–5 минут.
Клиент — монтажная компания: электромонтажные работы от прокладки кабельных линий до щитового оборудования и систем видеонаблюдения, объекты по всей России. Название компании мы не раскрываем, а иллюстрации в статье схематичные, с условными данными.
- Отрасль: электромонтажные работы
- География: объекты по всей России
- Пользователи: 30+ на старте, 100+ после полного внедрения
- Учёт: сотни сотрудников, включая рабочих без доступа к системе
- Кто работает: руководство, офис, прорабы и бригадиры, подрядчики
- Формат: веб-портал
- Сроки: 8 месяцев до опытной эксплуатации, полный запуск — на 10–11 месяце
Как было: своя таблица у каждого
До проекта вся работа держалась на Google-таблицах. Своя — у каждого прораба и бригадира, отдельные сводные — у руководства. Между собой их связывали формулы и скрипты: данные из табелей и выполнения подтягивались в сводные, оттуда — в расчёт зарплат и отчёты.
Для небольшой компании это нормальный и удобный старт. Но с ростом объёмов у таблиц появляются типичные проблемы:
- Связи между файлами хрупкие. Переименовали вкладку, вставили столбец, скопировали таблицу — и формулы в сводной превращаются в ошибки.
- Отчёты строятся минутами. Здесь сводный отчёт собирался 4–5 минут, и после смены фильтра ждать приходилось снова.
- Доступы — ручная работа. Выдать новому сотруднику права только на его объекты или закрыть доступ — нужно пройтись по множеству файлов.
- Сводная картина отстаёт. Пока данные дойдут от объекта до свода, проходит время.
Это не чья-то ошибка, а потолок инструмента: таблицы не рассчитаны на сотни людей и тысячи строк, которые меняются каждый день.
Сначала попробовали починить таблицы
Первый месяц занимались тем, что отлаживали существующие таблицы: чинили формулы, оптимизировали скрипты, наводили порядок в структуре.
Это дало передышку, но быстро стало понятно, что мы упираемся не в конкретные ошибки, а в потолок самого инструмента. Таблицы и скрипты к ним не рассчитаны на такой объём данных и на такое количество людей, которые работают с ними одновременно. Ещё в первый месяц вместе с клиентом решили переходить на веб-систему.
Почему не готовое решение
Прежде чем начинать разработку, разобрали очевидные альтернативы:
- Доработать 1С. Компания уже работает в 1С, но чтобы встроить туда сметы, выполнение работ и табели в нужном виде, требовалась серьёзная доработка. По оценке это выходило дороже собственной системы.
- Взять отраслевую строительную ERP. Нашлось несколько малоизвестных продуктов. Любая доработка под процессы компании — платная и недешёвая, а в шаблонном виде они показывали меньше информации, чем даже старые таблицы.
Получалось, что за коробку пришлось бы платить дважды: сначала за лицензию, потом за переделку под себя. И всё равно подстраивать процессы компании под чужую логику.
Что построили
В итоге получился единый веб-портал, в котором работает вся компания. Офис заходит с рабочих компьютеров, прорабы и бригадиры — с ноутбука/планшета.
Что внутри:
- Сотрудники и справочники — единая база людей, объектов, заказчиков и договоров.
- Сметы — загрузка из XLSX, проверка, расчёт и версии.
- Выполнение работ — прогресс по каждой позиции сметы и по объекту в целом.
- Табели — по бригадам, с автоматическим учётом отпусков и больничных.
- Акты и документы — реестр, статусы, файлы.
- Отчёты — для руководства, бухгалтерии и HR.
- Карта объектов — адреса на OpenStreetMap.
- Обучение — инструкции по работе с системой и регламенты компании.
Портал связан с остальными системами компании: справочники приходят из 1С автоматически, поэтому их не нужно вести в двух местах, а сотрудники входят через корпоративную авторизацию. Подрядчиков тоже можно пустить в систему — с доступом только к их части работ.
Четыре решения, на которых держится система
1. Сметы с проверкой и версиями
Самая сложная часть проекта, поэтому расскажем только общий принцип. Смету можно загрузить из файла XLSX. Система проверяет документ на корректность, проводит расчёт и только после этого пускает смету в работу.
Смета на объекте живёт и меняется: добавляются работы, уточняются объёмы, меняются цены. Каждое изменение создаёт новую версию, а предыдущие сохраняются. Всегда можно посмотреть, как выглядела смета месяц назад и кто внёс правку. Никаких файлов «ФИНАЛ_2» и «ФИНАЛ_3».
2. Права доступа, которые настраивает сам клиент
В системе работают руководство, офис, прорабы, бригадиры и подрядчики. У каждой роли — свой набор того, что можно видеть и менять.
Вместо того чтобы зашивать права в код, мы сделали панель настройки. Администратор сам решает, какие разделы и данные видит каждая роль. Поменялся процесс в компании — права меняются в пару кликов, без обращения к разработчикам.
3. Обучение, которое нельзя пропустить
Самая необычная функция проекта. Внутри портала есть обучающая платформа: инструкции по работе с системой и регламенты компании. Пока сотрудник не ознакомился с материалом или не прошёл обучение, соответствующий раздел портала для него закрыт.
Это решает две задачи сразу. Новичок не испортит данные, потому что сначала разберётся, как работать в разделе. А компания получает подтверждение, что человек ознакомился с регламентом, — без бумажных листов с подписями.
4. Табели и акты в одной базе со сметами
Табели, выполнение и акты больше не живут в отдельных файлах. Бригадир заполняет табель — отпуска и больничные уже подтянуты из 1С. Прораб отмечает выполнение — прогресс сразу виден в смете и в отчётах руководства. Бухгалтерия формирует акты по тем же данным, а не сводит их вручную из нескольких таблиц.
Как внедряли
Система большая, и запускать её по частям не имело смысла. Если сметы уже в портале, а табели ещё в таблицах, люди работают в двух местах, и данные снова расходятся. Поэтому в работу её нужно было отдать целиком.
Разрабатывали при этом по блокам — каждый следующий опирается на предыдущий:
- Сотрудники и справочники, интеграция с 1С, авторизация.
- Сметы: загрузка, проверка, расчёт, версии.
- Выполнение работ.
- Табели, акты, отчёты, обучение.
Каждый месяц показывали клиенту демо: что готово, как работает, что поправить. Это не дало проекту уйти в сторону за восемь месяцев разработки. А отчётная часть по ходу сильно выросла: когда руководство увидело, какие данные теперь собраны в одной системе, появились запросы на отчёты, которые в таблицах сделать было просто невозможно.
От старта до опытной эксплуатации прошло 8 месяцев, полноценный запуск — на 10–11 месяце.
Что получилось
Проект сейчас на стадии внедрения, и полных цифр «до и после» по всей компании пока нет — добавим их, когда система отработает полный цикл. Но главное видно уже сейчас.
- Отчёты строятся за 5–10 секунд вместо 4–5 минут — и не нужно ждать заново после каждого фильтра.
- Ничего не ломается и не зависает. Данные хранятся в одной базе, а не в десятках связанных файлов.
- Доступы управляются из одного места — через панель ролей, а не вручную по таблицам.
- Руководители довольны отчётами и сейчас осваивают новые возможности системы.
Уже примерно на пятом месяце, на очередном демо, клиент отметил, что видит, какая сильная система у нас получается. Для нас это лучший промежуточный итог.
Сейчас мы сопровождаем систему: техподдержка, консультации пользователей и план доработок на следующий этап.
Технологии
- Бэкенд: Python, Django
- Фронтенд: React
- Данные: PostgreSQL, Redis
- Фоновые задачи и уведомления в реальном времени: импорт, расчёты, оповещения
- Интеграции: 1С, корпоративная авторизация, карты, импорт XLSX
- Инфраструктура: Docker, CI/CD
Когда таблицы пора менять
Google-таблицы — отличный инструмент на старте. Но если вы узнали свою компанию хотя бы в трёх пунктах из списка, скорее всего, вы уже упёрлись в их потолок:
- у каждого руководителя участка своя таблица, а сводную собирают формулами или вручную;
- отчёт строится минутами или «подвисает»;
- в папках лежат файлы с названиями «ФИНАЛ», «копия» и «новая_v3»;
- выдать или отозвать доступы — отдельная задача на полдня;
- цифры в своде и на объекте регулярно не совпадают;
- зарплату и акты сводят руками из нескольких источников.
Починить таблицы иногда можно — мы сами начали с этого. Но если проблема в объёме данных и количестве людей, починка даёт только отсрочку. Тогда пора переходить к системе, построенной под ваши процессы, а не заводить очередную копию таблицы.