Кейс: IT-аудит и интеграция ERP/MES на машиностроительном заводе
Машиностроительный завод, 2 площадки, 1 500 сотрудников. ERP (1С), MES и Excel-файлы подразделений не синхронизированы: данные расходятся, ручные сверки занимают дни, решения принимаются на основе неполной информации. После IT-аудита и внедрения ETL-пайплайна — единый источник истины, -70% ручных сверок, расхождения менее 1%.
Задача: данные расходятся между системами
1С, MES и Excel — три "правды", ни одна из которых не полная.
1С и MES не совпадают
Данные о выпуске продукции в 1С и MES расходились на 5-15%: разная логика учёта, задержки проведения документов, ручные корректировки. Никто не знал, "какая цифра правильная".
Excel как "клей"
Подразделения вели свои Excel-файлы для сверки и отчётности. Эти файлы не синхронизировались ни с 1С, ни с MES. При ошибке в файле — каскад неверных решений.
Ручные сверки — дни работы
Ежемесячная сверка данных между системами занимала 3-5 рабочих дней: поиск расхождений, выяснение причин, корректировки. К моменту завершения сверки данные уже устаревали.
Подход: аудит, Data Contract, ETL
Сначала понять, где расходятся данные. Потом — зафиксировать правила и автоматизировать.
Этап 1. IT-аудит (3 недели)
Карта систем и потоков данных as-is. Анализ расхождений: где, почему, с какой частотой. Выявили 12 критических точек расхождения между 1С и MES. Матрица проблем с приоритетами и quick wins.
Этап 2. Data Contract (2 недели)
Зафиксировали "источник истины" для каждого типа данных: что берём из 1С, что из MES, с какой частотой, в каком формате. Data Contract — документ, который согласовали все стороны: производство, финансы, IT.
Этап 3. ETL-пайплайн (6 недель)
Python + Airflow: автоматический сбор данных из 1С и MES по расписанию, трансформация по правилам Data Contract, загрузка в единое хранилище. Quality gates: проверка полноты, консистентности, порогов расхождений. При критических ошибках — fail-fast и алерт.
Результаты
Измеримые улучшения после внедрения ETL-пайплайна и Data Contract.
Единый источник истины
Все подразделения работают с одними данными. Расхождения между 1С и MES сократились с 5-15% до менее 1%. Споры "у кого правильная цифра" прекратились.
-70% ручных сверок
Вместо 3-5 дней ежемесячной сверки — автоматическая проверка каждый день. Оставшиеся ручные проверки касаются только нестандартных случаев.
Основа для аналитики
Единое хранилище данных стало основой для панелей мониторинга и управленческой отчётности. Следующий шаг — KPI-витрины для руководства и операционного уровня.
Технический стек подробнее
Архитектура ETL-пайплайна строилась с расчётом на масштабируемость и прозрачность. Ключевое требование заказчика — возможность самостоятельного сопровождения силами внутренней IT-команды (2 разработчика 1С, 1 Python-разработчик).
Apache Airflow как оркестратор
Airflow управляет DAG-ами (направленными ациклическими графами задач): сбор данных из 1С, сбор из MES, трансформация, валидация, загрузка в хранилище. Каждый этап — отдельный task с retry-логикой и алертами. DAG запускается ежедневно в 5:00, полный цикл занимает 12-18 минут. При сбое одного task — остальные не выполняются (fail-fast), а дежурному инженеру приходит алерт в Telegram с указанием конкретного task и текстом ошибки. Выбор Airflow обусловлен тем, что он уже использовался в IT-отделе для других задач, и команда была знакома с интерфейсом.
Модули подключения к 1С и MES
Для 1С использовался HTTP-сервис (REST API), опубликованный на стороне 1С. Формат обмена — JSON, аутентификация — базовая. Для MES — прямое подключение к PostgreSQL-базе MES через SQLAlchemy. Данные забираются инкрементально: только записи, изменённые после последнего успешного запуска (поле updated_at). Это сократило объём трафика в 10 раз по сравнению с полной выгрузкой и уменьшило нагрузку на боевые базы.
Хранилище и качество данных
Единое хранилище — PostgreSQL на отдельном сервере. Схема: staging-слой (сырые данные as-is), clean-слой (после трансформации и валидации), mart-слой (агрегаты для панелей мониторинга). Quality gates реализованы как отдельные Airflow tasks: проверка полноты (количество записей не ниже 80% от среднего), консистентности (суммы по площадкам совпадают с итогами), порогов расхождений (разница 1С vs MES не более 2% по ключевым показателям). При нарушении любого gate — данные не попадают в mart-слой, а остаются в staging с пометкой.
Метрики до и после: детальное сравнение
Замеры проводились в течение 4 месяцев после запуска пайплайна. Базовые показатели зафиксированы на этапе аудита.
Расхождения между системами
До: 5-15% расхождений между 1С и MES по данным о выпуске продукции. По отдельным позициям разница доходила до 30% (когда в MES учитывался брак, а в 1С — нет, или наоборот). После: менее 1% расхождений. Остаточные расхождения — задержка проведения документов в 1С (до 2 часов) и редкие ручные корректировки в MES, не отражённые в 1С.
Время на сверку
До: 3-5 рабочих дней ежемесячно на полную сверку (2 человека). Промежуточные сверки — 2-3 часа еженедельно. После: автоматическая ежедневная сверка (12-18 минут машинного времени). Ручная проверка нестандартных случаев — 30-40 минут в неделю. Экономия: ~50 человеко-часов в месяц.
Скорость принятия решений
До: управленческие отчёты готовились к 15-му числу следующего месяца (после завершения сверки). Решения принимались на данных 2-6 недельной давности. После: данные в mart-слое обновляются ежедневно к 6:00. Панель мониторинга доступна руководству в реальном времени. Среднее время от возникновения отклонения до реакции сократилось с 2-3 недель до 1-2 дней.
Совет. Зафиксируйте стоимость ежемесячной сверки в человеко-часах до начала проекта. Это главный аргумент для обоснования ROI перед руководством: «50 часов/месяц * ставку = X рублей экономии».
Типичные ошибки при интеграции ERP и MES
Интеграция промышленных систем — технически несложная, но организационно тяжёлая задача. Вот ошибки, которые мы наблюдали на этом и аналогичных проектах.
Ошибка 1: начинать с ETL, а не с аудита
Частая ситуация: команда сразу пишет скрипты выгрузки, не разобравшись в структуре данных и причинах расхождений. В результате — ETL работает, но загружает «мусор», потому что источники истины не определены. На нашем проекте аудит выявил, что 4 из 12 точек расхождения были вызваны не техническими, а организационными причинами (разные подразделения по-разному интерпретировали одни и те же показатели). Эти проблемы невозможно решить кодом — только согласованием Data Contract.
Ошибка 2: не учитывать «живую» природу систем
1С и MES — не статичные базы. Конфигурации обновляются, добавляются новые справочники, меняется логика расчётов. ETL-пайплайн, написанный под конкретную версию 1С, ломается после обновления. Решение: Data Contract фиксирует не только «что берём», но и «как уведомляем при изменениях». В нашем случае — обязательное уведомление IT-отдела за 3 рабочих дня до любого изменения структуры выгрузки. Плюс автоматический тест структуры данных (schema validation) при каждом запуске пайплайна.
Ошибка 3: забыть про обратную связь
Пайплайн загружает данные в хранилище — но кто проверяет, что они корректны? Без механизма обратной связи от пользователей (производство, финансы) ошибки в трансформации могут жить месяцами. Решение: еженедельная 15-минутная встреча с ключевыми пользователями в первые 2 месяца после запуска. Чек-лист: «Данные за неделю корректны? Есть позиции, где цифры не совпадают с вашим пониманием?». После стабилизации — переход на асинхронную обратную связь (форма в корпоративном портале).
Совет. Добавьте в панель мониторинга индикатор «свежесть данных» — дату и время последнего успешного обновления. Если пользователь видит вчерашнюю дату — он знает, что данные актуальны. Если видит дату трёхдневной давности — сразу понимает, что что-то сломалось, и не принимает решения на устаревших цифрах.
Уроки и рекомендации
Что важно учесть при интеграции систем на производстве.
Аудит — не формальность
Без аудита мы бы строили ETL "на глаз" — и промахнулись бы с источниками истины. Аудит выявил проблемы, о которых не знали даже владельцы систем.
Data Contract — критически важен
Без формального соглашения "откуда берём какие данные" интеграция рассыпается при первом изменении. Data Contract — живой документ, который обновляется при изменениях.
Quality gates спасают
Fail-fast при критических расхождениях предотвратил несколько инцидентов: когда 1С "потеряла" данные из-за незавершённого проведения, пайплайн остановился и отправил алерт — вместо того чтобы загрузить неполные данные.