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