ОБЕЗЛИЧЕННЫЙ ТЕХНИЧЕСКИЙ РАЗБОР · WMS И 1С

Как найти потерю кодов маркировки в обмене WMS и 1С

Внедрено · проверка кодов при сборке

В файловом обмене часть кодов маркировки не попадала в учётную систему и это не сопровождалось явной ошибкой. Причина была в том, что отбор данных ориентировался на дату создания складской задачи, хотя коды появлялись при её выполнении. Обмен и связанный сценарий проверки внедрены.

Контекст задачи

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

Обмен выполнялся через файлы. WMS формировала выгрузку по выполненным заданиям, а учётная система читала файлы, находила документ и добавляла недостающие коды. На вид схема была понятной, но фактический момент создания задачи не совпадал с моментом появления кодов.

Почему данные пропадали незаметно

Обработка выбирала задания по дате их создания. Если задание отбора создавали вечером, а выполняли на следующий день, в момент первой выгрузки в нём ещё не было кодов. На следующий день задание уже не проходило фильтр по текущей дате. В результате файл не создавался, ошибки не возникало, а оператор не видел явного признака, что данные не дошли.

В анализируемой схеме обнаружились и связанные риски: состояние «отправлено» могло фиксироваться до подтверждения приёма; при отсутствии идентификатора заказа файл не формировался, но признак обработки всё равно мог быть установлен; повторная обработка не всегда различала «коды уже есть» и неуспешный результат.

Что изменили

Отбор по дате создания задачи заменили отдельным потоком, который передаёт данные при выполнении задания отбора. WMS отправляет связанные короткие и доступные полные коды в учётную систему; получатель связывает их с документом и сохраняет для дальнейшего кассового сценария.

В решении используются следующие принципы:

  • Событие процесса. Передача связана с выполнением задания, а не с календарной датой его создания.
  • Проверка при сканировании. Каждый считанный код подконтрольного товара проверяется через учётную систему.
  • Безопасная реакция. При сомнительном результате ТСД предлагает сборщику отложить товар; для разрешённого к продаже товара блокирующего сообщения нет.
  • Отдельный поток физлиц. Маркированные товары для заказа физического лица проходят выделенный сценарий сборки, а полные коды доступны для передачи на кассу.
  • Расширение WMS. Доработки вынесены в расширение, чтобы не встраивать интеграционную логику в изменяемые типовые модули.

Контроль сценария

Для такого обмена важны задания, созданные и выполненные в разные даты, повторный запрос и частично заполненный документ. Также проверяется путь полного кода: как терминал его передаёт, где он хранится и как специальный разделитель представлен в данных. Полные коды не записываются в обычные журналы и не передаются в публичных примерах.

Результат внедрения

При сборке товара, подконтрольного «Честному знаку», каждый отсканированный код — упаковки или маркировки — проверяется через учётную систему. Если товар вызывает сомнение, ТСД предлагает сборщику отложить его. Когда товар подлежит продаже, блокирующих факторов на терминале нет.

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

Обезличивание. Название заказчика, внутренние имена объектов и номера документов не публикуются. Количественные показатели эффекта не предоставлены.

Что показывает этот разбор

При диагностике интеграции важно проверять связь между временем бизнес-события, условиями выборки, фиксацией отправки и ответом получателя. В этом случае проверка выявила условие, из-за которого коды терялись без явной ошибки; после внедрения складской сценарий проверяет код при сборке и направляет сомнительный товар на отложение.

Нужно проследить обмен между складской и учётной системами?

Обсудить задачу ↗