Печать этикеток в формате ZPL/EPL
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Данная компонента создана для отправки данных на принетры этикеток. Другие способы отправки данных на принтер (Например с использованием команд net use и copy) не работали, в случае когда принтер был подключен к компьютеру в сети.
Данный способ позволяет быстро выводить на печать этикетки, используя команды обрабатываемые принтером.
Компонента создана с использованием COM, работает на 1С версии 8.1 и выше. Тестировалась только на версии 1С предприятия 8.2, 8.3 в том числе на управляемых формах.
Внимание: Вышла новая Native-API компонента для печати этикеток. Рекомендуется использовать ее для своих проектов. Подробнее в публикации: //infostart.ru/public/1188440/
1. Установка и регистрация компоненты
Для работы данной компоненты необходимо наличие установленного NET.Framework 4. Скопируйте файлы из архива в каталог на локальном компьютере (Например C:\Adm\COM\). Регистрация компоненты в системе выполняется с помощью командного файла:
@ECHO OFF
REM The following directory is for .NET 4.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%
echo ---------------------------------------------------
regasm.exe C:\Adm\COM\VKV8MEANS.dll /codebase
echo ---------------------------------------------------
echo Done.
@pause
Обратите внимание на путь к каталогу NET Framework. Для вашей системы он может быть другой.
2. Настройка принтера для работы
Для печати на принтере с использованием команд ZPL (EPL) необходимо закачать нужные шрифты и изображения на принтер, используя ПО поставляемое с вашим принтером. Я закачиваю данные на принтеры используя программу "Zebra Designer Font and Graphics Downloader" из состава "Zebra Setup Utilities".
Предоставляем общий доступ к принтеру по сети.
Обращение к принтеру будет осуществляться по адресу принтера: "\\Имя компьютера\Имя принтера" или "Имя принтера", если используется локальный принтер.
3. Подготовка этикетки для печати на принтере
Этикетка формируется в виде команд принтера для печати нужного текста и изображений.
Пример этикетки в формате ZPL:
^XA
^FO20,25
^A@N,10,9,E:ARI000.FNT^FDBosch1234 Sup^FS
^FO20,49
^A@N,10,9,E:ARI001.FNT^FDАрт.1234^FS
^FO370,49
^IME:RCT.GRF^FS
^FO385,49
^A@N,8,7,E:ARI002.FNT^FDМТ14^FS
^FO50,64
^BY4^BEN,70,Y,N
^FD4909500320181^FS
^XZ
Описывать команды ZPL и EPL не буду. Этой информации много в интернете.
Формирование этикетки производится по макету:

