Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)

16.06.20

Задачи пользователя - Этикетки, ценники

Качественная и быстрая печать на внутреннем языке принтеров этикеток.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расширение конфигурации для печати этикеток, (cfe)
.cfe 210,79Kb
56
56 Скачать (4 SM) Купить за 2 750 руб.
Архив с компонентой ме_LabelPrinterComponent
.zip 190,20Kb
40
40 Скачать (2 SM) Купить за 2 150 руб.

С вводом маркировки товаров для многих стал актуальным вопрос печати на принтерах этикеток. К сожалению, стандартная печать этикеток через формируемый табличный документ оставляет желать лучшего как по скорости работы, так и по качеству печати. И здесь приходит на помощь печать этикеток с помощью внутренних команд принтера. Различные производители торгового оборудования включают поддержку разных языков для своих устройств, но принцип печати везде один: формируем код на встроенном языке и отправляем его на принтер.

Я уже публиковал ранее аналогичную компоненту выполненную по технологии COM. Ее главным минусом была необходимость установки .NET Framework. В ней была проблема при подключении на некоторых компьютерах, с которой я недавно столкнулся при реализации одного проекта.

В итоге была написана новая компонента на C++ по технологии Native API. Теперь ей не нужен .NET Framework и ручная регистрация в системе. Компонента позволяет печатать текст на любом принтере, установленном в системе. В новой версии был реализован только метод отправки строки на принтер. Отправкой файлов пользовались очень редко, поэтому пока решил его не реализовывать.

// Метод предназначен для отправки данных на принтер.
SendDataStringToPrinter(СистемноеИмяПринтера, ТекстДляПечати) 

В параметре "СистемноеИмяПринтера" передаем имя принтера как он называется в системе. Общий доступ к принтеру открывать не требуется. Если используется сетевой принтер, то указываем полный путь к принтеру. 

Пример использования

Для использования загружаем компоненту в общий макет вашей конфигурации. В моем примере он называется ме_LabelPrinterComponent. Формируем необходимый код этикетки и отправляем на печать через соответствующий метод компоненты. 

