Как настроить печать кодов DataMatrix для 'Честного ЗНАКа' в 1С 7.7?

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

Задача по внедрению маркировки товаров для системы "Честный ЗНАК" может стать настоящим вызовом, особенно если вы продолжаете использовать проверенную временем платформу 1С:Предприятие 7.7. Нередко сложности возникают не только в "Торговля и Склад", но и когда требуется настроить печать штрих-кодов в Комплексной конфигурации. Основной вопрос: как сгенерировать и вывести на печать специфический двумерный код DataMatrix, содержащий все необходимые данные от оператора маркировки? Давайте подробно разберем рабочие и проверенные способы решения этой задачи.

Рассмотрим несколько подходов, начиная от самого популярного, который обсуждался на форуме, и заканчивая альтернативными вариантами. Проанализируем их плюсы, минусы и технические нюансы реализации.

Решение 1: Использование внешней компоненты FormEx

Это наиболее часто рекомендуемый и надежный способ для платформы 1С 7.7. FormEx — это мощная и многофункциональная внешняя компонента, которая значительно расширяет возможности языка 1С. Одна из её ключевых функций — работа с различными типами штрихкодов, включая GS1 DataMatrix.

Разберем процесс по шагам:

  1. Выбор правильной версии компоненты. Это критически важный момент. Старые версии FormEx (например, 2007 года) могут не иметь функции генерации DataMatrix или содержать ошибки в алгоритмах, которые не позволят коду корректно считываться. Необходимо использовать одну из последних версий компоненты, где поддержка кодов для "Честного ЗНАКа" гарантированно реализована и отлажена.
  2. Установка и регистрация компоненты. После скачивания архива с компонентой, вам необходимо извлечь файл FormEx.dll и зарегистрировать его в операционной системе. Это делается с помощью стандартной утилиты Windows.
    • Скопируйте файл FormEx.dll в каталог с базой данных 1С или в системный каталог Windows (например, C:\Windows\System32).
    • Запустите командную строку (cmd) от имени администратора.
    • Выполните команду регистрации, указав полный путь к файлу: regsvr32.exe "C:\путь\к\базе\FormEx.dll". При успешной регистрации вы увидите соответствующее сообщение.
  3. Подключение и использование в коде 1С 7.7. В модуле документа, где будет происходить печать, необходимо подключить компоненту и вызвать ее методы. Посмотрим на примерный код.

    Сначала подключаем компоненту. Обычно это делают в процедуре ПриОткрытии() формы обработки.

    
    Процедура ПриОткрытии()
        Попытка
            ЗагрузитьВнешнююКомпоненту("FormEx.dll");
        Исключение
            Сообщить("Не удалось загрузить компоненту FormEx.dll!", "!");
            СтатусВозврата(0);
            Возврат;
        КонецПопытки;
    
        // Создаем объект компоненты
        Попытка
            КомпонентаПечати = СоздатьОбъект("AddIn.Matrix");
        Исключение
            Сообщить("Не удалось создать объект AddIn.Matrix!", "!");
            СтатусВозврата(0);
            Возврат;
        КонецПопытки;
    КонецПроцедуры
    

    Далее, в процедуре печати, мы используем созданный объект для генерации изображения кода.

    
    Процедура СформироватьПечатнуюФорму()
        // ... код получения Таб, печатной формы
        
        // Строка, полученная от "Честного ЗНАКа"
        // Важно: она может содержать непечатаемые символы-разделители!
        СтрокаДляКодирования = "0104601234567890215ABCDEFGHIJKLM" + Симв(29) + "91EE06" + Симв(29) + "92AbCdEfGhIjKlMnOpQrStUvWxYz=";
    
        // Устанавливаем тип штрихкода. Для ЧЗ это GS1 DataMatrix.
        // Числовое значение может отличаться в разных версиях, нужно смотреть документацию к компоненте.
        // Часто для DataMatrix используется значение 22.
        КомпонентаПечати.ТипКода = 22; 
        
        // Передаем строку для кодирования
        КомпонентаПечати.Сообщение = СтрокаДляКодирования;
        
        // Генерируем изображение. Метод может возвращать путь к временному файлу с картинкой.
        ИмяФайлаКартинки = КомпонентаПечати.ПолучитьКартинку();
        
        Если ФайлСуществует(ИмяФайлаКартинки) = 1 Тогда
            // Вставляем полученное изображение в ячейку табличного документа
            Секция = Таб.ПолучитьСекцию("Марка");
            Картинка = Таб.Рисунки.Добавить(ТипРисункаТаблицы.Картинка);
            Картинка.Картинка = СоздатьОбъект("Картинка", ИмяФайлаКартинки);
            
            // Устанавливаем положение и размеры картинки в секции
            Картинка.Лево = Секция.Лево;
            Картинка.Верх = Секция.Верх;
            Картинка.Высота = Секция.Высота;
            Картинка.Ширина = Секция.Ширина;
            
            Таб.ВывестиСекцию(Секция);
        Иначе
            Сообщить("Не удалось сгенерировать изображение кода DataMatrix!", "!");
        КонецЕсли;
        
        // ... дальнейший код вывода таблицы на печать
        Таб.Показать("Печать этикеток");
    КонецПроцедуры
    
    Важно: названия методов (ПолучитьКартинку) и свойств (ТипКода, Сообщение) могут незначительно отличаться в разных версиях FormEx. Всегда сверяйтесь с документацией, которая поставляется вместе с компонентой.

Решение 2: Использование компоненты "1C:Печать штрихкодов"

Фирма "1С" предоставляет свою собственную бесплатную компоненту для работы со штрихкодами. Она также поддерживает DataMatrix и может служить отличной альтернативой FormEx. Принцип работы с ней очень похож.

  1. Скачайте и установите компоненту. Ее можно найти на дисках ИТС или на портале 1С. Компонента представляет собой файл 1CBarcode.dll.
  2. Зарегистрируйте DLL в системе аналогично тому, как мы это делали для FormEx (через regsvr32.exe).
  3. Используйте в коде. Объект этой компоненты обычно называется V8.Barcod или аналогично.
    
    // Попытка подключения компоненты
    Попытка
        ЗагрузитьВнешнююКомпоненту("1CBarcode.dll");
    Исключение
        Сообщить("Компонента 1CBarcode.dll не найдена!");
        Возврат;
    КонецПопытки;
    
    // Создание объекта
    Попытка
        КомпонентаШК = СоздатьОбъект("V8.Barcod");
    Исключение
        Сообщить("Не удалось создать объект для работы со штрихкодами!");
        Возврат;
    КонецПопытки;
    
    // ... далее работа с методами объекта для генерации кода ...
    // Например:
    // КомпонентаШК.ТипКода = 15; // Условное значение для DataMatrix
    // КомпонентаШК.ТекстКода = СтрокаДляКодирования;
    // КартинкаКода = КомпонентаШК.ПолучитьКартинку(); 
    

    Конкретные имена свойств и методов также необходимо уточнять в документации к компоненте.

Ключевые технические аспекты и рекомендации

Независимо от выбранного способа, для успешной печати и последующего считывания кодов маркировки необходимо уделить внимание нескольким важным деталям.

В заключение, задача печати DataMatrix из 1С 7.7 вполне решаема. Главное — выбрать современный инструмент (например, свежую версию FormEx), разобраться с его использованием, уделить особое внимание правильному формату кодируемой строки и тщательно протестировать результат перед внедрением. Также не забывайте, что печать — это лишь часть процесса, и для полноценной работы вам может потребоваться настройка локального модуля "Честный знак" для поддержки разрешительного режима.

← На главную