Печать этикеток в формате ZPL/EPL

Компонента для печати на принтере этикеток, подключенном к компьютеру в сети.
Обработка для формирования этикеток в формате ZPL и EPL по шаблону (1С 8.2 / Обычная форма).

Данная компонента создана для отправки данных на принетры этикеток. Другие способы отправки данных на принтер (Например с использованием команд net use и copy) не работали, в случае когда принтер был подключен к компьютеру в сети.

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

Компонента создана с использованием Native API, поэтому должна работать только на 1С 8. Тестировалась только на версии 1С предприятия 8.2. 

1. Установка и регистрация компоненты

Для работы данной компоненты необходмио наличие установленного NET.Framework 4. Скопируйте файлы из архива в каталог на локальном компьютере (Например C:AdmCOM). Регистрация компоненты в системе выполняется с помощью комнадного файла:

@ECHO OFF

REM The following directory is for .NET 4.0
set DOTNETFX2=%SystemRoot%Microsoft.NETFrameworkv4.0.30319
set PATH=%PATH%;%DOTNETFX2%

echo ---------------------------------------------------
regasm.exe C:AdmCOMVKV8MEANS.dll /codebase
echo ---------------------------------------------------
echo Done.
@pause

2. Настройка принтера для работы

Для печати на принтере с использованием команд ZPL (EPL) необходимо закачать нужные шрифты и изображения на принтер, используя ПО поставляемое с вашим принтером. Я закачиваю данные на принтеры используя программу «Zebra Designer Font and Graphics Downloader» из состава «Zebra Setup Utilities».
Предоставляем общий доступ к принтеру по сети.  
Обращение к принтеру будет осуществляться по адресу принтера: «\Имя компьютераИмя принтера» или «Имя принтера», если используется локальный принтер.

3. Подготовка этикетки для печати на принтере

Этикетка формируется в виде команд принтера для печати нужного текста и изображений.
Пример этикетки в формате ZPL:

#k8SjZc9DxkXA
#k8SjZc9DxkFO20,25
#k8SjZc9DxkA@N,10,9,E:ARI000.FNT#k8SjZc9DxkFDBosch1234 Sup#k8SjZc9DxkFS
#k8SjZc9DxkFO20,49
#k8SjZc9DxkA@N,10,9,E:ARI001.FNT#k8SjZc9DxkFDАрт.1234#k8SjZc9DxkFS
#k8SjZc9DxkFO370,49
#k8SjZc9DxkIME:RCT.GRF#k8SjZc9DxkFS
#k8SjZc9DxkFO385,49
#k8SjZc9DxkA@N,8,7,E:ARI002.FNT#k8SjZc9DxkFDМТ14#k8SjZc9DxkFS
#k8SjZc9DxkFO50,64
#k8SjZc9DxkBY4#k8SjZc9DxkBEN,70,Y,N
#k8SjZc9DxkFD4909500320241#k8SjZc9DxkFS
#k8SjZc9DxkXZ

Описывать команды ZPL и EPL не буду. Этой информации много в интернете.

Формирование этикетки производится по макету:

Макет этикетки ZPL

Где:

ТипЭлемента - Тип элемента для вывода на печать: Текст, Изображение, Штрихкод
ПозицияЛево - Позиция элемента от левого края (По умолчанию 20)
ПозицияВерх - Отступ от последнего элемента до текущей строки. Для первой строки 25.
Значение - Значение для вывода в элемента
ДополнительныеДанные - Для текста - Шрифт, Для изображения - Диск принтера, Для штрихкода - Тип штрихкода
ВысотаЭлемента - Высота элемента. Текст - высота букв в точках (По умолчанию 10), Штрихкод - Высота кода от 1 до 10.
ШиринаЭлемента - Ширина элемента в точках, по умолчанию 9
ВыводитьЕслиУказанПараметр - Если в строке есть параметр и он не заполнен, то строка не будет выведена
Отступ[Тип штрихкода] - Задается отступ для различных видов ШК

В приложенной обработке есть пример формирования этикетки и отправки на принтер. Обработка проверялась на УПП, но должна работать и на других конфигурациях.

