Как принимать алкоголь по ЕГАИС 3.0 без ТСД в «1С:Розница»: пошаговые решения и альтернативы

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

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

В этой статье мы подробно разберем, как выйти из этой ситуации без покупки нового дорогостоящего ТСД. Мы рассмотрим три рабочих сценария: использование штатных инструментов вашей программы «1С:Розница» со стационарным 2D-сканером, превращение обычного смартфона в полноценный терминал и разработку собственного программного решения для интеграции с мобильными устройствами.

Решение 1: Штатный функционал «1С:Розница» (Виртуальный ТСД на ПК)

Если у вас сломался ТСД, но на рабочем месте товароведа или кассира есть обычный проводной или беспроводной 2D-сканер штрихкодов, покупать новое оборудование вообще не требуется. В современных версиях программы «1С:Розница» (начиная с редакции 2.2.8) встроен полноценный интерактивный интерфейс проверки поступающего алкоголя.

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

  1. Подключение и настройка 2D-сканера:

    Для корректной работы сканера в режиме поштучной проверки марок крайне рекомендуется перевести его в режим эмуляции COM-порта (Virtual COM Port). Если сканер работает в режиме эмуляции клавиатуры, при каждом сканировании программе придется «ожидать» ввода в конкретное текстовое поле, что неудобно и часто приводит к ошибкам. Настройте драйвер оборудования в разделе «Администрирование» — «Подключаемое оборудование», выбрав стандартный драйвер 1С:Сканеры штрихкодов.

  2. Открытие формы проверки:

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

  3. Процесс сканирования:

    Перед вами откроется специализированная форма проверки. Начните сканировать штрихкоды упаковок или напрямую акцизные марки (PDF417 или DataMatrix) с бутылок. Программа выполняет автоматическое сопоставление считанного кода с данными, которые прислал поставщик в XML-файле накладной.

  4. Цветовая индикация результатов:

    Обратите внимание на цветовую схему, реализованную в интерфейсе «1С»:

    • Зеленый цвет: Марка успешно найдена в ТТН поставщика, факт соответствует документу.
    • Красный цвет: Обнаружено расхождение. Это может означать, что марка отсутствует в накладной (чужой товар) или сканируется повторно.
    • Серый цвет (неотмеченные позиции): Товар, который еще не был отсканирован.
  5. Завершение проверки:

    После завершения сканирования нажмите кнопку «Проверить и закрыть». Если были выявлены расхождения, программа автоматически предложит составить Акт расхождения для отправки в ЕГАИС.

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

Решение 2: Использование смартфона в качестве альтернативы ТСД

Если носить коробки к компьютеру неудобно, отличной альтернативой станет обычный Android-смартфон. Современные камеры телефонов без проблем распознают сложные двухмерные коды PDF417 и DataMatrix.

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

Решение 3: Разработка собственного облачного ТСД (Технический разбор для программистов)

Если стандартные интеграции вам не подходят и вы хотите реализовать собственный легкий веб-сервис или мобильное приложение для обмена данными между «1С» и смартфоном, давайте разберем логику построения такого решения.

Нам потребуется передать на мобильное устройство структуру документа ТТН ЕГАИС со списком ожидаемых акцизных марок. Проанализируем формат обмена данными. Для передачи сведений о номенклатуре и разрешенных марках удобно использовать легкий формат JSON.

Рассмотрим пример JSON-структуры, которую «1С» должна передать на мобильное устройство (сервис обмена):


[
  {
    "barcode": "4601033066016",
    "name": "Водка Особая 0.5л",
    "unit": "бут.",
    "serial": true,
    "serials_valid": [
      "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
      "0987654321ABCDEFGHIJKLMNOPQRSTUVWXYZ0987654321"
    ]
  }
]

При сканировании основного штрихкода (EAN-13) мобильное приложение должно переходить в режим сбора акцизных марок. Каждая отсканированная марка сверяется со списком из массива serials_valid. Если марка присутствует в массиве — она подсвечивается зеленым, если нет — приложение выдает предупреждение и подсвечивает строку красным цветом.

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

Рассмотрим пример кода на языке «1С», который извлекает XML-данные входящего транспортного пакета ЕГАИС и собирает входящие акцизные марки по документу:


&НаСервере
Функция ПолучитьСписокАкцизныхМарокИзТТН(ДокументСсылка) Экспорт
    
    СписокМарок = Новый Массив;
    
    // Выполняем запрос к регистру сведений, где хранятся XML-данные обмена ЕГАИС
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ИсторияОбмена.ДанныеОбмена КАК ДанныеОбмена
        |ИЗ
        |	РегистрСведений.ИсторияОбменаСЕГАИС КАК ИсторияОбмена
        |ГДЕ
        |	ИсторияОбмена.Документ = &Документ";
        
    Запрос.УстановитьПараметр("Документ", ДокументСсылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Если НЕ РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        
        // Чтение двоичных данных XML-файла
        Попытка
            ДанныеXML = Выборка.ДанныеОбмена.Получить();
            Если ДанныеXML <> Неопределено Тогда
                ЧтениеXML = Новый ЧтениеXML;
                ЧтениеXML.УстановитьСтроку(ПолучитьСтрокуИзДвоичныхДанных(ДанныеXML));
                
                // Парсим XML структуру в поисках тегов акцизных марок (обычно тег amc)
                Пока ЧтениеXML.Прочитать() Цикл
                    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "amc" Тогда
                        ЧтениеXML.Прочитать();
                        Если ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
                            СписокМарок.Добавить(ЧтениеXML.Значение);
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
                ЧтениеXML.Закрыть();
            КонецЕсли;
        Исключение
            ЗаписьЖурналаРегистрации("ЕГАИС.ПарсингМарок", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        КонецПопытки;
    КонецЕсли;
    
    Возврат СписокМарок;
    
КонецФункции

Полученный массив акцизных марок мы можем легко упаковать в JSON с помощью встроенных средств работы с JSON (объект ЗаписьJSON) и передать через REST API в ваше мобильное или облачное приложение.

На стороне смартфона логика работы приложения предельно проста:

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

Резюме

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

← На главную