Внедряли ЭТрН на стройке — пришлось разбираться с чужими процессами

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет! Я Наталья Йаман, исполнительный директор «Синтеки». Мы разрабатываем софт для строительной отрасли, наш основной продукт — это SRM-система, которая автоматизирует закупки: от выбора поставщика до принятия доставки.

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

Казалось бы, локальная доработка: технически интегрировать ЭТрН просто. Сложнее сделать так, чтобы эта интеграция работала: нужны данные, которые вносят чужие сотрудники в других системах. Расскажу, как простая задача вывела нас далеко за пределы своего продукта. 

Начали с простой задачи — интеграции ЭТрН в нашу систему

Сначала покажу, как в «Синтеке» работали с поставкой до ЭТрН. На объекте прораб принимал материалы, подписывал бумажные накладные (ТТН или ТН) или УПД (универсальный передаточный документ) — и отправлял их в офис. В ЭДО поступал электронный УПД, а бухгалтерии нужно было понять, какому бумажному документу он соответствует, чтобы подтвердить поступление материалов.

Когда ЭТрН стала обязательной, мы надеялись, что она заменит транспортную и товарную части накладной. Значит, в ней будет достаточно данных, чтобы принять груз и вести учет поставок в «Синтеке». 

На практике полной цифровизации не произошло: оказалось, что ЭТрН заменила только транспортную часть накладной, а товарная часть осталась на бумаге. Возникла и другая проблема: было сложно понять, к какой заявке, счету и объекту относятся поступающие ЭТрН.

Так выглядит товарная накладная (ТН), которая осталась в бумажном виде
Так выглядит товарная накладная (ТН), которая осталась в бумажном виде

Стали автоматически связывать ЭТрН с заявкой в системе — не хватило данных

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

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

  • Непонятно, кому приехал груз. В ЭТрН указали название грузополучателя, допустим АО «Комфорт». Осталось гадать, на какой из семи корпусов ЖК доставили материалы и к какому субподрядчику.

  • Неясно, что водитель привез в коробках и по какой заявке. По ЭТрН это просто груз из 10 коробок или паллет. Грузоотправитель не обязан указывать, что внутри — он отмечает только грузовые места.

По этой информации непонятно, в какой корпус ЖК приехал груз и кто его будет принимать
По этой информации непонятно, в какой корпус ЖК приехал груз и кто его будет принимать

Раньше пользователь создавал заявку в «Синтеке», а к ней привязывали счет. Когда приходил УПД, его связывали со счетом — и так все документы собирались вокруг одной поставки. ЭТрН же приходит отдельно, и без номера счета система не понимает, к какой поставке ее отнести. 

Чтобы вернуть этот бизнес-контекст, мы решили связывать ЭТрН с данными в «Синтеке». Технически это сделать несложно: нужно указать в электронной накладной номер счета, система найдет его у себя и определит, по какому проекту и какому субподрядчику везут груз. Но здесь мы столкнулись с новой сложностью.

Оказалось, что критичные данные вносят чужие компании

Кажется, решение простое: добавить в ЭТрН номер счета. Но накладную часто создает не поставщик, с которым мы работаем, а грузоотправитель — значит, нужные данные должен внести именно он.

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

Если грузоотправитель не указал номер, ЭТрН все равно попадет в «Синтеку», но система не сможет сразу связать ее с поставкой. Тогда это можно сделать вручную или позже автоматически — по УПД, если поставщик указал в нем номер ЭТрН.

Здесь появилось ограничение, которое нельзя решить кодом внутри нашей системы. Грузоотправитель-завод не пользуется «Синтекой» и создает ЭТрН в своей системе. Мы не можем технически проконтролировать заполнение документа или обязать сотрудника внести нужные нам данные. 

Так, недавно клиент отправил нам список поставщиков, которых нужно подключить к новому процессу. Мы ответили, что нужны именно грузоотправители. В ответ получили закономерный вопрос: «А как же мы их будем в этот процесс затаскивать?»

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

Потеряли в цепочке покупателя и поставщика: изобретаем костыли

Итак, в работу с ЭТрН пришлось подключать другие компании. Но тут всплыла еще одна проблема: роли в накладной не совпадают с привычными ролями в закупке. Документ заполняют поэтапно: при погрузке, перевозке, приемке и завершении перевозки. Для каждого этапа предусмотрена своя часть накладной — титул. Его заполняет соответствующий участник и подписывает квалифицированной электронной подписью (КЭП).

Вот как это выглядит в нашем примере:

