Как реализовать маркировку и ЭДО в 1С 7.7 Торговля и склад

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

Современные требования законодательства, такие как обязательная маркировка товаров (шины, парфюмерия, легкая промышленность и др.) и обязательный электронный документооборот (ЭДО), ставят перед пользователями платформы 1С 7.7 серьезные вызовы. Платформа, выпущенная более 20 лет назад, штатно не поддерживает современные протоколы безопасности и форматы обмена данными. Однако, как показывает практика, интеграция возможна. Рассмотрим подробно, как внедрить маркировку и ЭДО в конфигурацию «Торговля и склад 9.2».

Анализ проблемы и выбор стратегии

Прежде всего, разберем, какие основные препятствия стоят перед разработчиком в 1С 7.7:

  1. Отсутствие поддержки TLS 1.2: Серверы «Честного ЗНАКа» и операторов ЭДО требуют защищенного соединения, которое V7Plus.dll обеспечить не может.
  2. Сложные форматы XML: Электронные УПД должны содержать коды маркировки в строго определенных тегах, что требует глубокой переработки механизмов выгрузки.
  3. Работа с оборудованием: Кассовое ПО должно уметь передавать код маркировки (тег 1162) в фискальный накопитель, а сканеры — корректно считывать символы GS1.

Проанализируем два основных пути решения: прямая доработка 7.7 с использованием внешних модулей и создание «транзитной» базы на платформе 8.3.

Решение 1: Использование готовых модулей ЭДО для 1С 7.7

Многие операторы ЭДО (например, Диадок или Такском) разработали специальные внешние компоненты и обработки для интеграции с «семеркой». Это самый быстрый путь. Рассмотрим по шагам процесс подключения на примере модуля Диадок:

Во-первых, необходимо убедиться, что у пользователя есть права на Использование в качестве OLE Automation сервера. Модуль работает как внешняя обработка (.ert), которая через COM-объекты связывается с сервером оператора.

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

Для работы с HTTP-запросами в обход ограничений платформы часто используется следующий метод на языке 1С 7.7:


// Пример использования внешнего объекта для HTTP-запросов
Попытка
    WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Open("POST", "https://api.diadoc.ru/...", 0);
    // Настройка заголовков и отправка данных
    WinHttp.Send(СодержимоеДокумента);
Исключение
    Сообщить("Ошибка инициализации WinHttp: " + ОписаниеОшибки());
КонецПопытки;

Решение 2: Гибридная схема через промежуточную базу 1С 8.3

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

Разберем алгоритм работы этой схемы:

  1. В 1С 7.7 ведется оперативный учет, создаются документы реализации.
  2. С помощью обработки обмена данные о реализации и коды маркировки выгружаются в 1С:Бухгалтерию 3.0 или 1С:Клиент ЭДО.
  3. В базе 8.3, где функционал ЭДО и маркировки обновляется автоматически фирмой «1С», документы подписываются и отправляются контрагенту и в систему «Честный ЗНАК».

Для передачи GTIN и кодов маркировки из 7.7 в 8.3 удобно использовать формат XML или прямое подключение через COM-соединение:


// Пример подключения к базе 8.3 из 7.7
V83 = СоздатьОбъект("V83.COMConnector");
ПутьКБазе = "File=""C:\Bases\Base83"";Usr=""Admin"";";
База83 = V83.Connect(ПутьКБазе);
Реализация83 = База83.Документы.РеализацияТоваровУслуг.СоздатьДокумент();
// Заполнение реквизитов...

Технические нюансы работы с маркировкой в ТиС 7.7

Рассмотрим подробнее работу с кодами маркировки внутри системы. Код маркировки — это длинная строка, содержащая спецсимволы. Для работы с ней в 1С 7.7 нам потребуется:

1. Настройка сканера штрихкодов. Проанализируем ситуацию: обычный сканер в режиме эмуляции клавиатуры часто «проглатывает» префикс GS1 (символ FNC1). Чтобы 1С 7.7 видела полный код, необходимо использовать драйверы, поддерживающие режим COM-порта, и дорабатывать процедуру ОбработкаВнешнегоСобытия.

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

3. Передача в ККМ (Тег 1162). Это критически важный момент. Чтобы в чеке отображался признак «[M]», необходимо обновить драйвер ФР до актуальной версии и внести изменения в обработку fr_comm.ert (или аналогичную). Нужно добавить передачу структуры КодТовара, которая включает в себя код маркировки в байтовом представлении.

Маркировка остатков

Если клиенту необходимо промаркировать остатки шин, которые уже лежат на складе, алгоритм в 1С 7.7 будет следующим:

  1. Выгрузка списка номенклатуры (наименование, ИНН, GTIN) в CSV-файл.
  2. Загрузка этого файла в личный кабинет «Честного ЗНАКа».
  3. Получение (заказ) кодов маркировки.
  4. Загрузка полученных кодов обратно в 1С 7.7 для последующей печати и ввода в оборот.

Для автоматизации этого процесса можно написать небольшую обработку, использующую MSXML2.DOMDocument для парсинга ответов от ГИС МТ.

Выводы

Подводя итог, можно сказать, что 1С 7.7 «Торговля и склад» вполне жизнеспособна в условиях маркировки, если бизнес не готов к масштабному переезду на 1С 8.3. Основная нагрузка в этом случае ложится на программиста, которому необходимо либо интегрировать готовый модуль от оператора ЭДО, либо настроить стабильный обмен с промежуточной базой на современной платформе. Важно помнить, что требования ГИС МТ постоянно меняются, поэтому архитектуру решения в 7.7 стоит делать максимально гибкой и выносить логику взаимодействия с API во внешние скрипты или компоненты.

← На главную