Внедрение маркировки товаров «Честный ЗНАК» в 1С:Предприятие 7.7

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

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

Основные задачи при переходе на маркировку в 1С 7.7

Для того чтобы ваша конфигурация (например, Торговля и Склад 9.2 или Бухгалтерия 4.5) соответствовала требованиям законодательства, необходимо решить следующие задачи:

  1. Организация хранения кодов: Создание справочников для хранения кодов маркировки (КМ) и привязка их к номенклатуре.
  2. Работа со сканером ШК: Настройка считывания 2D-кодов DataMatrix с учетом спецсимволов.
  3. Передача данных в ККТ: Формирование и отправка тега 1162 (Код товара) в фискальный накопитель через драйвер кассы.
  4. Печать этикеток: Генерация и печать кодов DataMatrix на принтерах этикеток.

Алгоритм формирования тега 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). Многие клавиатурные сканеры «съедают» этот символ, что делает код невалидным для системы маркировки.

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

  1. Перевод в режим эмуляции COM-порта: Это наиболее надежный способ. 1С 7.7 будет получать данные через внешнее событие, и драйвер (например, Scaner1C.dll) корректно передаст все непечатные символы.
  2. Использование таймаута: Если перевести сканер в режим COM невозможно, используйте драйверы с поддержкой NativeApi. В настройках драйвера установите таймаут (например, 75-100 мс), чтобы система могла отличить быстрый ввод со сканера от медленного набора текста пользователем.

Печать DataMatrix этикеток из 1С 7.7

Для печати этикеток (например, при маркировке остатков обуви или одежды) стандартных средств 1С 7.7 недостаточно, так как платформа не умеет самостоятельно генерировать DataMatrix. Выясним, какие внешние компоненты лучше использовать:

Проанализируем важный нюанс при печати: согласно ГОСТ, первым символом в DataMatrix должен идти FNC1. В 1С 7.7 он часто заменяется на визуально схожие символы, но для корректного считывания оборудованием необходимо использовать компоненты, которые позволяют вставлять управляющие символы напрямую в поток данных принтера.

Архитектура хранения данных и производительность

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

Посмотрим на альтернативные варианты архитектуры:

  1. Подчиненный справочник: Подходит для небольших магазинов (до 10 000 остатков). Каждая единица КМ привязывается к конкретной карточке номенклатуры.
  2. Внешняя база данных (SQLite): Разберем этот вариант подробнее. Вы можете использовать компоненту для работы с SQLite, где в одной таблице будут храниться КодКМ, Статус и ID_Товара. Это позволит 1С 7.7 оставаться «легкой», а поиск по миллионам марок будет занимать миллисекунды.
  3. Прямое использование API: Вместо хранения всех марок локально, можно реализовать запросы к True-API «Честного ЗНАКА» в момент приемки или отгрузки. Поскольку 7.7 не поддерживает HTTPS напрямую, рассмотрите использование прокси-скриптов на Python или C#, которые будут принимать HTTP запросы от 1С и пересылать их в ЦРПТ с использованием электронной подписи.

Резюме: стоит ли оставаться на 7.7?

Проанализировав опыт внедрения, мы видим, что технического «предела» для 1С 7.7 в вопросах маркировки не существует — любую задачу можно решить с помощью ВК и внешних обработок. Однако трудозатраты на поддержку такой системы растут с каждым изменением законодательства (например, переход на ФФД 1.2). Если ваша конфигурация типовая — рациональнее перейти на 1С 8.3. Если же у вас глубоко кастомизированная система, используйте связку 1С 7.7 + FormEx + SQLite для максимально эффективной работы с маркированными товарами.

← На главную