Класс для формирования штрих-кодов при помощи свободной библиотеки Zint



Библиотека Zint позволяет формировать штрих-коды различных стандартов (более 100) в виде .png, .eps или .svg
Данный класс предназначен для того, чтобы использовать данную библиотеку под 1С 7.7

Класс имеет пока только 2 метода (их должно быть достаточно для предназначения класса):

ЗакодироватьВФайл(ЧтоКодировать, спПараметров) — представляет кодируемые данные в виде файла с изображением штрих-кода

ПерекодировкаВ_BMP(Файл, УдалятьИсходныйФайл = 1) — для перекодирования файла изображения в формат BMP — понятный объекту 1С «Картинка».

Во вложении запаковано все, что требуется — все библиотеки dll, класс и обработка для тестирования функционала.

Есть один минус у библиотеки zint.dll — она не предоставляет методов для проверки кодируемых данных ДО начала процесса кодирования. В результате этого часто возникает ситуация, когда введенные некорректные данные для выбранного стандарта штрих-кода являются некорректными, и обработка вызывает «падение» 1С.

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

Необходимость в создании данного класса возникла из-за невозможности получать штрих-коды по стандарту «фармакод» при помощи других доступных в интернете инструментов. При помощи данного класса я решил свои проблемы.

Пользуйтесь на здоровье!

 

ЗЫ: для работы класса нужна библиотека dynwrapx.dll, которая должна быть зарегистрирована в системе (ее месторасположение не важно)!
Папка zint с файлами:     zint.dll, zlib1.dll, libpng15.dll, zint.sha1   должна находиться в папке БД, папке программы 1С либо в папке класса.
Также требуется служебная библиотека msvcrt.dll (она должны находиться в папке c:windowssystem32, если у Вас Windows установлен в папку c:windows). Тестировал работоспособность только под Windows XP.

Все вышеуказанные библиотеки я включил в файл для скачивания.

10 Comments

  1. maxx

    Скажите как дела с русскими буквами?

    Нужны кодировки win-1251 , utf-8

    Reply
  2. tandy82

    Автор напиши пожалуйста как ты объявляешь класс ШтрихКод в DefCls. Я сделал так:

    класс ШтрихКод=КлассШтрихКод@MD

    {

    Строка ЗакодироватьВФайл(ЧтоКодировать, спПараметров);

    Строка ПерекодировкаВ_BMP(Файл, Число УдалятьИсходныйФайл = 1);

    };

    При запуске теста у меня выходит ошибка:

    ШтрихКод::ЗарегистрироватьФункцииБиблиотек(Строка DllName=F:!editzazintzint.dll) : Неизвестная ошибка

    Враппер.Register(DllName, «ZBarcode_Create» , «r=p»);

    {КлассШтрихКод@MD(20) }

    в чем может быть проблема?

    Reply
  3. Amel2010

    Я давно не работаю с 7.7 и у меня не осталось этих файлов.

    Помнится, я объявлял все классы без указания методов.

    И «@MD» — это для классов, включенных в метаданные?

    А по сути… Судя из текста модуля, который привел к ошибке, проблема возникает при регистрации враппером функции из dll (zint).

    Скорее всего неправильный путь или что-то с правами.

    Этот класс тестировался еще на Windows XP, когда не было заморочек с правами, как у современных ОС.

    Reply
  4. CheBurator

    последние версии Формекса уже содержат в себе этот zint и позволяют формировать ШК с использованием формекса

    Reply
  5. tandy82

    (3) путь правильный, пробовал указать ошибочный путь — появляется другая ошибка

    проблема именно с zint.dll из вашего архива, т.к. пробовал выполнить код по найденному примеру

    Враппер = СоздатьОбъект(«DynamicWrapperX»);

    Враппер.Register(«user32», «GetWindow», «i=hu», «r=h»);

    все работает.

    windows 2003 server, я работаю под админом.

    Reply
  6. tandy82

    (4)

    нашел упоминание про процедуру НарисоватьШтрихкод() в formex (http://www.forum.mista.ru/topic.php?id=788786&page=1) от Альфа

    но не нашел информацию о ней в последней документации, скаченной с сайта dorex.pro

    Reply
  7. Amel2010

    Вот пример от Альфа: https://yadi.sk/d/GIhFnh7w38aDvG

    Reply
  8. tandy82

    (7)

    я уже разобрался по ссылки с мисты: там была эта ссылка + от Альфа был выложен архив с formex с обновленной документацией в als (может кому понадобится, прикрепил доку к данному сообщению).

    Вообще конечно странно что Альф на dorex.pro не выкладывает обновление документации по formex

    Reply
  9. wint_

    А формех для 8-ки можно использовать? Будет печатать штрихкоды?

    Reply
  10. CheBurator

    (9) нет, Formex только для 7.7

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *