Когда печать запускается дважды, принтер выдает два чека, две накладные или два одинаковых документа. Сотрудники начинают вручную выбрасывать лишние экземпляры и перестают доверять системе.

Дубли печати мешают учету, путают склад, кассу и клиента. Особенно неприятно, если печать связана с оплатой или отгрузкой.

Коротко: нужно найти, где возникает дубль: в интерфейсе, backend, очереди или драйвере.

Почему возникает проблема

Причина может быть в двойном клике по кнопке, повторной отправке формы, двух подписчиках на одно событие, retry без идемпотентности или повторном задании в очереди печати.

Что проверить сначала

  • сколько запросов уходит при одном клике
  • есть ли два обработчика печати
  • создается ли одно или два задания
  • повторяет ли очередь задачу после таймаута
  • не печатает ли драйвер копию сам

Как я решаю такую задачу

Я ищу дубль по цепочке от кнопки до физического принтера и добавляю защиту от повторной отправки.

  • снимаю сетевые запросы и события клика
  • проверяю backend-логи печати
  • смотрю очередь заданий
  • добавляю идемпотентность или блокировку кнопки
  • тестирую повторный клик и плохую связь

Что подготовить для оценки

  • ссылку на страницу, панель или систему
  • что именно должно происходить в норме
  • пример ошибки или скриншот
  • когда проблема появилась
  • тестовый доступ без лишних прав, если он нужен

Каким должен быть результат

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

Чего лучше не делать

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

FAQ

Можно ли исправить без полной переделки?

Чаще всего да. Я сначала ищу точную причину сбоя и предлагаю минимальную правку, которая не ломает рабочую часть проекта.

Что нужно прислать для оценки?

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

Как понять, что задача решена?

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

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и коротко опишите, как должно работать. Я посмотрю задачу, предложу план и скажу, какие доступы понадобятся.

Итог

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