//Функция выполняет отправку команд на принтер этикеток через компоненту печати LabelPrinter
&НаКлиенте
Функция ОтправитьКомандыНаПринтерЭтикеток(ИмяПринтера, СписокКоманд) Экспорт
        
    КомпонентаПечати = "ОбщийМакет.мп_LabelPrinterComponent";
    Если Не ПодключитьВнешнююКомпоненту(КомпонентаПечати, "LabelPrinter") Тогда		
    	НачатьУстановкуВнешнейКомпоненты(, КомпонентаПечати);
    	Если Не ПодключитьВнешнююКомпоненту(КомпонентаПечати, "LabelPrinter") Тогда
    		ОбщегоНазначенияКлиент.СообщитьПользователю("Ошибка подключения внешней компоненты печати этикеток");
    		Возврат Ложь;
    	КонецЕсли;		
    КонецЕсли;

    Попытка
	    СерверПечати = Новый("AddIn.LabelPrinter.LabelPrinterExtension");
    Исключение
        ОбщегоНазначенияКлиент.СообщитьПользователю(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
    
	Результат = СерверПечати.SendDataStringToPrinter(ИмяПринтера, СписокКоманд);	
	
	Возврат Результат;
	
КонецФункции

Универсальное расширение конфигурации

Для компоненты сделано расширение, которое можно загрузить в любую конфигурацию. Компонента загружена в общий макет "ме_LabelPrinterComponent". При первом вызове функции 1С сама установит компоненту на компьютере пользователя. Работа поддерживается как на толстом, так и на тонком клиенте.

В модуле "ме_ПечатьЭтикеток" добавлены две функции, одна используется для отправки на печать этикетки. Вторая позволяет получить список установленных в системе принтеров. Для получения списка принтеров используется COM-объект WScript.Network. При первом вызове этого метода потребуется разрешить подключение этой библиотеки. Чтобы скрыть это уведомление отключите безопасный режим для этого расширения. 

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

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

Работа компоненты была протестирована на следующих платформах: 

  • 1С:Предприятие 8.3 (8.3.15.1700)
  • 1С:Предприятие 8.3 (8.3.16.1030)
  • 1С:Предприятие 8.3 (8.3.16.1148)

Протестировано на следующих конфигурациях: 

  • Управление торговлей, редакция 11 (11.4.8.92) 
  • Розница, редакция 2.3 (2.3.2.28)

 

Планы на развитие функционала: 

1. Добавить функцию получения списка принтеров

2. Добавить отправку на печать с получением ответа от принтера (Нужно для получения данных RFID. При наличии подходящего принтера)

 

Внимание: В текущей версии компоненты есть проблема при печати на сетевой принтер. Пока не исправил. 

 

Маркировка Принтер этикеток ZEBRA GODEX TSC ARGOX Этикетки Печать ZPL EPL TSPL EZPL GEPL TSPL-EZ

См. также

Этикетки, ценники Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Беларусь Украина Россия Управленческий учет Платные (руб)

Простая в использовании обработка для формирования и печати ценников и этикеток со штрих-кодом, с дополнительной ценой, для 1С8.х Большое разнообразие шаблонов печатных форм. Управляемая форма (Такси) + Обычный режим.

3588 руб.

11.11.2020    49319    59    46    

68

Этикетки, ценники Пользователь Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 Платные (руб)

Встроенная в конфигурации Розница 2.3 и УНФ 1.6 подсистема печати ценников по мне слишком неповоротлива и с усилиями поддается тонкой настройке, решил с нуля написать свою универсальную печать ценников для этих конфигураций.

2000 руб.

04.11.2019    29118    115    87    

54

Логистика, склад и ТМЦ Этикетки, ценники Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Абонемент ($m)

Выводит при печати этикетки складской ячейки в качестве штрихкода адрес ячейки вместо уникального идентификатора

1 стартмани

20.06.2024    947    2    Alexei_Siva    4    

6

Этикетки, ценники Программист Мобильная платформа Бесплатно (free)

Печать этикеток на принтер WiFi без драйвера.

20.01.2023    2440    aldar    0    

9

Этикетки, ценники Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Абонемент ($m)

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

2 стартмани

03.01.2023    3923    29    AndreyPonom    7    

11

Этикетки, ценники Пользователь Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Управленческий учет Абонемент ($m)

Архив с экспортными шаблонами этикеток (ценников) формата 58х40. Для тех, кто не хочет сам рисовать их.

3 стартмани

04.05.2022    15062    53    aximo    3    

12

Этикетки, ценники Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Описан механизм создания этикетки для термопринтера ТSC TDP-225 в подробностях. Приложен XML-файл с самим шаблоном.

1 стартмани

01.05.2022    13096    7    zemskov    7    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. iliabvf 08.02.20 16:22 Сейчас в теме
Это конечно все прекрасно, но тоже самое можно осуществить отправкой файла ZPL на порт принтера 9100 с помощью встроенных в 1С функций HTTP, но ответа вы не дождетесь.

Вот если бы ваша компонента возвращала ответ от принтера...

Из статьи не понятно если можно работать с сетевым принтером.
И если уж быть совсем наглым, могли бы опубликовать исходники на C++, или хотябы частично рассказать, удачи.
2. Johny_v 140 08.02.20 20:47 Сейчас в теме
(1)
но тоже самое можно осуществить отправкой файла ZPL на порт принтера 9100 с помощью встроенных в 1С функций HTTP

Можно еще пару способов использовать, программист сам решает какой способ выбрать. Я просто поделился своим решением с другими участниками и не претендую на "Премию за открытие в области печати этикеток из 1С".
Вот если бы ваша компонента возвращала ответ от принтера...

В планах есть это реализовать, осталось найти подходящий сетевой принтер.
Из статьи не понятно если можно работать с сетевым принтером.

Можно
могли бы опубликовать исходники на C++

Мог бы, но пока решил этого не делать. И Вам удачи!
3. iliabvf 09.02.20 11:28 Сейчас в теме
4. KAV2 156 02.03.20 16:36 Сейчас в теме
Есть ли поддержка Android?
5. Johny_v 140 02.03.20 17:54 Сейчас в теме
(4)Нет. Пока только Windows. Для linux и android компоненту не собирал. Может сделаю, как появится свободное время.
6. egv62 15.09.20 17:47 Сейчас в теме
Добрый вечер! Скачал компоненту. Код этикетки - "^XA^LRY^FO25,160^GB0,200,600^FS^LRN^XZ". Принтер в терминале пробрасывается с клиента. Подключен по USB. В задании печати я вижу что что-то попадает и пропадает, но печати не происходит. Поможете разобраться?
14. user1703190 21.11.21 18:40 Сейчас в теме
(6)Здравствуйте! У меня такая же проблема, но с сетевым принтером. Подскажите Вам удалось решить проблему?
22. user1050439 7 16.11.23 22:27 Сейчас в теме
(6) У меня такое же происходит когда пытаюсь печатать WIndows-ным файлом RawPrint.exe (можно найти на сайте Microsoft). Мне кажется нужно попытаться изменить настройки самого установленного принтера USB (хотя для моего TSC TE200 это пока не сработало, ищу возможность более глубокой настройки его, испробовал не все идущие с ним утилиты еще). Как варианты:
1. В самом драйвере отключить печать в очередь печати и установить "печать напрямую"
2. В самом драйвере в дополнительных настройках указать "разрешить пропуск текста" и указать префикс и постфикс для вашего текстового файла с кодом ZPL или какой там у вас.
3. Прикрутить на !тот же! порт "Generic / Text only" драйвер и установить у него печать напрямую -- выводить уже через него.
7. korefano 20 06.10.20 08:40 Сейчас в теме
Добрый день
Возникла проблема с русским языком.
Отправляю:
CT~~CD,~CC^~CT~
^XA
~TA000
~JSN
^LT0
^MNW
^PMN
^CI27
^XZ
^XA
^MMT
^PW709
^LL709
^LS0
^FT79,165^A*N,82,83,TT0003M_^FH\^CI28^FDЭтикетка №2^FS^CI27
^BY2,2,53^FT192,313^BEN,,Y,N
^FH\^FD4650100640147^FS
^PQ1,0,1,Y
^XZ


Русский текст не выводится. Если отправить по ftp, все печатает. В чем причина?
8. korefano 20 06.10.20 11:19 Сейчас в теме
(7)
Русский текст не выводится. Если отправить по ftp, все печатает. В чем причина?


Проблема в при отправки в кодировке

Надо ^CI33 вместо ^CI28
Sombreone; Johny_v; +2 Ответить
9. Johny_v 140 06.10.20 21:57 Сейчас в теме
(7) Это решается загрузкой шрифтов в принтер или указанием другого шрифта.
10. korefano 20 07.10.20 06:39 Сейчас в теме
(9)
Это решается загрузкой шрифтов в принтер или указанием другого шрифта.

Шрифт загружен и указан.
Вот строчка, где указывается шрифт
^FT79,165^A*N,82,83,TT0003M_^FH\^CI28^FDЭтикетка №2^FS^CI27


Это проблема передачи. По ftp этой проблемы нет
Но решение с ^CI33 работает отлично. С кодом 33 также без ошибок передается и по ftp
11. booblich 19.10.20 10:16 Сейчас в теме
Добрый день! Как на сегодняшний день обстоят дела с работой с сетевым принтером и получением ответа от принтера?
Как происходит первоначальное формирование макета этикетки, есть ли в расширении какой-то редактор макета?
12. Johny_v 140 20.10.20 08:00 Сейчас в теме
(11) Добрый день! Никак, у меня нет подходящего принтера.
Для быстрого формирования в этой публикации тоже нет готового редактора. У меня была разработка для обычных форм, но на УФ так и не переделал ее.
13. user1548869 19.02.21 13:45 Сейчас в теме
Добрый день. Хотелось бы задать несколько вопросов о возможности интеграции 1С 8.3. желательно в личку.
15. pavelmael 10 18.01.22 15:35 Сейчас в теме
День добрый.

Не удалось найти RFID принтер? или забросили идею?
16. Johny_v 140 18.01.22 23:42 Сейчас в теме
(15) Нет. К таким не было доступа.
17. user1738869 04.02.22 15:01 Сейчас в теме
Евгений, добрый день, как с вами можно связаться?
18. Chronic 26.11.22 18:11 Сейчас в теме
Добрый день, Евгений
Могли бы вы выложить исходники? Не обязательно бесплатно.
19. korefano 20 25.01.23 10:52 Сейчас в теме
Добрый день. В чем лучше получить код этикетки для притеров TSC?
20. ka3a4ok 29.03.23 09:55 Сейчас в теме
День добрый! разрядность компоненты какая? на сервере x64 будет работать?
21. user1050439 7 16.11.23 22:15 Сейчас в теме
Чтобы выводилось на TSC TE200, который у вас на скрине в списке, вы как настроили драйвер TSC, разрешили транзитную печать с пропуском текста {{<Код ZPL>}} и установили печать напрямую?
23. Prooa 39 08.02.24 09:30 Сейчас в теме
Здравствуйте
использовали вашу компоненту, все было ок.
Обновили платформу до 8.3.23.2040 и тут стали вылетать ошибки вида:
Тип не определен (AddIn.LabelPrinter.LabelPrinterExtension)

Печатаем как с сервера так и с клиента, помогает:
если с сервера - ребут агента
если с клиента - перезайти в программу

На последнем релизе (8.3.24.1368) тоже самое.
Что может быть?
Оставьте свое сообщение