Как исправить ошибку «Требуется переупаковка» при помарочной приемке ЕГАИС в 1С:Розница?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При работе с помарочным (побутылочным) учетом алкогольной продукции в программе 1С:Розница (начиная с версий 2.2 и выше) пользователи часто сталкиваются с крайне неприятной ситуацией. В процессе проверки поступившей продукции ЕГАИС, после успешного сканирования всех бутылок, при нажатии на кнопку «Завершить проверку» система внезапно выдает ошибку и блокирует проведение документа. В дереве маркируемой продукции появляется несуществующая (фантомная) коробка со статусом «Требуется переупаковка», а часть отсканированных бутылок автоматически привязывается к ней.

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

Выясним причину: почему появляется фантомная упаковка?

Описанная ситуация — это классический признак рассинхронизации передачи данных между двумерным (2D) сканером штрихкодов и базой данных 1С. Новые акцизные марки ЕГАИС представляют собой сложные двухмерные штрихкоды формата DataMatrix или PDF417, содержащие длинную последовательность символов (до 150 знаков).

Если сканер штрихкодов подключен к компьютеру в режиме эмуляции клавиатуры (USB-HID / Keyboard Wedge), передача данных происходит по следующему принципу:

  1. Сканер считывает марку и преобразует ее в текстовую строку.
  2. Устройство начинает имитировать высокоскоростной ввод с клавиатуры, отправляя в операционную систему символ за символом.
  3. Если в этот момент компьютер испытывает пиковую нагрузку (работает антивирус, фоновое обновление), зависает сессия удаленного рабочего стола (RDP) или локальная сеть работает с задержками, непрерывный поток символов разрывается.

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

Так как этот «обрезок» не соответствует структуре акцизной марки ЕГАИС, встроенные алгоритмы формы Проверка поступившей продукции ЕГАИС автоматически принимают его за штрихкод транспортной упаковки (короба или палеты). Программа создает виртуальную коробку, привязывает к ней последующие отсканированные бутылки, а при завершении проверки сверяет фактическую иерархию с ТТН от поставщика. Поскольку в накладной поставщика никакой коробки нет (товар идет побутылочно), программа выдает ошибку соответствия и требует выполнить переупаковку.

Ниже представлен концептуальный пример кода, иллюстрирующий, как логика программы разделяет входящие потоки данных при возникновении задержки:


// Пример упрощенного алгоритма обработки входящих штрихкодов в форме проверки
Процедура ОбработатьВходныеДанныеСканера(ДанныеСтроки)
    
    // Если строка слишком короткая или не соответствует шаблону марки ЕГАИС
    Если СтрДлина(ДанныеСтроки) < 68 Тогда
        // Программа предполагает, что это штрихкод групповой тары (коробки)
        ЗарегистрироватьНовуюУпаковку(ДанныеСтроки);
    Иначе
        // Обработка штатной бутылочной марки
        ЗарегистрироватьАкцизнуюМарку(ДанныеСтроки);
    КонецЕсли;
    
КонецПроцедуры

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

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

---

Инструкция по окончательному решению проблемы

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

Способ 1. Перевод сканера в режим эмуляции COM-порта (Рекомендуется)

Это самый надежный и профессиональный способ подключения торгового оборудования в 1С. В режиме виртуального COM-порта (VCOM) сканер не имитирует нажатие клавиш, а передает весь считанный штрихкод целиком в виде единого пакета данных (через внешнее событие драйвера).

Выполним настройку по шагам:

  1. Найдите инструкцию (мануал) к вашей модели сканера штрихкодов. Если бумажной инструкции нет, ее можно скачать на официальном сайте производителя.
  2. Найдите в руководстве раздел настроечных штрихкодов и отсканируйте управляющий код для перевода устройства в режим USB-COM (USB Serial Emulation).
  3. После сканирования операционная система Windows обнаружит новое устройство. Установите виртуальный драйвер производителя (для сканеров Honeywell, Zebra/Motorola, Datalogic или встроенный драйвер CDC от Microsoft).
  4. Откройте Диспетчер устройств Windows и разверните ветку Порты (COM и LPT). Запомните номер присвоенного виртуального COM-порта (например, COM3).
  5. Перейдите в программу 1С:Розница в раздел Администрирование -> Подключаемое оборудование.
  6. Откройте карточку вашего сканера штрихкодов, нажмите кнопку Настроить и в поле Порт выберите ваш виртуальный COM-порт (например, COM3).
  7. Протестируйте работу устройства. Теперь штрихкод будет передаваться мгновенно и без потерь.

Способ 2. Увеличение таймаута в драйвере оборудования 1С

Если перевод в режим эмуляции COM-порта невозможен (например, при работе в облачном сервисе через тонкий клиент или при использовании терминального сервера RDP, где проброс портов затруднен), необходимо настроить чувствительность драйвера в самой 1С.

Разберем процедуру настройки:

  1. В 1С:Розница перейдите в меню Администрирование -> Подключаемое оборудование -> Сканеры штрихкода.
  2. Нажмите кнопку Настроить для перехода в параметры драйвера (обычно используется стандартный драйвер «1С:Сканеры штрихкода (NativeApi)»).
  3. Найдите параметр «Таймаут» (в некоторых версиях драйверов он называется «Чувствительность клавиатуры» или «Интервал ожидания»). По умолчанию там установлено значение порядка 15–30 миллисекунд.
  4. Увеличьте это значение до 75–100 миллисекунд.
  5. Нажмите Записать и закрыть.

Что это дает: Увеличение таймаута заставляет 1С дольше ожидать поступления символов от клавиатуры. Даже если при передаче длинной акцизной марки возникнет микросекундная задержка на стороне сервера, программа «склеит» все пришедшие символы в одну длинную строку, предотвращая разделение марки на обрезки.

Способ 3. Настройка межсимвольной задержки на самом сканере

Если таймаут в 1С увеличен, но на длинных марках сбои все равно происходят, можно отрегулировать скорость передачи данных на самом сканирующем устройстве.

Для этого в руководстве пользователя сканера найдите раздел Intercharacter Delay (Межсимвольная задержка). С помощью специальных настроечных кодов установите задержку в пределах 10–20 миллисекунд. Это замедлит эмуляцию нажатия клавиш, давая возможность слабым компьютерам и медленным RDP-каналам гарантированно принять каждый символ без потери буфера обмена.

Способ 4. Быстрое исправление ситуации без перезапуска документа

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

  1. В форме проверки поступившей продукции ЕГАИС найдите кнопку Еще (в правом верхнем углу формы).
  2. Выберите пункт Сбросить результаты проверки (или «Начать проверку заново»). Это очистит дерево связей и удалит некорректно созданные упаковки.
  3. Перенастройте сканер или увеличьте таймаут по описанным выше инструкциям.
  4. Просканируйте товар повторно — проверка завершится в штатном режиме.

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

← На главную