Учёт металлоприёма: брутто и тара одного заезда

Чтобы рассчитать массу принятого груза, программе нужны связанные измерения брутто и тары одного заезда. Совпадения номера машины недостаточно: один автомобиль может приехать несколько раз, а оператор — повторить взвешивание. Если программа берёт последнее подходящее число без проверки связи, арифметика может быть верной, а результат относиться к разным операциям.
Ниже разобрана предлагаемая модель данных для разработки системы приёмки. Это не инструкция по эксплуатации весов, определению качества металла или оформлению обязательных документов. Допустимость измерений и применимые правила устанавливают профильные специалисты. Все номера и величины в примере вымышлены; они нужны для проверки программы. Задача статьи — показать, как не потерять происхождение рассчитанного нетто.
Разберите один заезд до настройки автоматизации
Возьмём учебный заезд П-104. Для него выбраны брутто 12 460 кг и тара 7 180 кг. Разность составляет 5 280 кг. Здесь предполагается согласованная схема процесса, в которой именно эти два измерения образуют пару. Порядок движения транспорта и фактические условия взвешивания статья не задаёт.
Рядом существует заезд П-103 той же машины. У него сохранена другая тара — 7 240 кг. Если обработчик найдёт её по автомобильному номеру и вычтет из нового брутто, получится 5 220 кг. Ошибка составит 60 кг, хотя обе исходные величины выглядят правдоподобно. Поэтому проверка диапазона не заменяет проверку принадлежности измерения конкретной операции.
| Данные учебного примера | Правильная связь | Результат | Вывод для программы |
|---|---|---|---|
| Брутто 12 460 кг | Заезд П-104 | Исходное измерение | Хранить отдельным событием |
| Тара 7 180 кг | Тот же заезд П-104 | Исходное измерение | Выбрать для расчёта явно |
| Вычитание выбранной пары | П-104 и П-104 | 5 280 кг | Сохранить ссылки на оба события |
| Тара 7 240 кг | Другой заезд П-103 | Для новой пары не подходит | Номер машины не доказывает связь |
| Ошибочное смешение | П-104 и П-103 | 5 220 кг | Правдоподобное число всё равно неверно |
Таблица не определяет массу к оплате. Если в конкретном процессе предусмотрены дополнительные согласованные корректировки, они требуют собственных оснований и отдельных полей. Не называйте результат простого вычитания окончательным коммерческим расчётом, пока не описана вся модель компании. Измеренное значение, вычисленное нетто и итог расчётов могут отвечать на разные вопросы.
Измерение хранится отдельно от результата
Создайте самостоятельную запись каждого полученного измерения. В предлагаемой модели у неё есть внутренний идентификатор, источник, время получения, значение с единицей и ссылка на заезд. Если данные поступают от оборудования, сохраните доступный идентификатор исходного сообщения. Если сотрудник вводит число вручную, способ получения должен быть виден при разборе.
Карточка заезда выбирает события для расчёта, но не превращает их в одно безымянное поле «вес». Отдельно указывается роль выбранного измерения: брутто или тара. Это позволяет отличить исходное показание от результата вычитания. В журнале должно быть понятно, какие именно две записи участвовали, даже если позднее появились другие измерения этой машины.
Не приравнивайте время получения сообщения к моменту физического измерения, если источник предоставляет их раздельно. Задержанное сообщение может поступить после следующего события. Для первичной версии достаточно явно подписать доступные времена и не выстраивать принадлежность исключительно по порядку прихода. Если сведений не хватает, требуется проверка сотрудника, а не выдуманная точность.
Неизвестная тара не равна нулю
До получения полной пары карточка показывает незавершённый расчёт. Пустое значение тары нельзя подменять нулём ради заполненной колонки: тогда брутто ошибочно станет нетто. Для руководителя полезнее увидеть список заездов, ожидающих второго события, чем отчёт с формально посчитанными, но неверными итогами.
Отрицательная разность тоже требует разбирательства. Программа не должна незаметно менять числа местами или брать модуль, чтобы получить положительный результат. Сначала выясняют роли измерений, принадлежность заезду и единицы. Конкретные пределы допустимых показаний задают ответственные специалисты; разработчик не выбирает их из удобства демонстрации.
Аналогично обрабатывается отсутствие связи с заездом. Входящее событие можно сохранить как неразобранное и показать в очереди сопоставления. Это лучше, чем автоматически присоединять его к самой новой карточке похожей машины. Для такой очереди нужны ответственный и понятное действие: установить связь, отклонить применение или запросить уточнение по согласованному процессу.
Повторное измерение меняет выбор, а не прошлое
Предположим, для П-104 появилась ещё одна запись тары. Приложение не обязано считать её окончательной только потому, что время позже. Сотрудник сначала устанавливает назначение события. Это может быть повторное измерение того же этапа, ошибочное сообщение или уже другой заезд. Решение должно оставлять объяснимый след.
Если новое событие действительно заменяет выбранное, сохраните прежнюю связь в истории расчёта. Пользователь должен увидеть старую пару, новую пару и причину изменения. Иначе при сравнении вчерашней выгрузки с сегодняшним экраном невозможно объяснить расхождение. Правила прав доступа и согласования таких изменений определяются компанией до реализации.
Не создавайте вторую приёмку из каждого повторного показания. Событие измерения и хозяйственная операция имеют разную кратность. Одна карточка может накопить несколько наблюдений, но использовать согласованный набор. В отчёт о завершённых заездах попадают результаты принятых операций, а не сумма всех чисел из журнала весов.

