С введением обязательной маркировки товаров на территории РФ многие пользователи и разработчики столкнулись с вопросом: способна ли платформа 1С 7.7 работать с новыми требованиями? Несмотря на отсутствие официальной поддержки от фирмы «1С», сообщество разработчиков доказало, что «семерку» можно адаптировать для работы с табаком, обувью, лекарствами и другими группами товаров. В этой статье мы подробно рассмотрим технические аспекты интеграции 1С 7.7 с системой маркировки, разберем алгоритмы формирования кодов и работу с торговым оборудованием.
Для того чтобы ваша конфигурация (например, Торговля и Склад 9.2 или Бухгалтерия 4.5) соответствовала требованиям законодательства, необходимо решить следующие задачи:
1162 (Код товара) в фискальный накопитель через драйвер кассы.Одной из самых сложных технических задач в 1С 7.7 является формирование Кода Товара (КТ) в бинарном виде для передачи в ОФД. Рассмотрим, как это реализовать на примере табачной продукции. Для табака КТ состоит из префикса типа маркировки (05 для табака), кода GTIN и серийного номера.
Проанализируем структуру кода маркировки пачки сигарет (29 символов):
Для передачи данных через драйвер (например, «Штрих-М»), мы должны преобразовать эти данные в шестнадцатеричную последовательность. Рассмотрим пример кода на встроенном языке 1С 7.7 для подготовки данных:
// Пример формирования данных для тега 1162 (табак)
// MarkingType = 5 (Табак), 2 (Мех), 5408 (Обувь)
GTIN = Лев(СчитанныйШтрихкод, 14);
SerialNumber = Сред(СчитанныйШтрихкод, 15, 7);
// Передача через объект драйвера Штрих-М
ДрайверФР.MarkingType = 5;
ДрайверФР.GTIN = GTIN;
ДрайверФР.SerialNumber = SerialNumber;
ДрайверФР.FNSendItemCodeData(); // Команда записи тега в строку чека
Выясним причину, почему иногда код в ОФД уходит неверно: если вы используете старые прошивки ККТ, вам может потребоваться ручное формирование байтовой строки в формате hex. Для этого в 1С 7.7 придется реализовать функцию перевода каждого символа в его байтовое представление, используя функции КодСимв() и математические преобразования.
При работе с кодами DataMatrix критически важно правильно обрабатывать символ-разделитель GS (Group Separator, код ASCII 29). Многие клавиатурные сканеры «съедают» этот символ, что делает код невалидным для системы маркировки.
Рассмотрим рекомендации по настройке:
Scaner1C.dll) корректно передаст все непечатные символы.NativeApi. В настройках драйвера установите таймаут (например, 75-100 мс), чтобы система могла отличить быстрый ввод со сканера от медленного набора текста пользователем.Для печати этикеток (например, при маркировке остатков обуви или одежды) стандартных средств 1С 7.7 недостаточно, так как платформа не умеет самостоятельно генерировать DataMatrix. Выясним, какие внешние компоненты лучше использовать:
// Используем FormEx для отрисовки DM
Сервис = СоздатьОбъект("Сервис");
// ТекстКМ - это полный код маркировки со спецсимволами
Сервис.РисоватьШтрихКод(ТаблицаПечати, "DataMatrix", ТекстКМ, Параметры);
GS1 DataMatrix без соблюдения структуры, она может вызвать аварийное завершение работы 1С.Проанализируем важный нюанс при печати: согласно ГОСТ, первым символом в DataMatrix должен идти FNC1. В 1С 7.7 он часто заменяется на визуально схожие символы, но для корректного считывания оборудованием необходимо использовать компоненты, которые позволяют вставлять управляющие символы напрямую в поток данных принтера.
Если ваша компания занимается оптом или крупной розницей, объем кодов маркировки может достигать сотен тысяч записей. Хранение их непосредственно в .dbf файлах справочников 1С 7.7 может привести к деградации производительности и риску повреждения индексов.
Посмотрим на альтернативные варианты архитектуры:
SQLite, где в одной таблице будут храниться КодКМ, Статус и ID_Товара. Это позволит 1С 7.7 оставаться «легкой», а поиск по миллионам марок будет занимать миллисекунды.HTTPS напрямую, рассмотрите использование прокси-скриптов на Python или C#, которые будут принимать HTTP запросы от 1С и пересылать их в ЦРПТ с использованием электронной подписи.Проанализировав опыт внедрения, мы видим, что технического «предела» для 1С 7.7 в вопросах маркировки не существует — любую задачу можно решить с помощью ВК и внешних обработок. Однако трудозатраты на поддержку такой системы растут с каждым изменением законодательства (например, переход на ФФД 1.2). Если ваша конфигурация типовая — рациональнее перейти на 1С 8.3. Если же у вас глубоко кастомизированная система, используйте связку 1С 7.7 + FormEx + SQLite для максимально эффективной работы с маркированными товарами.