В этой цепочке нет двух основных участников закупки — поставщика и покупателя
В этой цепочке нет двух основных участников закупки — поставщика и покупателя

Застройщик покупает керамогранит у ООО «Плитка», но сам груз отправляет завод, а принимает подрядчик на объекте. Поэтому покупатель и поставщик по умолчанию не видят, где находится груз и кому его привезли.

Что мы сделали. Чтобы поставщик и покупатель получили доступ к документу, мы добавили их в ЭТрН как наблюдателей. Это дополнительные участники, которые не подписывают титулы, но видят электронную накладную. 

Правда, такой костыль сработает, только если грузоотправитель (в нашем случае — завод) добавит наблюдателей. От него зависит и автоматическая привязка документа. Если в ЭТрН есть номер счета, «Синтека» сразу свяжет ее с поставкой. Если номера нет, документ можно привязать вручную или позднее по УПД, если в нем указан номер ЭТрН. Но тогда появляется ручная работа вместо автоматической. 

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

Выстраиваем процесс за пределами «Синтеки»

В итоге «Синтека» контролирует только часть процесса. Данные, от которых зависит автоматическая привязка ЭТрН, передают другие компании и вносят в своих системах. Вот как это выглядит в логистической цепочке:

В центральной зоне — действия, которые «Синтека» не может проконтролировать технически
В центральной зоне — действия, которые «Синтека» не может проконтролировать технически

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

В итоге нам пришлось работать и с внешними участниками процесса. Мы можем влиять на процесс организационно: наша команда отправляет грузоотправителям инструкции, созванивается с ними и проверяет ЭТрН.

Внешнюю часть процесса контролируем через обучение
Внешнюю часть процесса контролируем через обучение

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

На стройке сложно подписывать ЭТрН: что мы придумали

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

Груз обычно физически принимает рабочий, у которого нет КЭП. Сложно представить, что прораб посреди стройки бежит к компьютеру, чтобы подписать накладную. Можно это сделать и через приложение Госключ — но в условиях авральной работы велики шансы, что сотрудник забудет от него пароль. Перед нами встала задача: быстро подключить сотрудника к приемке электронного документа, чтобы он не передавал данные по телефону в офис.

Кроме того, грузополучателей практически некому обучать новому процессу. Операторы ЭДО в первую очередь помогают грузоотправителям, которые формируют ЭТрН. Поэтому работу с грузополучателями взял на себя наш отдел внедрения: сотрудники объясняют, как работать с электронной накладной и как ее подписывать.

Что мы сделали. Разбили приемку груза на два этапа: поставку физически принимает кто-то из сотрудников, а подписываем ЭТрН в офисе. Вот как это происходит:

Компания выдает сотрудникам логин и пароль от системы
↓
На стройку приезжают материалы
↓
Сотрудник входит в «Синтеку» с телефона
↓
Отмечает грузовые места согласно ЭТрН и фиксирует их состояние
↓
Формирует черновик приемки в системе

В офисе

Сотрудник с КЭП видит принятые поставки
↓
Фильтрует принятые ЭТрН
↓
Подписывает ЭТрН на компьютере с помощью КЭП

Сотрудник в офисе получает уведомление, что груз принят, и подписывает ЭТРН в «Синтеке» КЭПом
Сотрудник в офисе получает уведомление, что груз принят, и подписывает ЭТРН в «Синтеке» КЭПом

Мы не хотели писать код в стол

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

Поэтому в таких интеграциях мало разобраться с форматом документа и API. Нужно посмотреть на всю цепочку: кто создает нужные данные, кто передает их дальше, что мы можем контролировать и что делать, если кто-то не выполнит свою часть. Иначе можно написать код в стол.

Источник: https://habr.com/ru/companies/cynteka/articles/1097398/


Интересные статьи

Интересные статьи

Почему approved=true не связывает решение человека с фактическим вызовом — и как Action Envelope, свежая проверка исходного состояния и контрольная проверка после записи закрыли этот конкретный сцена...
Возможности системы Битрикс24, очень распространенной в отечественном бизнесе, могут расширяться с помощью приложений, а также индивидуальной доработки. Рассмотрим подробнее, что можно выбрать и устан...
"Это простой фикс, займет максимум час", — говорите вы в пятницу днем. В понедельник вечером вы всё ещё боретесь с тем же багом, проклиная свой оптимизм и чувствуя, как горит дедлайн.Знакомо? Добро по...
Golang — это любовь, уверены мы в Lamoda Tech, и это подтверждают более 170 инженеров в нашем гошном комьюнити. Мы собрали три доклада, которые хотели бы п...
SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накоп...