Дубликат сообщения не является новым взвешиванием
При интеграции источник иногда повторно передаёт уже принятое сообщение. Если у сообщения есть устойчивый идентификатор, используйте его для обнаружения повторной доставки в пределах согласованного источника. Простое совпадение значения и минуты не доказывает дубликат: два реальных измерения могут дать одинаковые числа.
Попросите поставщика оборудования описать, какие идентификаторы и признаки доступны. Не обещайте безошибочное автоматическое различение, если источник отдаёт только число без контекста. Ограничение нужно показать в проекте до оценки. Возможен промежуточный вариант с сохранением сообщений и ручным подтверждением спорных случаев вместо опасного автоматического объединения.
На экране оператора повторная доставка должна отличаться от нового события. Например, приложение может сообщить, что известная запись уже получена, не увеличивая количество измерений заезда. Какой именно признак считается идентичностью, фиксируют в спецификации обмена. Название устройства в комментарии не заменяет проверяемого основания для такого решения.
Единицы и округление согласуются до подключения отчёта
Не вычитайте тонны из килограммов без явного преобразования. В учебном примере обе величины уже выражены в килограммах. Для реальной интеграции сохраняйте единицу источника и правило перевода в расчётную единицу. Исходное значение не стоит перезаписывать округлённым отображением, иначе проверка потеряет точность ещё до формулы.
Отдельно определите, на каком этапе применяется согласованное округление. Два экрана не должны использовать разные правила только из-за настроек форматирования. Отчёт, карточка и выгрузка должны ссылаться на одну принятую версию результата. Изменение количества знаков в интерфейсе не должно молча менять сохранённый расчёт за прошлый период.
Для сравнения можно прочитать материал о фактической массе весового товара. Там рассматривается расхождение между запросом покупателя и собранной позицией. В металлоприёме из этой статьи другая исходная задача: выбрать принадлежащие одному заезду измерения и сохранить происхождение разности.
Что проверить на демонстрации системы
Подготовьте обезличенный набор: два заезда одной машины, неполную пару, повторную доставку одного сообщения и дополнительное измерение с другим идентификатором. Попросите исполнителя показать, какие события созданы, какие выбраны и почему. Одного совпавшего итогового числа недостаточно: ошибка связи может случайно остаться незаметной на простом наборе.
Затем исправьте выбор тары и снова откройте карточку. История должна объяснять изменение, а отчёт — показывать согласованный актуальный результат без двойного учёта. Проверьте также невозможность завершить операцию по неполной паре, если это предусмотрено требованиями. Ошибочное событие должно остаться доступным для разбора, не участвуя в действующем расчёте.
В заявке на разработку приложите описание процесса, образец сообщения оборудования без секретов, перечень ролей сотрудников и ожидаемые результаты учебных сценариев. Укажите, нужна ли работа без связи и как разрешаются спорные события. Такой комплект помогает оценить конкретную интеграцию и экран приёмки, не обещая совместимость со всеми весами и автоматическое исправление любой исторической записи.
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
Вопросы и ответы
Можно связывать брутто и тару только по номеру машины?
Это ненадёжное основание: машина может участвовать в нескольких заездах. Нужны идентификатор операции и проверяемое правило принадлежности каждого события выбранному заезду.
Почему нельзя взять последнее показание тары?
Более позднее событие может относиться к другому заезду или требовать проверки. Программа должна хранить выбор измерения и основание замены, а не считать время универсальным подтверждением.
Что показывать, пока нет второго измерения?
Незавершённую пару и ожидаемое действие. Подстановка нуля создаёт ложный результат; возможность продолжения операции определяют согласованные требования компании.
Полученное нетто уже можно считать суммой к оплате?
Нетто является массой по выбранной модели вычитания. Коммерческий расчёт, дополнительные основания и применимые правила описываются отдельно; эта статья их не устанавливает.