Как реализовать маркировку шин в 1С:Торговля и Склад 7.7 для розничных и оптовых продаж

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Внедрение системы маркировки «Честный ЗНАК» в устаревшие конфигурации на платформе 1С 7.7 (так называемые «клюшки») является серьезным вызовом для технического специалиста. Основная сложность заключается в том, что стандартные механизмы ТиС 7.7 не поддерживают работу с кодами DataMatrix, современными форматами фискальных данных (ФФД 1.2) и протоколами обмена ГИС МТ. В данной статье мы подробно разберем алгоритм доработки системы для полноценного учета маркированных шин, основываясь на практическом опыте и современных требованиях законодательства.

Анализ требований и выбор стратегии интеграции

Прежде всего, проанализируем специфику товара. Шины, в отличие от табака или парфюмерии, имеют свои особенности: этикетки часто повреждаются при транспортировке, а продажа может осуществляться как конечному потребителю (через кассу), так и юридическим лицам (через ЭДО). Рассмотрим основные задачи, которые нам предстоит решить:

  1. Приемка товара: получение кодов маркировки (КМ) от поставщика через систему электронного документооборота.
  2. Хранение КМ: организация структуры базы данных для хранения длинных строк кодов.
  3. Розничная торговля: передача кода в ККТ для формирования чека с тегом 1162 в формате ФФД 1.2.
  4. Оптовые продажи: выгрузка кодов в электронную УПД для передачи прав собственности покупателю.

Техническая подготовка: сканер и внешние компоненты

Стандартная компонента scaner1c.dll часто некорректно обрабатывает длинные последовательности символов DataMatrix и спецсимволы разделителей (GS1). Разберем, как подготовить рабочее место. Мы рекомендуем использовать сканеры в режиме эмуляции COM-порта. Если оставить сканер в режиме клавиатуры, 1С 7.7 будет «проглатывать» часть символов из-за низкой скорости обработки событий.

Для стабильной работы и перехвата событий мы предлагаем использовать внешние компоненты, такие как FormEx или 1C++. Они позволяют более гибко работать с объектами и событиями формы. Проанализируем типичный алгоритм обработки сканирования кода маркировки:


// Пример обработки события внешнего события от сканера
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если (Источник = "Scanner") И (Событие = "Data") Тогда
        ШтрихКод = СокрЛП(Данные);
        // Проверяем, является ли код маркировкой DataMatrix (длина более 30 символов)
        Если СтрДлина(ШтрихКод) > 30 Тогда
            ОбработатьКодМаркировки(ШтрихКод);
        Иначе
            // Обычный поиск товара по EAN13
            НайтиТоварПоШтрихкоду(ШтрихКод);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Организация хранения кодов маркировки в базе данных

Поскольку длина кода маркировки для шин может достигать 75 и более символов (включая криптохвост), стандартные строковые реквизиты справочника Номенклатура не подходят. Рассмотрим вариант создания подчиненного справочника КодыМаркировки. Это позволит хранить историю каждого экземпляра товара.

Важно помнить, что база 1С 7.7 в формате DBF имеет ограничение на объем. Если количество марок исчисляется сотнями тысяч, стоит рассмотреть возможность выноса хранения кодов во внешнюю базу SQLite или текстовые файлы, обращаясь к ним через ADODB.Connection.

Автоматизация приемки товара через ЭДО

Рассмотрим процесс получения товара. Поставщик отправляет УПД через ЭДО. В личном кабинете оператора (СБИС, Диадок) можно сохранить документ в формате XML. Наша задача — научить ТиС 7.7 разбирать этот файл. Для работы с XML используем объект Microsoft.XMLDOM.

Разберем этапы загрузки:

  1. Выбираем XML-файл УПД.
  2. Создаем объект Документ.ПоступлениеТМЦ.
  3. Проходим по узлам НомСтр и извлекаем блоки НомСредИдент, где хранятся коды маркировки.
  4. Записываем эти коды в подчиненный справочник или специальную таблицу документа.

Посмотрим на пример кода для разбора структуры XML:


// Фрагмент разбора XML УПД
xmlDoc = СоздатьОбъект("Microsoft.XMLDOM");
xmlDoc.load(ПутьКФайлу);
УзлыМарок = xmlDoc.getElementsByTagName("НомСредИдент");
Для и = 0 По УзлыМарок.length - 1 Цикл
    ТекУзел = УзлыМарок.item(и);
    КодМарки = ТекУзел.text;
    // Здесь логика привязки кода к строке документа поступления
КонецЦикла;

Розничная продажа и требования ФФД 1.2

При продаже шин в розницу крайне важно соблюдать формат ФФД 1.2. Это означает, что кассовый аппарат должен отправить запрос в ГИС МТ через ОФД для проверки статуса кода до момента печати чека. Рассмотрим реализацию этого процесса через драйвер АТОЛ 10 или Штрих-М.

Проанализируем шаги взаимодействия с кассой:

  1. Запрос КМ: отправляем код маркировки в ККТ командой requestKM.
  2. Ожидание ответа: ККТ связывается с системой «Честный ЗНАК» и возвращает результат проверки.
  3. Подтверждение: если проверка успешна, вызываем метод confirmKM и печатаем чек.

Если вы просто «пробросите» строку в тег 1162, как это делалось ранее для табака, это будет нарушением для ФФД 1.2. Обязательно обновите драйверы ККТ и используйте актуальные методы API драйвера.

Оптовые продажи и отгрузка по безналу

Рассмотрим ситуацию с оптовым покупателем. Здесь передача кодов происходит не через кассу, а через УПД. В 1С 7.7 необходимо доработать документ РеализацияТМЦ, добавив в него возможность сканирования марок при сборке заказа.

Выясним причину, по которой нельзя просто отгрузить товар без указания марок: система «Честный ЗНАК» не увидит перехода права собственности, и товар останется числиться на вашем балансе. При выгрузке УПД в файл для ЭДО (обычно это внешняя обработка от оператора ЭДО), нужно убедиться, что коды попадают в соответствующие теги XML-структуры согласно приказу ФНС.

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

Заключение и рекомендации

Подведем итоги нашего исследования. Реализация маркировки шин в 1С 7.7 — задача трудоемкая, но выполнимая. Для успешного запуска проекта мы рекомендуем придерживаться следующего плана:

Рассмотренные нами методы позволяют продлить жизнь надежной системе ТиС 7.7, обеспечив при этом полное соответствие современному законодательству в области маркировки товаров.

← На главную