Генерация штрих-кода для вставки его в 1С при работе в Linux
В Linux есть отличная команда barcode, которая генерирует штрих-коды в векторном формате ps. Но 1С не понимает такие форматы. Более того, barcode генерирует штрих-код на размер листа А4 или Letter. Установка пользовательского размера листа не увенчалась успехом. Но не будем же мы вставлять изображение штрих-кода размером с лист А4…
Однако есть способ, как решить данные проблемы.
barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps
Теперь, нужно преобразовать его в понятный для 1С формат — это или jpg или png. За это отвечает команда ImageMagic convert. Кроме того, есть возможность указать четкость изображения с помощью параметра -density 150. А так же есть очень полезный параметр для нашего случая -trim. Этот параметр обрезает изображение. Т.е. обрезает всё белое пространство нашего листа. Получаем такую команду для генерации jpg:
convert -density 150 -trim sss.ps sss.jpg
convert -density 150 -trim sss.ps sss.png
Сравнивая изображения png и jpg видим, что jpg имеет размер 21,2Кб, а png — 2,7Кб. Т.е. получается, что png лучше использовать, т.к. размер такого файла в 10 раз меньше. Кроме того, в png нет фона. Для того, чтоб не нужно было вызывать несколько команд из линукс и после каждой делать тайм-аут, рекомендую заключить обе команды в «одну команду», например так:
barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps | convert -density 150 -trim sss.ps sss.png
barcode p 8.5x11in -umm -e 'code128' -b 12345678 | convert - img.png
Функция ШтрихКодПоказать(Штрихкод, Стандарт="128") Если Штрихкод="" Тогда // Если не указали штрих-код, тогда выводим в CODE 128 Предупреждение("Не указан штрих-код!",5); Иначе Файл="/tmp/"+Штрихкод; ЗапуститьПриложение("barcode -p letter -g 200x100 -u mm -b "+Штрихкод+" -e 128 -o "+Файл+".ps | convert -density 150 -trim "+Файл+".ps "+Файл+".png"); Файл=Файл+".png"; КонецЕсли; Возврат Файл; КонецФункции Процедура ОбработкаШтрихкодаНажатие(Элемент) S=ШтрихКодПоказать("58765", "ean13"); Предупреждение("На всякий случай ждем 1 секунду", 1); ЗапуститьПриложение(S); КонецПроцедуры
Параметры функции Штрих-код: Штрих-код — буквенно-цифровое значение штрих-кода.
Стандарт — стандарт штрих-кода. Предусмотрены такие значения данного параметра, отвечающие за соответствующий стандарт:
"ean", "ean13", "ean-13", "ean8", "ean-8" "upc", "upc-a", "upc-e" "isbn" "39", "code39" "128c", "code128c" "128b", "code128b" "128", "code128" "128raw" "i25", "interleaved 2 of 5" "cbr", "codabar" "msi" "pls", "plessey" "code93", "93"
v8.3: Генерация штрихкодов в ОС Linux
Привет всем. Требуется квалифицированная помощь. Имеется клиент-серверная 1С, крутиться на PostgreSQL в Линуксе. Собственно в чем вопрос? При формировании для печати штрихкодов выходит такая картина. Есть у кого опыт решения такой проблемы?
Linux есть отличная команда barcode, которая генерирует штрих-коды в векторном формате ps. Но, 1С не понимает такие форматы. Более того, barcode, генерирует штрих-код на размер листа А4 или Letter. Установка пользовательского размера листа не увенчалась успехом. Но, не будем же мы вставлять изображение штрих-кода размером с лист А4…
Однако, есть способ, как решить данные проблемы.
Генерируем штрих-код в формате ps с помощью команды barcode:
barcode -p letter -g 200×100 -u mm -b 13423432320 -e 128 -o sss.ps
Теперь, нужно преобразовать его в понятный для 1С формат – это или jpg или png. За это отвечает команда ImageMagick convert. Кроме того, есть возможность указать четкость изображения с помощью параметра -density 150. А так же есть очень полезный параметр для нашего случая -trim. Этот параметр обрезает изображение. Т.е. обрезает всё белое пространство нашего листа.
Получаем такую команду для генерации jpg:
convert -density 150 -trim sss.ps sss.jpg
convert -density 150 -trim sss.ps sss.png
Сравнивая изображения png и jpg видим, что jpg имеет размер 21,2Кб, а png – 2,7Кб. Т.е. получается, что png лучше использовать, т.к. размер такого файла в 10 раз меньше. Кроме того, в png нет фона.
Для того, чтоб не нужно было вызывать несколько команд из линукс и после каждой делать тайм-аут, рекомендую заключить обе команды в “одну команду”, например так:
barcode -p letter -g 200×100 -u mm -b 13423432320 -e 128 -o sss.ps | convert -density 150 -trim sss.ps sss.png
Можно обойтись и без использования файла, например:
barcode p 8.5x11in -umm -e ‘code128’ -b 12345678 | convert — img.png
Написали маленькую функцию, которая генерирует штрих-код в Linux и получает его в 1С.
Функция ШтрихКодПоказать(Штрихкод, Стандарт="128")
Если Штрихкод="" Тогда // Если не указали штрих-код, тогда выводим в CODE 128
Предупреждение("Не указан штрих-код!",5);
Иначе
Файл="/tmp/"+Штрихкод;
ЗапуститьПриложение("barcode -p letter -g 200x100 -u mm -b "+Штрихкод+" -e 128 -o "+Файл+".ps | convert -density 150 -trim "+Файл+".ps "+Файл+".png");
Файл=Файл+".png";
КонецЕсли;
Возврат Файл;
КонецФункции
Процедура ОбработкаШтрихкодаНажатие(Элемент)
S=ШтрихКодПоказать("58765", "ean13");
Предупреждение("На всякий случай ждем 1 секунду", 1);
ЗапуститьПриложение(S);
КонецПроцедуры
Параметры функции Штрих-код:
Штрих-код – буквенно-цифровое значение штрих-кода.
Стандарт – стандарт штрих-кода. Предусмотрены такие значения данного параметра, отвечающие за соответствующий стандарт:
«ean», «ean13», «ean-13», «ean8», «ean-8»
проблема с печатью штрих кодов с серера 1с на Linux
ДАННЫЕ ПО КЛИЕНТУ
клиенты подключаются к базе несколькими способами:
-удаленно через браузер либо тонкий клиент ( баз опубликована через веб)
-локально к клвстеру 1С по ip сервера и имени бызы ( толстым либо тонким ) клиентом
ошибка присутствует при всех типах подключения к базе
что выдает в ошибке информация для тех подержки https://pastebin.com/vezJurEj
перед обращение за решением провел рекомендованные действия
https://forum.infostart.ru/forum9/topic74349/
возможно что то сделали не так
для работы этой компоненты пришлось установить помимо пакета libpng16. который в библиотеке 8.4.1.1 слинкован, так еще и слинкованный в ней libpng12 (можете скачать отсюда https://packages.ubuntu.com/xenial/amd64/libpng12-0/download) . После установки этого злополучного пакета ШК стали печататься )))
ldd lib1CBarCodLin64_8_4_1_1.so linux-vdso.so.1 (0x00007ffc471a7000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f52fd5fb000) libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f52fd3b6000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f52fd199000) libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f52fcee5000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f52fcaf4000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f52fc8f0000) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f52fc6cb000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f52fc4b3000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f52fc2ab000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f52fbf22000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f52fbb84000) /lib64/ld-linux-x86-64.so.2 (0x00007f52fde66000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f52fb952000) libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f52fb720000)
Универсальная печать штрихкодов Linux / Windows + Поддержка Datamatrix
Типовая native-компонента формирования штрих-кодов, работающая под Linux/Windows, и обработка для печати штрих-кодов для обычных форм.
Если есть полноценная БСП, то зачем нужна данная обработка?
Если используется программа «до эпохи БСП», то работать не будет?
Именно то, что искал — минималистичный пример вывода штрихкода с использованием встроенной компоненты без привязки к конфигурации.
Проще было бы даже не завязываться на номенклатуру — напрямую от штрихкода плясать.
В типовой Бухгалтерия предприятия, редакция 3.0 (3.0.53.39) кажись эта же компонента!
Только нет там описания функции «ПолучитьПараметрыПечатиШтрихкода».
(6) Да, компонента та же. Функцию я сам писал и реализована она в приложенной обработке. Целью обработки была простая печать штрихкода в любой конфигурации. Так уж вышло что у меня используется конфигурация на обычных формах, где работа с этой компонентой не реализована. Для себя делал в первую очередь для печати штрихкодов в Linux.
(7) я думал что решение с компонентой только для винды, но погуглив понял, что компонента нейтив и для линукса тоже сгодится!
Функцию я не писал, просто сформировал структуру по параметрам, которые используются! В любом случае спасибо за публикацию!
(9) На Linux X64 все работает. Последнюю версию компоненты можно посмотреть в Библиотеке стандартных подсистем.
ПодключениеВыполнено возвращает Ложь, соответственно:
: Ошибка подключения внешней компоненты печати штрихкода!
ВызватьИсключение НСтр(«ru = ‘Ошибка подключения внешней компоненты печати штрихкода!'»);
На линуксе подключаете? Если да, то проверьте установку всех необходимых модулей (Требования к рабочему месту)
(13) В справке 1С есть раздел с системными требованиями в котором описаны необходимые библиотеки.
Из основных библиотек понадобятся:
Webkitgtx 1.2.5 и выше;
ImageMagick 6.2.8 и выше;
Freetype 2.1.9 и выше;
Libgsf 1.10.1 и выше;
Glib 2.124 и выше;
Kerberos 1.4.2 и выше;
GSS-API Kerberos 1.4.2 и выше;
Microsoft Core Fonts;
UnixODBC 2.2.11 и выше для использования внешних источников данных на сервере «1С:Предприятие».
Прикрутили для вывода штрихкода на торг12. Стало раз в 5 дольше формировать по сравнению с Элемент управления 1С:Печать штрихкодов. Но нам нужно универсальное решение как для linux так и для windows. Есть рекомендации по ускорению?
Странно, у нас пользователи не жалуются на скорость. Мы уже давно перешли на этот способ формирования во всех печатных формах.
(19) у меня вопрос:
при попытке обычной компонентой сделать маленький штрих-код, сканером штрих код перестает читаться.
как с ЭТОЙ компонентой обстоят дела?
не хотелось бы скачивать то что есть.
ответьте пожалуйста, это важно, и срочно.
Этикетка маленькая. устанавливал 28.9 на 11.7 мм. то читает с трудом, то отказывается читать!
А у этой компоненты — какой минимальный размер?
(20) Это компонента от 1С. Скорее всего та же что и у Вас.
Маленькие штрихкоды обычно не читаются из-за масштабирования при печати. Если для печати используется принтер этикеток, то печатайте с помощью внутренних команд принтера. А если используете обычный принтер, то настраивайте формат печатной формы.
(22) Почему? Изображения тоже можно выводить. Только сначала нужно их загрузить в принтер этикеток используя программу производителя.
(23) Хорошенько покурив данный форум инфостарта — я нашел обработку — которая в совокупности со шрифтом «code EAN-13» — выдает нормально читаемый штрих-код, который соблюдает пропорции, и масштабируется хоть до ногтя мизинца.
Меня это полностью устраивает, сегодня буду пробовать его внедрить.
А вот лично Вам — огромная благодарность за то что не бросили, и ответили оперативно, пытаясь помочь! очень редкое и очень ценное качество.
Ценю и уважаю!
У меня УНФ на mac при печати этикеток со штрихкодами выдает след.ошибку «ошибка подключения внешней компоненты печати штрихкода »
Подскажите есть ли решение данной проблемы? поможет ли данная обработка?
а на КА 1.1 толстый клиент, конфа в режиме совместимости с Версия 8.2.13, будет работать если сама платформа 8.3.18 ?
# dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb (Чтение базы данных … на данный момент установлен 215731 файл и каталог.) Подготовка к распаковке libpng12-0_1.2.54-1ubuntu1_amd64.deb … Распаковывается libpng12-0:amd64 (1.2.54-1ubuntu1) … dpkg: ошибка при обработке архива libpng12-0_1.2.54-1ubuntu1_amd64.deb (--install): не удалось установить новую версию «/lib/x86_64-linux-gnu/libpng12.so.0»: Нет такого файла или каталога Обрабатываются триггеры для libc-bin (2.31-0ubuntu9.7) … При обработке следующих пакетов произошли ошибки: libpng12-0_1.2.54-1ubuntu1_amd64.deb