#0
by -Ze-
Кто сталкивался, объясните, каким образом можно передавать код EPL на принтер? Я думал, что должен быть COM-компонент, предоставляемый производителем, но для своего принтера найти таковой не смог. На этом форуме видел, люди писали о каком то методе "через COPY", это было бы даже лучше, меньше промежуточного кода. Растолкуйте пожалуйста, как это организовывается, и если может еще есть способы. Спасибо.
#1
by SIF
хм. если правильно понял. сначала формируешь файл с командами, потом копируешь его в порт куда подключен принтер (lpt1, com1..n). "copy файл lpt1" например.
#3
by -Ze-
Ага, в принципе понятно. Только вопрос: как с USB-подключением такое организовать? На USB мы же не можем тупо слать "поток байт"...
#6
by -Ze-
Еще вопрос. В данный момент это надо делать из кода 1С:Предприятие 8, у которого есть два стандартных метода для вызова приложений: 1. КомандаСистемы. 2. ЗапуститьПриложение. Нужно сделать, печать выполнялась в фоне для пользователя(т.е. чтобы пользователю не выскакивало окно командного интерпретатора Windows). Через ЗапуститьПриложение у меня ничего не получилось, так как в этом случае вызов идет минуя командный интерпретатор. Команда системы отлично выполняет команду "copy con LPT3", но как передать текст (сэмулировать ручной ввод текста для con) - непонятно. SIF писал: "сначала формируешь файл с командами, потом копируешь его в порт", но чтобы создать файл - опять же, надо использовать copy con! С нетерпением жду советов.
#7
by Torquader
А слабо написать ActiveX объект, который будет копировать данные в порт принтера и возвращать результат более разумный, чем команда Copy ?
#10
by mr_fix
> сначала формируешь файл с командами copy con c:epl.txt (не в 1С а в командной строке, получишь нужный тебе файл с необходимыми командами или хоть в блокноте сделай в необходимом количестве. >потом копируешь его в порт (в 1С уже _готовый_ файл) copy c:epl.txt LPT3 Зачем эмулировать? :)
#11
by -Ze-
Мне нужно в режиме выполнения генерировать EPL-код и печатать. У меня нет понятия "готовая этикетка", ее содержание и формат должны строиться "на лету".
#13
by -Ze-
Да, с помощью echo работает. Единственное замечание - так как каждая команда языка EPL должна завершаться символом #CR, применяя echo каждую строчку кода EPL надо отправлять отдельной командой echo. mr_fix, спасибо за идею, не пришлось писать компонент :)
#14
by mr_fix
Какими символами? парой ChrChr ? К примеру набираем в коммандной строке echo ааа<Alt-10><Alt-13>ббб<Alt-10><Alt-13> получится ааа ббб (столбиком), то есть так как надо
#15
by -Ze-
Да, если "набираем в коммандной строке", то все отлично, но если передавать весь этот текст одной командой echo, то выполняется только последняя.
#17
by mr_fix
а если вывод echo передать в файл и посмотреть что там получится? а потом этот файл командой copy на lpt?
#22
by -Ze-
Вот только еще один важный момент, о котором я уже писал. Надо чтобы пользователю не выскакивало окно командного интерпретатора Windows, которое появляется всегда при вызове консольных команд, не важно, создаем ли мы файл, а потом его печатаем, либо печатаем напрямую...
#23
by mr_fix
Можно попробовать извратиться: Написать cmd файл вида: @echo off echo %1% >LPT1 скомпилировать его в exe напр MyPrint.exe утилиткой - там есть возможность сделать скрытое приложение (процесс) которое не выдает окон. а потом через ЗапуститьПриложение передавая нужную строку в виде параметра. Так можно избавиться от интерпретатора. Погугли Bat_To_Exe_Converter называется утилитка
#25
by -Ze-
mr_fix, сурово :) Сейчас пробую сделать на VBScript, его функциями передачи данных в порт, минуя cmd. Постоянно эти переносы строк в EPL все усложняют.
#26
by SIF
в 8-ке есть команда Копироватьфайл? наподобие в 7ке КопироватьФайл(<?>,,); Синтаксис: КопироватьФайл(<ИмяФайлаИсточника>,<ИмяФайлаПриемника>,<ФлагПерезаписи>) Назначение: Копирует файл. Параметры: <ИмяФайлаИсточника> - строка с именем файла источника; <ИмяФайлаПриемника> - строка с именем файла приемника; Думаю можно и без консольных команд в порт отправить. По крайней мере в 7ке можно. Примерно так: ФС.КопироватьФайл("c:1.txt","LPT1",0);
#28
by -Ze-
Команда есть такая. 1. Как ей задать копирование в порт? (на ИмяФайлаПриемника = "LPT3" ругается: "Неправильный путь к файлу"). 2. Как создать этот файл средствами 1С минуя командный интерпретатор Windows?
#29
by -Ze-
mr_fix, dll-то можно написать, но это времени все же побольше займет, неужели 1С настолько плох???
#32
by -Ze-
Вот еще примитивный вариант (через файл). В 1С есть тип "ТекстовыйДокумент". ТекстДок = Новый ТекстовыйДокумент; Для Каждого СтрокаEPL Из Этикетка Цикл ТекстДок.ДобавитьСтроку("..."); КонецЦикла; ТекстДок.Записать("PrinterCommands.txt"); КомандаСистемы("copy PrinterCommands.txt" + " " + ИмяПортаПринтера);
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Ошибка при получении значения атрибута контекста (Экземпляр) . Метод не найден.
- Ошибка при получении значения атрибута контекста (Экземпляр) . Метод не найден.
- Печатные формы через метаданные
- Как создать документа перемещение на основании перемещения?
- Себестоимость при продаже в минус - помогите советом
- БП 2.0 Добавить субконто примитивного типа Дата
- ЗУП - отчет "Отражение зарплаты в регламентированном учете"
- Подскажите как пользоваться обфускацией кода 1С
- ПриНачалеБлокировкиОбъекта
- Повторное открытие формы.
- 8.2 Гиперссылка в табличной части, как?
- Как быстро сохранить отчет более 65000 строк в эксель?
- Компонента v7plus.dll версии 7.70.0.11 не найдена
- база данных с указанным именем не обнаружена на сервере баз данных
- Помогите с формой
- Планировщик в 1с
- JOB: Каким бизнесом лучше заняться 1с-ку, если не самой 1с
- Программа перенаправления COM-порта
- Таблица не найдена "РегистрСведений.НачальныеСведенияОСтажеРаботниковОрганизации
- THE BAT в подпись картинку надо и никак!