Где:
ТипЭлемента - Тип элемента для вывода на печать: Текст, Изображение, Штрихкод
ПозицияЛево - Позиция элемента от левого края (По умолчанию 20)
ПозицияВерх - Отступ от последнего элемента до текущей строки. Для первой строки 25.
Значение - Значение для вывода в элемента
ДополнительныеДанные - Для текста - Шрифт, Для изображения - Диск принтера, Для штрихкода - Тип штрихкода
ВысотаЭлемента - Высота элемента. Текст - высота букв в точках (По умолчанию 10), Штрихкод - Высота кода от 1 до 10.
ШиринаЭлемента - Ширина элемента в точках, по умолчанию 9
ВыводитьЕслиУказанПараметр - Если в строке есть параметр и он не заполнен, то строка не будет выведена
Отступ[Тип штрихкода] - Задается отступ для различных видов ШК
В приложенной обработке есть пример формирования этикетки и отправки на принтер. Обработка проверялась на УПП, но должна работать и на других конфигурациях.
4. Описание функций библиотеки
-
Функция "SendRawDataStringToPrinter", ("ОтправитьСтрокуДанныхНаПринтер")
Описание:
Отправляет строку данных в порт принтера. В строке передаются команды для печати эткетки.
Параметры:
Адрес порта - Строка, Имя принтера
Команда - Строка, Команды для отправки на порт.
Возвращаемое значение:
Истина - Данные отправлены на печать упешно
-
Функция "SendRawDataFileToPrinter", ("ОтправитьФайлДанныхНаПринтер")
Описание:
Отправляет файл в порт принтера. В текстовом файле передаются команды для печати этикетки.
Параметры:
Адрес порта: - Строка, Имя принтера
Имя файла - Имя файла для отправки на принтер.
Возвращаемое значение:
Истина - Данные отправлены на печать упешно
-
Функция "BackgroundSendRawDataFileToPrinter", ("ФоноваяОтправкаФайлаДанныхНаПринтер")
Описание:
Фоновая отправка файла на принтер. Компонента вернет управление 1С не дожидаясь окончания печати. Используется при отправке на печать большого числа этикеток.
Параметры:
Адрес порта: - Строка, Имя принтера
Имя файла - Имя файла для отправки на принтер.
Возвращаемое значение:
Истина - Данные отправлены на печать упешно
5. Пример работы с библиотекой
Отвечая на комментарии, понял что нужно все-таки выложить простенький примерчик работы с библиотекой:
ИмяПринтера = "\\192.168.1.280\Zebra";
//ИмяПринтера = "Zebra TLP2824"; //Можно указывать системное имя принтера
ЭтикеткаТовара = "^XA
|^FO20,25
|^A@N,10,9,^FDНаименование товара^FS
|^FO20,49
|^A@N,10,9,^FDАрт.123456789^FS
|^FO20,73
|^A@N,10,9,^FDПроизводитель:Фабрика^FS
|^FO20,97
|^FO50,187
|^BY4^BEN,70,Y,N
|^FD4909500671160^FS
|^XZ";
// Для Управляемых форм сначала подключаем компоненту
Если НЕ ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA") Тогда
Сообщить("Компонента печати этикеток не загружена");
Возврат;
КонецЕсли;
СерверПечати = Новый("AddIn.VKV8MEA");
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
Если НЕ Результат Тогда
Сообщить("Ошибка печати этикетки");
КонецЕсли;
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Этикетки, ценники Разработчик Аналитик Пользователь Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)
Вы работаете с маркируемым товаром и торговые сети требуют GTIN на этикетке? В типовых 1С:УТ, УНФ, КА и ERP вывести второй штрихкод нельзя — печатается только код маркировки DataMatrix. Наше расширение добавляет к нему штрихкод GTIN рядом с DataMatrix: формат EAN-13 (без лидирующего нуля) или GS1-128 / EAN-128 (с лидирующим нулём) выбирается в макете этикетки. Установка — 15 минут, конфигурация остаётся на поддержке, доработок не требуется. Код открыт — легко адаптировать под свою конфигурацию. Подключите расширение — и GTIN появится на ваших этикетках в день установки.
5490 руб.
09.06.2021 22044 46 21
Разное Оптовая торговля Розничная торговля Этикетки, ценники 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Платные (руб)
Внутренняя Маркировка продукции «Перекресток»
23180 руб.
01.08.2025 3569 5 0
Разработка внешних компонент Телефония, SIP Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)
5246 руб.
04.05.2018 52186 128 68
Разработка внешних компонент Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)
Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).
5084 руб.
12.05.2020 34941 147 100
Разработка внешних компонент Системный администратор Разработчик Стажер Бесплатно (free)
Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!
14.01.2025 8217 bayselonarrend 17
Разработка внешних компонент Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.
04.12.2024 13793 kovalevdmv 29
Разработка внешних компонент Разработчик 1С:Предприятие 8 Бесплатно (free)
А давайте запилим 8.3.26 до релиза, или оповещение с сервера...
19.02.2024 13194 starik-2005 39
Разработка внешних компонент Механизмы платформы 1С Разработчик Стажер 1С:Предприятие 8 Бесплатно (free)
Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.
26.01.2024 13333 starik-2005 40
Моя библиотека печатает на принтеры подключенные через USB/COM/LPT к компьютеру. В том числе и по сети (Например с терминального сервера идет печать на принтеры клиентов).
С такими принтерами нет возможности просто скопировать на них файл с этикеткой или отправить его по FTP.
Там нужно отправлять данные в порт принтера, что и делает данная библиотека.
И еще один плюс библиотеки - это отправка на принтер строки. Нет необходимости создавать и записывать файл, можно сразу отправить текст этикетки на принтер.
совсем не так: обработка используется с принтером TSC TDP 225, подключенном к клиентскому компу через кабель USB, и настроенном как доступный по сети (вкладка Доступ). Печать возможна как с любого компа в сети, так и с терминального сервера по пути, указанному во вкладке Доступ принтера. Работает такая связка значительно быстрее чем через "родные" драйвера/компоненты (платные - не испытывались). Сама этикетка строится на том-же языке, что и у Вас, однако при этом не требует ни внешних компонент ни макетов.
Поле агрегатного объекта не обнаружено (SendRawDataStringToPrinter)
Поле агрегатного объекта не обнаружено (ОтправитьФайлДанныхНаПринтер)
Поле агрегатного объекта не обнаружено (SendRawDataFileToPrinter)
Поле агрегатного объекта не обнаружено (ФоноваяОтправкаФайлаДанныхНаПринтер)
Поле агрегатного объекта не обнаружено (BackgroundSendRawDataFileToPrinter)
Ваша библиотека из файла "Компонента печати этикеток на принтере" не содержит методов! Она вообще ничего не содержит! Я открывал её редактором ресурсов. Что за шарлотанство?
Никакого шарлотанства в ней нет. Просто нужно внимательнее читать описание:
ОтправитьСтрокуДанныхНаПринтер - Это имя функции которую необходимо вызвать.
Пример работы:
СерверПечати = Новый("AddIn.VKV8MEA");
СерверПечати.ОтправитьСтрокуДанныхНаПринтер("\\Comp\Zebra", "^XA");Если у Вас возникнут проблемы с этой библиотекой, пишите, постараюсь помочь.
Поэтому никакого недопонимания нет. Просто вы предлагаете людям за 1 СМ скачать "пустышку", которая ничего не делает!
Компоненту здесь выкладывал по просьбе людей, которые ей тоже успешно пользуются.
Вы первый человек, у которого возникла такая проблема с ней.
Если Вам очень хочется что-то доказать, то прежде чем писать что это пустышка, попробуйте для начала запустить ее на платформе версии 8.2 для которой она разрабатывалась.
Текст = Новый ЗаписьТекста(Путь,КодировкаТекста.OEM);
Текст.Записать(Шаблон);
Текст.Закрыть();
Где:
- Путь- куда отправляем текстовый код ZPL: порт принтера, сетевой путь или имя файла.
- КодировкаТекста.OEM - у меня работает с кодировкой текста ОЕМ.
- Шаблон - собственно текст программы на ZPL.
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
В реестре присутствует (зарегилась)
win XP, Тонкий клиент, 1С 8.3. В обычном приложении результат такой же...
Клиентский код:
ЭтикеткаТовара = "^XA
|^FO20,25
|^A@N,10,9,^FDНаименование товара^FS
|^FO20,49
|^A@N,10,9,^FDАрт.123456789^FS
|^FO20,73
|^A@N,10,9,^FDПроизводитель:Фабрика^FS
|^FO20,97
|^FO50,187
|^BY4^BEN,70,Y,N
|^FD4909500671160^FS
|^XZ";
//СерверПечати = Новый ("AddIn.VKV8MEA");
СерверПечати = Новый COMОбъект("AddIn.VKV8MEA");
ИмяПринтера = "\\192.168.20.253\TSC_TDP-245";
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
Если НЕ Результат Тогда
Сообщить("Ошибка печати этикетки");
КонецЕсли;
ПоказатьНа любой из приведенных методов -- ругается. Так все же, где собака порылась?
Для управляемых форм необходимо сначала подключить внешнюю компоненту, а потом уже создавать объект.
ЭтикеткаТовара = "^XA
|^FO20,25
|^A@N,10,9,^FDНаименование товара^FS
|^FO20,49
|^A@N,10,9,^FDАрт.123456789^FS
|^FO20,73
|^A@N,10,9,^FDПроизводитель:Фабрика^FS
|^FO20,97
|^FO50,187
|^BY4^BEN,70,Y,N
|^FD4909500671160^FS
|^XZ";
Если НЕ ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA") Тогда
Сообщить("Компонента печати этикеток не загружена");
КонецЕсли;
СерверПечати = Новый("AddIn.VKV8MEA");
ИмяПринтера = "\\10.10.10.234\Zebra1";
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
Если НЕ Результат Тогда
Сообщить("Ошибка печати этикетки");
КонецЕсли;
ПоказатьКомпонента просто отправляет переданные данные в порт принтера и ее работа не должна зависеть от языка программирования. Если метод ОтправитьСтрокуДанныхНаПринтер вернул Истина, то значит данные отправлены на принтер. Если принтер ничего не делает, то скорее всего не подходит формат этикетки или он ждет команды завершения этикетки аналог XZ. Попробуйте сформировать текст этикетки в программе Qlabel и отправить его. Если не поможет, то нужно изучать документацию.
Текст = Новый ЗаписьТекста(\\komp1\Zebra, КодировкаТекста.OEM);
Текст.Записать(Шаблон);
Текст.Закрыть();,где принтер расшареный по сети \\komp1\Zebra
Шаблон - текст программы на ZPL.
Андрей, подскажите пожалуйста, такой метод подходит только для принтеров подключенных через USB или для сетевых тоже так можно отправку организовать?
через команду copy у меня не отправляется сам файл. Подскажите, возможно в коде трабла?
КомандаОтправить.ДобавитьСтроку("copy "+ ИмяФайла + " АдресПринтера" );
результат в bat файле:
copy D:\1C\PUBID_240798-VKV8\TEMP\zpl.txt 9100 \\10.84.50.41\D2J191401
Добрый день!
У меня в системе печати этикеток более 10 принтеров Zebra. Все расшарены по сети. К компу подключены по COM, LPT и USB портам.
На печать отправляю следующими командами из 1с:
Текст = Новый ЗаписьТекста("\\komp1\Zebra", КодировкаТекста.OEM);
Текст.Записать(Шаблон);
Текст.Закрыть();
"\\komp1\Zebra" - принтер в сети, у вас "\\10.84.50.41\D2J191401"
КодировкаТекста.OEM - задаю кодировку текста, это важно! Скорее всего у вас файл в неправильной кодировке и принтер не будет его воспринимать как набор команд к печати.
Шаблон - текст программы на языке ZPL. Можно и на другом языке вашего принтера (у меня, например, есть принтер чеков на языке ESC/pos. На него отправляю этим же способом).
Еще один плюс для меня, как разработчика - собственное развитие и расширение кругозора. Иногда полезно выходить за рамки 1С, когда нет явных решений или не устраивает их производительность. Например, как с внешними источниками данными и ADO.
Сделать ВК - это полезно, но работа с принтером возможна и без подключенного сетевого принтера - просто "COPY /b text.txt prn"
Просто иногда нам кажется, что нужно сделать что-то, используя базу данных. Но в действительности для множества проблем NoSQL куда эффективнее (и я сейчас не о девопсовском носкуле говорю, а вообще о том, что часто база данных и не нужна - достаточно простых файлов в файловой системе, а иногда и они не нужны).
По принтерам Brady я не нашел информацию о поддерживаемых языках, поэтому компонента может быть бесполезной для Вас.
Уточните какие языки программирования поддерживает Ваш принтер.
Да мы макеты делаем посылаем на порт вручную - все нормально - печатает.
Вопрос встал по автоматизации - подключение BRADY к 1С.
Принципиально нет ведь разницы, что на порт принтера посылать через вашу компоненту, лишь бы принтер сам понимал?
Компоненте без разницы какой текст отправлять в порт принтера. Будет работать с любым языком.
Просто если язык не поддерживается, то принтер не будет реагировать на команды или реагировать не должным образом.
А вообще есть уже новая версия обработки, нормальная. Только все руки не доходят выложить ее.
Вызов метода "ОтправитьСтрокуДанныхНаПринтер" вызывает ошибку, см. ниже
{Отчет.ТестПечатиЭтикеток.Форма.Форма.Форма(81)}: Ошибка при вызове метода контекста
Результат = ОбъектПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
по причине: Использование синхронных методов на клиенте запрещено!
Работаю с "1С:Предприятие 8.3 (8.3.10.2667)" . Используется термотрансферный принтер Brady. Язык принтера -TSPL.
Метод ОтправитьСтрокуДанныхНаПринтер возвращает false.
Это означает что компонента не видит принтер?
Код для посылки на печать:
Попытка
ОбъектПечати = Новый("AddIn.VKV8MEA");
Исключение
Сообщить("Ошибка создания объекта печати: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
ИмяПринтера="\\192.168.0.40\Brady";
ЭтикеткаТовара="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";
Результат = ОбъектПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
Если НЕ Результат Тогда //Этикетка не отправлена на печать
Сообщить("Ошибка печати этикетки";
КонецЕсли; ПоказатьЭто означает что компонента не видит принтер?
Означает что компонента не может отправить данные в порт принтера. Причин много может быть. Неправильно указан адрес принтера, Нет доступа - Попробуйте открыть общий доступ к принтеру. Если отправка идет на сетевой принтер, попробуйте добавить его в системе в Принтеры с родным драйвером и отправлять на него как //Имя локального компьютера/Имя принтера, хотя должно и по сетевому адресу все работать.
В случае отрицательного результата выходит оповещение, что "Ошибка подключения внешней компоненты печати Zebra. Возможна печать только стандартных этикеток.". Это исправимая ошибка?
Управление торговлей, редакция 11 (11.4.3.144), 1С:Предприятие 8.3 (8.3.11.3133).
Тестировал на 1С:Предприятие 8.3 (8.3.12.1595) и Управление торговлей, редакция 11 (11.3.3.190).
"Ошибка подключения внешней компоненты печати Zebra" означает что 1С не может подключить компоненту.
Может две причины:
1. Не установлен Microsoft .NET Framework 4
2. Не зарегистрирована компонента с помощью команды regasm (Пункт 1)
На какой системе работаете?
Пример этикетки в формате ZPL:
^XA
^FO20,25
^A@N,10,9,E:ARI000.FNT^FDBosch1234 Sup^FS
^FO20,49
^A@N,10,9,E:ARI001.FNT^FDАрт.1234^FS
^FO370,49
^IME:RCT.GRF^FS
^FO385,49
^A@N,8,7,E:ARI002.FNT^FDМТ14^FS
^FO50,64
^BY4^BEN,70,Y,N
^FD4909500320181^FS
^XZ
Вы реально это прописывали в ручную ???
Покоординатно???
Ого...
Я пользуюсь фирменной программой BarCode Label для принтера Zebra и сохраняю этот шаблон который сам спроектирую в формат ZPL , EPL, ZPL2. Этикетки получаются крутыми и информация там видна , шрифт , наклон, стили, линии идеально как надо ЗАКАЗЧИКУ
Но координатно , я снимаю шляпу перед ВАШЕЙ настойчивостью, и пути к цели.
Но координатно , я снимаю шляпу перед ВАШЕЙ
Конечно в визуальном редакторе будет удобнее. У меня шаблон настраивается в 1С. Да, для каждого элемента задаются координаты, но с предварительным просмотром это проще сделать. Вот-так выглядит настройка шаблона:
Это совершенно другое дело...
Хотя в визуальном редакторе все-таки удобнее и перетаскивание работает...
ВЫ изобрели небольшого слона, или маленький велосипед.
Но похвально - все аккуратно и практично...
Много времени на визуализатор ушло?
Идея то заключалась не в создании самой этикетки в 1С, а скорее в интересном методе печати по сети не используя СЕТЕВЫЕ интерфейсы самого принтера?
Очень смелое решение...
Идея то заключалась не в создании самой этикетки в 1С, а скорее в интересном методе печати по сети не используя СЕТЕВЫЕ интерфейсы самого принтера?
В принтерах которые у нас стоят, нет сетевых интерфейсов. Поэтому пришлось немного изобретать. Делалось это лет 6 назад, тогда это было самым удобным найденным решением. Сейчас может что-то и лучше найдется (я не уверен). У меня все хорошо работает в течении этого времени, поэтому ничего менять пока не планируется.
Не нашел в ваших публикациях эту обработку. Ее можно как-то получить?
однако ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA") - не срабатывает, возвращает "ложь"
Платформа 8.3.14.1565
Microsoft .NET Framework 4 уже является частью этой операционной системы. Установка распространяемого пакета .NET Framework 4 не требуется.
Куда копать?
Как в этом случае нужно указывать принтер?
Я думаю что запись вида:
СерверПечати = Новый("AddIn.VKV8MEA");
ИмяПринтера = "\\10.10.10.234\Zebra1";
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
будет неправильной.
Так же как и в локальном режиме.
1. Открываете сетевой доступ к принтеру.
2. Прописываете путь к нему по ip-адресу:
ИмяПринтера = "\\10.10.10.234\СетевоеИмяПринтера";или по имени:
ИмяПринтера = "\\MYPC\СетевоеИмяПринтера";Имя принтера берем из закладки "Доступ - Сетевое имя" в свойствах принтера на компьютере где он установлен.
Компонента не подключалась в Windows 7(64)
Оказалось, что в батнике регистрации каталог Framework надо было поменять на Framework64,
т.е. вместо содержания батника например такого:
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%
regasm.exe C:\Adm\COM\VKV8MEANS.dll /codebase
надо было сделать во так:
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%
regasm.exe C:\Adm\COM\VKV8MEANS.dll /codebase
Вдруг кому поможет.
Удалось запустить вашу компоненту для печати. С форматом ZPL разобрался и печать проходит.
Есть вопрос относительно двустороннего обмена, в частности интересует возврат через ключ ^HV3 TID от RFID метки, хочу ловить его в 1С или библиотека этого не предусматривает?
И Вы демонстрировали работу редактора этикетки, тоже Ваш?
Есть вопрос относительно двустороннего обмена, в частности интересует возврат через ключ ^HV3 TID от RFID метки, хочу ловить его в 1С или библиотека этого не предусматривает?
И Вы демонстрировали работу редактора этикетки, тоже Ваш?
Функционал работы с RFID не реализован. Если честно, то у меня не было таких принтеров. С моей библиотекой будет работать только печать.
Редактор тоже мой. В планах обновить публикацию с новой обработкой (может и под управляемые формы доделать), но все никак не найду времени на это. Еще хочется компоненту на Native API переделать, чтобы без регистрации все работало.
конфигурация УПП платформа (8.3.10.2580). работает по RDP. \\10.84.20.61\D54221807 Zebra принтер сетевой. получаю ошибку:
{ВнешняяОбработка.ПечатьЭтикеток.МодульОбъекта(429)}: Значение не является значением объектного типа (ОтправитьСтрокуДанныхНаПринтер)
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара);
в чем может быть проблема?
Результат = СерверПечати.ОтправитьСтрокуДанныхНаПринтер(ИмяПринтера, ЭтикеткаТовара)
Это значит что "СерверПечати = Неопределено". Не подключилась компонента или она не зарегистрирована.
Все делал по инструкции, запустил .bat файл от админа, получил сообщение:
---------------------------------------------------
Microsoft .NET Framework Assembly Registration Utility version 4.7.3062.0
for Microsoft .NET Framework version 4.7.3062.0
Copyright © Microsoft Corporation. All rights reserved.
Types registered successfully
---------------------------------------------------
Done.
Press any key to continue . . .
компоненту только через bat файл регистрировать. правильно ? или еще какие-то способ есть?
---------------------------------------------------
Done.
Press any key to continue . . .
компоненту только через bat файл регистрировать. правильно ? или еще какие-то способ ес
Других способов регистрации нет.
Недавно была такая проблема на одном сервере, но я не стал разбираться с ней. Написал новую компоненту на c++, по технологии Native API. Давно хотел это сделать. Работает без всяких .NET-фреймворков и 1С-кой автоматом подгружается. Правда пока только под виндой скомпилировал.
Могу выложить, если сильно надо.
если для Вас не составит труда, поделиться компонентой, буду очень благодарен. а то застрял
64-битная то надо в батнике путь исправить
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319
регистрация прошла успешно.
проверяю
Если НЕ ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA";) Тогда
Сообщить("Компонента печати этикеток не загружена";);
КонецЕсли;ПодключитьВнешнююКомпоненту("AddIn.VKV8MEA";); возвращает Истина
а вот
СерверПечати = Новый("AddIn.VKV8MEA";); возвращает Неопределено
Вопрос почему? если ВнешняяКомпонента возвращает значение Истина
Формируете временный файл ZPL - и батником его на принтер кидаете, больше ничего не нужно
ИначеЕсли ТипЗнч(Документ) = Тип("ТекстовыйДокумент") Тогда
ВременныйФайл = ЗагрузитьТабличныйДокументВоВременныйФайлZPL(Документ);
ИмяПринтера = Принтер.ИмяПринтераВСистеме;
НапечататьЧерезZPL(ВременныйФайл, ИмяПринтера, КоличествоКопий);
КонецЕсли;
Процедура НапечататьЧерезZPL(ВременныйФайл, ИмяПринтера, КоличествоКопий)
ШаблонКоманднойСтроки = "copy ""%1"" ""%2""";
КоманднаяСтрока = СтрШаблон(ШаблонКоманднойСтроки, ВременныйФайл, ИмяПринтера);
#Если Сервер ИЛИ ВнешнееСоединение Тогда
ФайловаяСистема.ЗапуститьПрограмму(КоманднаяСтрока);
#Иначе
ФайловаяСистемаКлиент.ЗапуститьПрограмму(КоманднаяСтрока);
#КонецЕсли
КонецПроцедуры ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 240798
Создание 12.12.13 15:39
Обновление 01.02.20 23:38
Просмотры 71996
Загрузки 150
Рейтинг
17
Комментарии 78
Код открыт Да
Рубрики Разработка внешних компонент Этикетки, ценники
Кому Разработчик
Тип файла Архив с данными
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)