4. Описание функций библиотеки

  •     Функция «SendRawDataStringToPrinter», («ОтправитьСтрокуДанныхНаПринтер»)

                    Описание:
                    Отправляет строку данных в порт принтера. В строке передаются команды для печати эткетки.
                    Параметры:
                        Адрес порта — Строка, Имя принтера
                        Команда — Строка, Команды для отправки на порт.
                    Возвращаемое значение:
                        Истина — Данные отправлены на печать упешно

  •     Функция «SendRawDataFileToPrinter», («ОтправитьФайлДанныхНаПринтер»)

                    Описание:
                        Отправляет файл в порт принтера. В текстовом файле передаются команды для печати этикетки.
                    Параметры:
                        Адрес порта: — Строка, Имя принтера
                        Имя файла — Имя файла для отправки на принтер.
                    Возвращаемое значение:
                        Истина — Данные отправлены на печать упешно    

  •     Функция «BackgroundSendRawDataFileToPrinter», («ФоноваяОтправкаФайлаДанныхНаПринтер»)

                    Описание:
                        Фоновая отправка файла на принтер. Компонента вернет управление 1С не дожидаясь окончания печати. Используется при отправке на печать большого числа этикеток.
                    Параметры:
                        Адрес порта: — Строка, Имя принтера
                        Имя файла — Имя файла для отправки на принтер.
                    Возвращаемое значение:
                        Истина — Данные отправлены на печать упешно

5. Пример работы с библиотекой

Отвечая на комментарии, понял что нужно все-таки выложить простенький примерчик работы с библиотекой:

ИмяПринтера = "\192.168.1.280ebra";
ЭтикеткаТовара = "#k8SjZc9DxkXA
|#k8SjZc9DxkFO20,25
|#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDНаименование товара#k8SjZc9DxkFS
|#k8SjZc9DxkFO20,49
|#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDАрт.123456789#k8SjZc9DxkFS
|#k8SjZc9DxkFO20,73
|#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDПроизводитель:Фабрика#k8SjZc9DxkFS
|#k8SjZc9DxkFO20,97
|#k8SjZc9DxkFO50,187
|#k8SjZc9DxkBY4#k8SjZc9DxkBEN,70,Y,N
|#k8SjZc9DxkFD4909500671160#k8SjZc9DxkFS
|#k8SjZc9DxkXZ";

// Для Управляемых форм сначала подключаем компоненту

//Если НЕ ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA") Тогда
//      Сообщить("Компонента печати этикеток не загружена");
//КонецЕсли;
СерверПечати = Новый("AddIn.VKV8MEA");
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
Если НЕ Результат Тогда
Сообщить("Ошибка печати этикетки");
КонецЕсли;

