#0
by ChMikle
кто-нибудь сталкивался или знает такую команду для этой библиотеке . В примере драйвера есть такая возможность, а примере библиотеки нет такой команды чтобы передавать текст и команда печатала его на ленте ... ЗЫ Вариант печати текста построчно не канает
#2
by woody woodpecker
ширина ленты в символах - величина постоянная. Трудно текст прорезать? Там ведь не нужны красивости как в ворде
#3
by miki
Что значит "многострочного"? Где посередке есть <перевод_строки>? Методы, доступные в мануале, дают max 248/249 символов за одну команду
#7
by ChMikle
в драйвере есть такая фича передаешь текст и нажимаешь печатать текст и на чеке печатается , одной командой ..... а в примере работы библиотеки нету. Проблемы с печатью текст будет менять и печататься информация на чеке , тормозит при печати +гемморно отрезку чека считать. а это текст набил и сам драйвер разместил как тебе надо
#9
by NS
Библиотека то штриховская.... Зачем считать отрезку чека?! И как это связано с построчной или нет печатью?
#10
by ChMikle
Библиотека да , и при печате с задержкой бывает отрезает бумагу и продолжает печатать
#11
by NS
Отключаешь звук при печати в дровах, и при отрезки проверяешь код возврата. Наизусть не помню, но если еще печатает, то не режет, и возвращает соответствующий код ошибки. Вроде 80.
#12
by ChMikle
Серегй, но там проблемы возникают с пересылкой команд на фискальный регистратор и когда много строк для печати отправляются последовательно надо ставить задержки для выполенения предыдущих команд , начинает не стабильно работать. Не то это , вы драйвер видели А 4.9 , там же есть возможность печати
#13
by NS
У меня потоковая печать без задержек. (1000 чеков за раз) Никаких проблем. Драйвер 4.6 Проблемы у меня возникали только при печати графики в фискальной части. А так - идут сначала строки, потом штрих-код, затем фискальная часть, глюков нет.
#17
by Torquader
Option Explicit ' 28-01-2010 после некоторой отладки мы получили достаточно нормальную работу ' данных функций форматирования и они могут быть подключены в проект ' для форматирования строк перед выводом на фискальный регистратор '============================================================================== ' Набор констант для работы функций форматирования строк ' ' константы выравнивания при форматировании строки Const asAlignLeft = 1 ' ' константы режима обработки строки функцией обработки ' ' константы специального значения символов Const asSpaceChar = " " Const asNonBreakSpace = " " ' символ с кодом 160 '============================================================================== ' данная функция производит форматирование простой строки ' предполагается, что ей передана строка LineString меньше LineWidth символов Function AdjustCurrentLine(LineString,LineWidth,AlignType) ' если в строке обнаруживается символ табуляции, то система предполагает ' что каждый из таких символов будет заменяться пробелами, чтобы длина ' строки стала равной LineWidth ' если символов табулации нет, то система выполняет выравнивание ' как указано в параметре выравнивания l=Len(LineString) If InStr(1,LineString,vbTab,vbBinaryCompare)=0 Then ' выравнивание по левому краю - это ничего не деланье If AlignType=2 Then ' выравнивание по центру If l+1<LineWidth Then AdjustCurrentLine=Space((LineWidth-l)2) & _ ElseIf AlignType=3 Then ' выравнивание по правому краю If l<LineWidth Then AdjustCurrentLine=Space(LineWidth-l) & _ ElseIf l>LineWidth Then ElseIf AlignType=4 Then ' выравнивание по заполнению, то есть расширение пробелов до самого конца ' при этом, предполагается, что вначале и в конце пробелов нет ' алгоритм имеет смысл применять только тогда, когда строка меньше нужного If l<LineWidth Then ' проверяем, что есть что расширять ' в случае отсутствия пробелов мы не можем расширить строку If InStr(1,LineString,asSpaceChar,vbBinaryCompare)<>0 Then i=1 AdjustCurrentLine=LineString Do If i>l Then i=1 If Asc(Mid(AdjustCurrentLine,i,1))=32 Then If i<l Then _ Loop While l<LineWidth Else ' если у нас есть символ табуляции, то они будут растягиваться If l<LineWidth Then i=1 AdjustCurrentLine=LineString Do If i>l Then i=1 If Mid(AdjustCurrentLine,i,1)=vbTab Then If i<l Then AdjustCurrentLine= _ Loop While l<LineWidth ElseIf l>LineWidth Then AdjustCurrentLine=Left(LineString,LineWidth) Else '============================================================================== ' данная функция производит разбиение строки на блоки нужного размера ' StringForOut - это переданная строка, которая будет выводится ' LineWidth - это максимальное количество символов в строке ' мы это отменили, так как символы табуляции позволяют это сделать ' (они у нас растяжимы до невозможности) ' однако, пришлось вернуться к форматированию, так как не всегда ' символами табуляции можно добиться необходимого положения ' AlignType - тип выравнивания строки: ' 1 - по левому краю ' 2 - по центру ' 3 - по правому краю ' 4 - по заполнению (расширение символов табуляции) ' на выходе мы должны получить массив строк нужного размера ' преобразование для ФР - все символы, меньше 32 - это пробелы, ' за исключением перевода строк (а он может быть 13,10 или 13 и 10 вместе) ' система не печатает пустые строки, поэтому все символы перевода ' после первого символа перевода будут считаться переводо той же строки ' а для получения пустой строки нужно будет поставить пробел ' все символы, которые лежат в диапазоне 32-255 печатаются, как есть ' из строк вырезаются лишние пробелы, а символы табуляции расширяются ' до максимальной длины (если установлен флажок расширения) Function AdjustString(StringForOut,LineWidth,AlignType) Dim a ' массив для подбора строк-результатов Dim l ' длина рассматриваемой строки Dim i ' текущая позиция читаемой строки Dim c ' текущий просматриваемый символ Dim r ' переменная для хранения текущего режима преобразования строки ' 1 - новая строка (то есть мы начали читать новыю строку) ' 2 - пробел в начале строки (строка ещё ничего не содержит, но уже непустая) ' 3 - первое слово в строке (идёт заполнение первого слова) ' 4 - пробел после слова (строка уже состоит из одного слова) ' 5 - следующее слово в строке Dim t ' флаг символа табуляции в начале строки Dim j ' служебная переменная для проверки размера строк Dim f ' флаг символа табуляции вместо пробела Dim w ' текущее собираемое слово Dim s ' текущая собираемая строка On Error Resume Next Set a=New DinamicArray If Err.Number<>0 Then OutErrorInformation "Ошибка создания массива для хранения строк" On Error Goto 0 l=Len(StringForOut) r=asNewLine ' режим новая строка i=1 t=False Do While i<=l If r=asNewLine Then Do While i<=l c=Asc(Mid(StringForOut,i,1)) If(c<>10)AND(c<>13)Then If c<33 Then If c=9 Then t=True r=asLineBegin Else ElseIf r=asLineBegin Then Do While i<=l c=Asc(Mid(StringForOut,i,1)) i=i+1 If c<33 Then If c=9 Then t=True ElseIf(c=13)OR(c=10)Then If a.AddValue(asEmptyLine)<>True Then Loop ElseIf r=asFirstWord Then Do While i<=l c=Asc(Mid(StringForOut,i,1)) i=i+1 If c<33 Then j=Len(w) If j<LineWidth Then If t=True Then w=vbTab & w If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then AddErrorString "Ошибка добавления строки в массив" ElseIf j>LineWidth Then Do If a.AddValue(Left(w,LineWidth))<>True Then Loop While j>LineWidth If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then AddErrorString "Ошибка добавления строки в массив" Else If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then If j>LineWidth Then t=False Do If a.AddValue(Left(w,LineWidth))<>True Then t=False Loop While j>LineWidth s=w f=False If c=9 Then t=True Else t=False ElseIf j<LineWidth Then s=w If c=9 Then f=True Else f=False Else If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then If c=9 Then t=True Else t=False ElseIf r=asWordSpace Then Do While i<=l c=Asc(Mid(StringForOut,i,1)) i=i+1 If c<33 Then j=Len(s) If j<LineWidth Then If t=True Then s=vbTab & s If j+1<LineWidth Then If f=True Then s=s & vbTab End If ElseIf f=True Then ElseIf c=9 Then Loop ElseIf r=asNextWord Then Do While i<=l c=Asc(Mid(StringForOut,i,1)) i=i+1 If c<33 Then If(c=13)OR(c=10)Then If j<=LineWidth Then If f=True Then s=s & vbTab & w Else s=s & asSpaceChar & w If t=True Then If Len(s)<LineWidth Then s=vbTab & s End If If a.AddValue(AdjustCurrentLine(s,LineWidth,AlignType))<>True Then j=Len(s) If j<LineWidth Then If t=True Then s=vbTab & s If j+1<LineWidth Then If f=True Then s=s & vbTab End If ElseIf f=True Then If j<=LineWidth Then If j<LineWidth Then If f=True Then w=vbTab & w Else Do If a.AddValue(Left(w,LineWidth))<>True Then End If If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then Else ' конец следующего слова If j<LineWidth Then If f=True Then s=s & vbTab & w Else s=s & asSpaceChar & w If c=9 Then f=True Else f=False Exit Do ElseIf j=LineWidth Then If f=True Then s=s & vbTab & w Else s=s & asSpaceChar & w If c=9 Then t=True Else t=False f=False If a.AddValue(AdjustCurrentLine(s,LineWidth,AlignType))<>True Then AddErrorString "Ошибка добавления строки в массив" Else ' если размер оказался больше j=Len(s) ' получаем размер остатка строки If j<LineWidth Then If t=True Then s=vbTab & s If j+1<LineWidth Then If f=True Then s=s & vbTab End If ElseIf f=True Then If c=9 Then f=True Else f=False j=Len(w) If j>LineWidth Then t=False Do If a.AddValue(Left(w,LineWidth))<>True Then End If If j=LineWidth Then If c=9 Then t=True Else t=False If a.AddLine(w,LineWidth,AlignType)<>True Then AddErrorString "Ошибка добавления строки в массив" Loop ' теперь преобразование данной строки закончилось и остались хвосты If r=asNewLine Then ' ничего добавить нельзя ElseIf r=asLineBegin Then' нужно добавить пустую строку If a.AddValue(asEmptyLine)<>True Then AddErrorString "Ошибка добавления строки в массив" ElseIf r=asFirstWord Then ' первое слово j=Len(w) If j>LineWidth Then t=False Do If a.AddValue(Left(w,LineWidth))<>True Then Loop While j>LineWidth ElseIf j<LineWidth Then If t=True Then w=vbTab & w End If If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then ElseIf r=asWordSpace Then j=Len(s) If j<LineWidth Then If t=True Then s=vbTab & s If j+1<LineWidth Then If f=True Then s=s & vbTab End If ElseIf f=True Then ElseIf r=asNextWord Then j=Len(s)+Len(w)+1 If j>LineWidth Then j=Len(s) If j<LineWidth Then If t=True Then s=vbTab & s If j+1<LineWidth Then If f=True Then s=s & vbTab End If ElseIf f=True Then If j>LineWidth Then Do If a.AddValue(Left(w,LineWidth))<>True Then Loop While j>LineWidth ElseIf j<LineWidth Then If f=True Then w=vbTab & w End If If a.AddValue(AdjustCurrentLine(w,LineWidth,AlignType))<>True Then Else If f=True Then s=s & vbtab & w Else s=s & asSpaceChar & w j=Len(s) If j<LineWidth Then If t=True Then s=vbTab & s End If If a.AddValue(AdjustCurrentLine(s,LineWidth,AlignType))<>True Then '============================================================================== ' данная функция подготавливает и формирует ошибку форматирования строки Sub OutFormatStringError(PointerToResult,ErrorInformation) If VarType(PointerToResult)=vbBoolean Then
#18
by ChMikle
Теперь при снятии x-отчетов и z-отчетов ленту не отрезает , был нефискализированный отрезал, фмскализированли не отрезает .... в чем может быть проблема?
#19
by Torquader
Есть там такая опция (в таблице настройки внутри ФР) - отрезка после завершения чека - если в таблице 0, то и не отрезает.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- описание DRVFR.dll
- Ошибка v7plus.dll & autosalon.dll
- Управление торговлей 10.2 вместе с scanopos.dll, scaner1c.dll и USB сканером
- Вылетает 1С77 в терминале (WIN2003server) ошибка модуль Moxel.dll, Basic.dll
- Чек ФР под драйвером DrvFR.dll
- Чем грозит замена odbcbcp.dll, sqlsrv32.dll, sqlsrv32.dll, в Win7 ?
- v7: Подключение кассового аппарата DrvFR.dll
- v7: Нужны библиотеки seven.dll и DBEng32.dll
- Работа со Штрих-М-ФР-К в 1с82 через AddIn.DrvFR
- DrvFR.DLL для работы со Штрих-М ФР-К - ошибка COM-объекта
- v7: Проблема в подключении компоненты DrvFR.dll
- v7: Штрих DrvFR онлайн касса. Цена у товара с четырьмя знаками после запятой.
В этой группе 1С
- Алишер Усманов стал владельцем ICQ
- как из строки убрать символ перевода строки?
- Не устанавливается ХАСП драйвер (hinstall /i)
- Попытка защиты 1с
- 8.2 Множественный выбор
- зависла ли 1с при обновлении еслии если не реагирует на кнопки?
- Как добавить свои пункты в контекстное меню 8.2 упр.формы
- Загрузка в 1С из ОпенОфис
- Не делает проводок по НДС при поступлении товаров и услуг, 1С Бухгалтерия 8
- v8: Обновление УПП на 30 релиз. Ошибка SDBL.
- СКД Вывод сальдо на начало и на конец
- Ошибка считывания вторичной информации
- OpenConf: Как назначить горячую клавишу на определенный пункт меню?
- Предприниматель Недостаточно ресурса
- Преобразование значения к типу Булево не может быть выполнено Бух (1.6.25.5)
- Ручная регистрация изменения в плане обмена
- ЗУП: вредные условия труда в регламентной отчетности. Подскажите как сделать?
- 8.2 СКД совместить несколько отчётов в одном
- Создание dt файла серверной базы данных!
- v8: Отбор в табличном поле.