Внедрение системы маркировки «Честный ЗНАК» в устаревшие конфигурации на платформе 1С 7.7 (так называемые «клюшки») является серьезным вызовом для технического специалиста. Основная сложность заключается в том, что стандартные механизмы ТиС 7.7 не поддерживают работу с кодами DataMatrix, современными форматами фискальных данных (ФФД 1.2) и протоколами обмена ГИС МТ. В данной статье мы подробно разберем алгоритм доработки системы для полноценного учета маркированных шин, основываясь на практическом опыте и современных требованиях законодательства.
Прежде всего, проанализируем специфику товара. Шины, в отличие от табака или парфюмерии, имеют свои особенности: этикетки часто повреждаются при транспортировке, а продажа может осуществляться как конечному потребителю (через кассу), так и юридическим лицам (через ЭДО). Рассмотрим основные задачи, которые нам предстоит решить:
Стандартная компонента 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.
Разберем этапы загрузки:
Документ.ПоступлениеТМЦ.НомСтр и извлекаем блоки НомСредИдент, где хранятся коды маркировки.Посмотрим на пример кода для разбора структуры XML:
// Фрагмент разбора XML УПД
xmlDoc = СоздатьОбъект("Microsoft.XMLDOM");
xmlDoc.load(ПутьКФайлу);
УзлыМарок = xmlDoc.getElementsByTagName("НомСредИдент");
Для и = 0 По УзлыМарок.length - 1 Цикл
ТекУзел = УзлыМарок.item(и);
КодМарки = ТекУзел.text;
// Здесь логика привязки кода к строке документа поступления
КонецЦикла;
При продаже шин в розницу крайне важно соблюдать формат ФФД 1.2. Это означает, что кассовый аппарат должен отправить запрос в ГИС МТ через ОФД для проверки статуса кода до момента печати чека. Рассмотрим реализацию этого процесса через драйвер АТОЛ 10 или Штрих-М.
Проанализируем шаги взаимодействия с кассой:
requestKM.confirmKM и печатаем чек.Если вы просто «пробросите» строку в тег 1162, как это делалось ранее для табака, это будет нарушением для ФФД 1.2. Обязательно обновите драйверы ККТ и используйте актуальные методы API драйвера.
Рассмотрим ситуацию с оптовым покупателем. Здесь передача кодов происходит не через кассу, а через УПД. В 1С 7.7 необходимо доработать документ РеализацияТМЦ, добавив в него возможность сканирования марок при сборке заказа.
Выясним причину, по которой нельзя просто отгрузить товар без указания марок: система «Честный ЗНАК» не увидит перехода права собственности, и товар останется числиться на вашем балансе. При выгрузке УПД в файл для ЭДО (обычно это внешняя обработка от оператора ЭДО), нужно убедиться, что коды попадают в соответствующие теги XML-структуры согласно приказу ФНС.
Важный нюанс: если оптовый клиент покупает шины для собственных нужд (например, для своего автопарка), в УПД необходимо указать специальный признак «Вывод из оборота». Проконтролируйте наличие этого флага в вашей обработке выгрузки.
Подведем итоги нашего исследования. Реализация маркировки шин в 1С 7.7 — задача трудоемкая, но выполнимая. Для успешного запуска проекта мы рекомендуем придерживаться следующего плана:
Бухгалтерии предприятия 3.0, где механизмы маркировки поддерживаются вендором «из коробки», используя 7.7 только как оперативный торговый контур.Рассмотренные нами методы позволяют продлить жизнь надежной системе ТиС 7.7, обеспечив при этом полное соответствие современному законодательству в области маркировки товаров.