54 Comments

  1. mxm2

    http://infostart.ru/public/196424/ для УФ. (имитация копирования файла по сетевому пути)

    Reply
  2. Johny_v

    Это не совсем то же самое. В вашем случае идет печать на сетевой принтер с сетевым интерфейсом Ethernet.

    Моя библиотека печатает на принтеры подключенные через USB/COM/LPT к компьютеру. В том числе и по сети (Например с терминального сервера идет печать на принтеры клиентов).

    С такими принтерами нет возможности просто скопировать на них файл с этикеткой или отправить его по FTP.

    Там нужно отправлять данные в порт принтера, что и делает данная библиотека.

    И еще один плюс библиотеки — это отправка на принтер строки. Нет необходимости создавать и записывать файл, можно сразу отправить текст этикетки на принтер.

    Reply
  3. mxm2

    (2)

    В вашем случае идет печать на сетевой принтер с сетевым интерфейсом Ethernet.

    совсем не так: обработка http://infostart.ru/public/196424/ используется с принтером TSC TDP 225, подключенном к клиентскому компу через кабель USB, и настроенном как доступный по сети (вкладка Доступ). Печать возможна как с любого компа в сети, так и с терминального сервера по пути, указанному во вкладке Доступ принтера. Работает такая связка значительно быстрее чем через «родные» драйвера/компоненты (платные — не испытывались). Сама этикетка строится на том-же языке, что и у Вас, однако при этом не требует ни внешних компонент ни макетов.

    Reply
  4. Titov222

    Подскажите, пожалуйста, а где взять текст модуля СерверПечати?

    Reply
  5. Johny_v

    (4) Titov222,

    СерверПечати — Это не модуль, а объект внешней библиотеки VKV8MEANS.dll

    Создается следующим образом:

    СерверПечати = Новый(«AddIn.VKV8MEA»);

    Reply
  6. etmarket

    Поле агрегатного объекта не обнаружено (ОтправитьСтрокуДанныхНаПринтер)

    Поле агрегатного объекта не обнаружено (SendRawDataStringToPrinter)

    Поле агрегатного объекта не обнаружено (ОтправитьФайлДанныхНаПринтер)

    Поле агрегатного объекта не обнаружено (SendRawDataFileToPrinter)

    Поле агрегатного объекта не обнаружено (ФоноваяОтправкаФайлаДанныхНаПринтер)

    Поле агрегатного объекта не обнаружено (BackgroundSendRawDataFileToPrinter)

    Ваша библиотека из файла «Компонента печати этикеток на принтере» не содержит методов! Она вообще ничего не содержит! Я открывал её редактором ресурсов. Что за шарлотанство?

    Reply
  7. Johny_v

    Спасибо за выбор моей библиотеки. Она давно и успешно работает и не только у меня одного.

    Никакого шарлотанства в ней нет. Просто нужно внимательнее читать описание:

    ОтправитьСтрокуДанныхНаПринтер — Это имя функции которую необходимо вызвать.

    Пример работы:

    СерверПечати = Новый(«AddIn.VKV8MEA»);
    СерверПечати.ОтправитьСтрокуДанныхНаПринтер(«\Compebra», «#k8SjZc9DxkXA»);

    Если у Вас возникнут проблемы с этой библиотекой, пишите, постараюсь помочь.

    Reply
  8. etmarket

    (7) я всё внимательно прочитал. Создал объект «СерверПечати», аналогично приведенному примеру и вызвал его метод «ОтправитьСтрокуДанныхНаПринтер». И такого метода у объекта не существует! Как раз по причине, что я описал выше:

    Ваша библиотека из файла «Компонента печати этикеток на принтере» не содержит методов! Она вообще ничего не содержит! Я открывал её редактором ресурсов. Что за шарлотанство?

    Поэтому никакого недопонимания нет. Просто вы предлагаете людям за 1 СМ скачать «пустышку», которая ничего не делает!

    Reply
  9. Johny_v

    (8) На какой версии 1С Вы хотите работать с моей компонентой?

    Reply
  10. etmarket

    (9) не имеет значение, какой версией 1С пользоваться при создании объекта из библиотеки, хоть в приложении из Visual Studio, если для объекта отсутствует код методов. Не пудрите людям мозги!

    Reply
  11. Johny_v

    (10) Разница есть. Моя компонента построена по технологии Native API, которая поддерживается 1С, начиная с версии 1С Предприятия 8. Поэтому в 1С 7.7 она работать не будет. А вот на 8.3 я ее не тестировал, постараюсь проверить в ближайшее время.

    Компоненту здесь выкладывал по просьбе людей, которые ей тоже успешно пользуются.

    Вы первый человек, у которого возникла такая проблема с ней.

    Если Вам очень хочется что-то доказать, то прежде чем писать что это пустышка, попробуйте для начала запустить ее на платформе версии 8.2 для которой она разрабатывалась.

    Reply
  12. Johny_v

    Перезалил архив с компонентой, в которой точно все работает

    Reply
  13. LeoAndrey

    Печатаю этикетки на ZPL из 1c таким незамысловатым способом:

    Текст = Новый ЗаписьТекста(Путь,КодировкаТекста.OEM);

    Текст.Записать(Шаблон);

    Текст.Закрыть();

    Где:

    — Путь- куда отправляем текстовый код ZPL: порт принтера, сетевой путь или имя файла.

    — КодировкаТекста.OEM — у меня работает с кодировкой текста ОЕМ.

    — Шаблон — собственно текст программы на ZPL.

    Reply
  14. drat9

    (13) LeoAndrey, у меня сетевой принтер, никак не отправляет на него (нету доступа), приведите пример путь сетевой адрес+ порт + имя файла

    Reply
  15. kentavr27

    Не могу не согласиться с одним из «ораторов»… Что-то здесь не то…

    {Форма.Форма.Форма(31)}: Метод объекта не обнаружен (ОтправитьСтрокуДанныхНаПринтер)

    Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);

    В реестре присутствует (зарегилась)

    win XP, Тонкий клиент, 1С 8.3. В обычном приложении результат такой же…

    Клиентский код:

     ЭтикеткаТовара = «#k8SjZc9DxkXA
    |#k8SjZc9DxkFO20,25
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDНаименование товара#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,49
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDАрт.123456789#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,73
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDПроизводитель:Фабрика#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,97
    |#k8SjZc9DxkFO50,187
    |#k8SjZc9DxkBY4#k8SjZc9DxkBEN,70,Y,N
    |#k8SjZc9DxkFD4909500671160#k8SjZc9DxkFS
    |#k8SjZc9DxkXZ»;
    
    //СерверПечати = Новый («AddIn.VKV8MEA»);
    СерверПечати = Новый COMОбъект(«AddIn.VKV8MEA»);
    ИмяПринтера = «\192.168.20.253TSC_TDP-245»;
    Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
    Если НЕ Результат Тогда
    Сообщить(«Ошибка печати этикетки»);
    КонецЕсли;
    

    Показать

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

    Reply
  16. Johny_v

    (15) kentavr27,

    Добрый день. Какая конфигурация?

    Какой тип переменной СервисПечати?

    Reply
  17. Johny_v

    (15) kentavr27,

    Для управляемых форм необходимо сначала подключить внешнюю компоненту, а потом уже создавать объект.

     ЭтикеткаТовара = «#k8SjZc9DxkXA
    |#k8SjZc9DxkFO20,25
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDНаименование товара#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,49
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDАрт.123456789#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,73
    |#k8SjZc9DxkA@N,10,9,#k8SjZc9DxkFDПроизводитель:Фабрика#k8SjZc9DxkFS
    |#k8SjZc9DxkFO20,97
    |#k8SjZc9DxkFO50,187
    |#k8SjZc9DxkBY4#k8SjZc9DxkBEN,70,Y,N
    |#k8SjZc9DxkFD4909500671160#k8SjZc9DxkFS
    |#k8SjZc9DxkXZ»;
    
    Если НЕ ПодключитьВнешнююКомпоненту(«AddIn.VKV8MEA») Тогда
    Сообщить(«Компонента печати этикеток не загружена»);
    КонецЕсли;
    
    СерверПечати = Новый(«AddIn.VKV8MEA»);
    ИмяПринтера = «\10.10.10.234ebra1»;
    Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
    Если НЕ Результат Тогда
    Сообщить(«Ошибка печати этикетки»);
    КонецЕсли;
    

    Показать

    Reply
  18. modelmarat

    Евгений, у меня 1с предприятие 8.3 принтер godex g330, язык EZPL, отсылаю корректную строку — принтер молчит, отсылаю некорректную, принтер печатает «File not found». По всем проверкам обработка проходит успешно и в конце функция «ОтправитьСтрокуДанныхНаПринтер» выдаёт истину. Есть ли в коде компоненты какие-то модули, работоспособность которых зависит от языка принтера? Подойдёт ли она для моего принтера с языком EZPL? Я досконально не сравнивал, но есть подозрение, что это микс ZPL и EPL.

    Reply
  19. Johny_v

    Добрый день.

    Компонента просто отправляет переданные данные в порт принтера и ее работа не должна зависеть от языка программирования. Если метод ОтправитьСтрокуДанныхНаПринтер вернул Истина, то значит данные отправлены на принтер. Если принтер ничего не делает, то скорее всего не подходит формат этикетки или он ждет команды завершения этикетки аналог XZ. Попробуйте сформировать текст этикетки в программе Qlabel и отправить его. Если не поможет, то нужно изучать документацию.

    Reply
  20. modelmarat

    Я разобрался в чём загвоздка, 1C отправляет в метод ОтправитьСтрокуДанныхНаПринтер данные в формате windows 1251, а мой принтер по умолчанию принимает данные в формате UTF-8, если воспользоваться методом ОтправитьФайлДанныхНаПринтер, а файл предварительно сохранить в кодировке UTF-8 то всё получается. Однако мне интересно отправлять данные непосредственно с программы, не сохраняя их в файл. Как можно это реализовать?

    Reply
  21. LeoAndrey

    Отправляю на печать таким способом:

    Текст = Новый ЗаписьТекста(\komp1ebra, КодировкаТекста.OEM);
    Текст.Записать(Шаблон);
    Текст.Закрыть();

    ,где принтер расшареный по сети \komp1ebra

    Шаблон — текст программы на ZPL.

    Reply
  22. LeoAndrey

    Опечатка: принтер конечно в кавычках: «\komp1ebra»

    Reply
  23. LeoAndrey

    Еще как вариант можно с командной строки командой copy.

    Reply
  24. Johny_v

    Посмотрю вечером в исходниках. Может там что-то есть с кодировкой.

    Reply
  25. userAstra

    Здравствуйте!

    Работает ли компонента с «1С:Предприятие 8.3 (8.3.10.2667)»?

    И в принципе не важно какой принтер?

    мы хотим принтер Brady подцепить к 1С — там то же свой язык

    Reply
  26. Johny_v

    На этой платформе будет работать. Принтер должен поддерживать языки программирования EPL/ZPL или другие.

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

    Уточните какие языки программирования поддерживает Ваш принтер.

    Reply
  27. userAstra

    Язык называется — TSPL.

    Да мы макеты делаем посылаем на порт вручную — все нормально — печатает.

    Вопрос встал по автоматизации — подключение BRADY к 1С.

    Принципиально нет ведь разницы, что на порт принтера посылать через вашу компоненту, лишь бы принтер сам понимал?

    Reply
  28. userAstra

    И еще вопрос по правам использования вашей компоненты.

    Если мы заплатим абонентскую плату и скачаем ваши компоненты — можем свободно использовать их в своих проектах?

    Reply
  29. Johny_v

    Да, используйте где хотите. Буду рад если она Вам поможет.

    Reply
  30. Johny_v

    (27)

    Компоненте без разницы какой текст отправлять в порт принтера. Будет работать с любым языком.

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

    А вообще есть уже новая версия обработки, нормальная. Только все руки не доходят выложить ее.

    Reply
  31. userAstra

    Работаю с «1С:Предприятие 8.3 (8.3.10.2667)»

    Вызов метода «ОтправитьСтрокуДанныхНаПринтер» вызывает ошибку, см. ниже

    {Отчет.ТестПечатиЭтикеток.Форма.Форма.Форма(81)}: Ошибка при вызове метода контекста

    Результат = ОбъектПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);

    по причине: Использование синхронных методов на клиенте запрещено!

    Reply
  32. userAstra

    Разобрался

    в свойствах конфигурации в категории «Совместимость» все настраивается

    Reply
  33. Johny_v

    Да, нужно поменять «Свойства конфигурации -> Совместимость -> Режим использования синхронных вызовов»

    Reply
  34. userAstra

    Здравствуйте!

    Работаю с «1С:Предприятие 8.3 (8.3.10.2667)» . Используется термотрансферный принтер Brady. Язык принтера -TSPL.

    Метод ОтправитьСтрокуДанныхНаПринтер возвращает false.

    Это означает что компонента не видит принтер?

    Код для посылки на печать:

    Попытка
    ОбъектПечати = Новый(«AddIn.VKV8MEA»);
    Исключение
    Сообщить(«Ошибка создания объекта печати: » + ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    
    ИмяПринтера=»\192.168.0.40Brady»;
    ЭтикеткаТовара=»SIZE 50 mm, 40 mm
    |GAP 3 mm,0 mm
    |DIRECTION 0
    |CLS
    |TEXT 25,125, «»3″»,0,1,1, «»Проверка»»
    |BARCODE 25,205,»»EAN13″»,100,1,0,4,2, «»1234567890123″»
    |PRINT 1,1″;
    
    Результат = ОбъектПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
    Если НЕ Результат Тогда //Этикетка не отправлена на печать
    Сообщить(«Ошибка печати этикетки»;
    КонецЕсли;

    Показать

    Reply
  35. userAstra

    Метод ОтправитьФайлДанныхНаПринтер то же самое выдает.

    Но команда через CMD работает

    copy C:1CVKV8red.txt \192.168.0.40Brady

    Reply
  36. userAstra

    Работаю правда под XP

    Может в этом дело?

    Reply
  37. userAstra

    Вы все таки под 1C 8.3 тестировали?

    Reply
  38. Johny_v

    (34)

    Метод ОтправитьСтрокуДанныхНаПринтер возвращает false.

    Это означает что компонента не видит принтер?

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

    Reply
  39. Johny_v

    (37) Сейчас сами работаем на 1С:Предприятие 8.3 (8.3.10.2561). Правда на обычных формах. Все работает отлично.

    Reply
  40. Johny_v

    (36) На XP тоже работала.

    Reply
  41. user1005513

    Добрый день. Не удается подключить внешнюю компоненту: Результат = ПодключитьВнешнююКомпоненту(«AddIn.VKV8MEA»).

    В случае отрицательного результата выходит оповещение, что «Ошибка подключения внешней компоненты печати Zebra. Возможна печать только стандартных этикеток.». Это исправимая ошибка?

    Управление торговлей, редакция 11 (11.4.3.144), 1С:Предприятие 8.3 (8.3.11.3133).

    Reply
  42. Johny_v

    Добрый день. Завтра проверю, отпишусь.

    Reply
  43. Johny_v

    (41) Сейчас проверил код из сообщения (17), который отрабатывает нормально.

    Тестировал на 1С:Предприятие 8.3 (8.3.12.1595) и Управление торговлей, редакция 11 (11.3.3.190).

    «Ошибка подключения внешней компоненты печати Zebra» означает что 1С не может подключить компоненту.

    Может две причины:

    1. Не установлен Microsoft .NET Framework 4

    2. Не зарегистрирована компонента с помощью команды regasm (Пункт 1)

    На какой системе работаете?

    Reply
  44. mar_a
    Этикетка формируется в виде команд принтера для печати нужного текста и изображений.

    Пример этикетки в формате ZPL:

    #k8SjZc9DxkXA

    #k8SjZc9DxkFO20,25

    #k8SjZc9DxkA@N,10,9,E:ARI000.FNT#k8SjZc9DxkFDBosch1234 Sup#k8SjZc9DxkFS

    #k8SjZc9DxkFO20,49

    #k8SjZc9DxkA@N,10,9,E:ARI001.FNT#k8SjZc9DxkFDАрт.1234#k8SjZc9DxkFS

    #k8SjZc9DxkFO370,49

    #k8SjZc9DxkIME:RCT.GRF#k8SjZc9DxkFS

    #k8SjZc9DxkFO385,49

    #k8SjZc9DxkA@N,8,7,E:ARI002.FNT#k8SjZc9DxkFDМТ14#k8SjZc9DxkFS

    #k8SjZc9DxkFO50,64

    #k8SjZc9DxkBY4#k8SjZc9DxkBEN,70,Y,N

    #k8SjZc9DxkFD4909500320181#k8SjZc9DxkFS

    #k8SjZc9DxkXZ

    Показать

    Вы реально это прописывали в ручную ???

    Покоординатно???

    Ого…

    Я пользуюсь фирменной программой BarCode Label для принтера Zebra и сохраняю этот шаблон который сам спроектирую в формат ZPL , EPL, ZPL2. Этикетки получаются крутыми и информация там видна , шрифт , наклон, стили, линии идеально как надо ЗАКАЗЧИКУ

    Но координатно , я снимаю шляпу перед ВАШЕЙ настойчивостью, и пути к цели.

    Reply
  45. Johny_v

    (44)

    программой BarCode Label для принтера Zebra и сохраняю этот шаблон который сам спроектирую в формат ZPL , EPL, ZPL2. Этикетки получаются крутыми и информация там видна , шрифт , наклон, стили, линии идеально как надо ЗАКАЗЧИКУ

    Но координатно , я снимаю шляпу перед ВАШЕЙ

    Конечно в визуальном редакторе будет удобнее. У меня шаблон настраивается в 1С. Да, для каждого элемента задаются координаты, но с предварительным просмотром это проще сделать. Вот-так выглядит настройка шаблона:

    Reply
  46. mar_a

    (45)

    Это совершенно другое дело…

    Хотя в визуальном редакторе все-таки удобнее и перетаскивание работает…

    ВЫ изобрели небольшого слона, или маленький велосипед.

    Но похвально — все аккуратно и практично…

    Много времени на визуализатор ушло?

    Идея то заключалась не в создании самой этикетки в 1С, а скорее в интересном методе печати по сети не используя СЕТЕВЫЕ интерфейсы самого принтера?

    Очень смелое решение…

    Reply
  47. Johny_v

    (46)


    Идея то заключалась не в создании самой этикетки в 1С, а скорее в интересном методе печати по сети не используя СЕТЕВЫЕ интерфейсы самого принтера?

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

    Reply
  48. polukaroff

    При регистрации компоненты пишет, что «типы зарегистрированы успешно»,

    однако ПодключитьВнешнююКомпоненту(«AddIn.VKV8MEA») — не срабатывает, возвращает «ложь»

    Платформа 8.3.14.1565

    Microsoft .NET Framework 4 уже является частью этой операционной системы. Установка распространяемого пакета .NET Framework 4 не требуется.

    Куда копать?

    Reply
  49. bizdim

    Как данный метод будет работать в терминальном режиме, если принтер этикеток подключен к локальному ПК, который в свою очередь подключается через RDP к серверу с 1С?

    Как в этом случае нужно указывать принтер?

    Я думаю что запись вида:

    СерверПечати = Новый(«AddIn.VKV8MEA»);
    ИмяПринтера = «\10.10.10.234ebra1»;
    Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
    

    будет неправильной.

    Reply
  50. Johny_v

    (49)

    Как данный метод будет работать в терминальном режиме, если принтер этикеток подключен к локальному ПК, который в свою очередь подключается через RDP к серверу с 1С?

    Так же как и в локальном режиме.

    1. Открываете сетевой доступ к принтеру.

    2. Прописываете путь к нему по ip-адресу:

    ИмяПринтера = «\10.10.10.234СетевоеИмяПринтера»;

    или по имени:

    ИмяПринтера = «\MYPCСетевоеИмяПринтера»;

    Имя принтера берем из закладки «Доступ — Сетевое имя» в свойствах принтера на компьютере где он установлен.

    Reply
  51. kerimkul

    Добрый день!

    Платформа 8.3.15.1534

    Ошибка подключения внешней компоненты печати Zebra

    Reply
  52. kerimkul

    (51)

    Компонента не подключалась в Windows 7(64)

    Оказалось, что в батнике регистрации каталог Framework надо было поменять на Framework64,

    т.е. вместо содержания батника например такого:

    set DOTNETFX2=%SystemRoot%Microsoft.NETFrameworkv4.0.30319

    set PATH=%PATH%;%DOTNETFX2%

    regasm.exe C:AdmCOMVKV8MEANS.dll /codebase

    надо было сделать во так:

    set DOTNETFX2=%SystemRoot%Microsoft.NETFramework64v4.0.30319

    set PATH=%PATH%;%DOTNETFX2%

    regasm.exe C:AdmCOMVKV8MEANS.dll /codebase

    Вдруг кому поможет.

    Reply
  53. user1083957

    Евгений добрый день!

    Удалось запустить вашу компоненту для печати. С форматом ZPL разобрался и печать проходит.

    Есть вопрос относительно двустороннего обмена, в частности интересует возврат через ключ #k8SjZc9DxkHV3 TID от RFID метки, хочу ловить его в 1С или библиотека этого не предусматривает?

    И Вы демонстрировали работу редактора этикетки, тоже Ваш?

    Reply
  54. Johny_v

    (53)


    Есть вопрос относительно двустороннего обмена, в частности интересует возврат через ключ #k8SjZc9DxkHV3 TID от RFID метки, хочу ловить его в 1С или библиотека этого не предусматривает?

    И Вы демонстрировали работу редактора этикетки, тоже Ваш?

    Функционал работы с RFID не реализован. Если честно, то у меня не было таких принтеров. С моей библиотекой будет работать только печать.

    Редактор тоже мой. В планах обновить публикацию с новой обработкой (может и под управляемые формы доделать), но все никак не найду времени на это. Еще хочется компоненту на Native API переделать, чтобы без регистрации все работало.

    Reply

Leave a Comment

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