[ТЕМА ЗАКРЫТА]
05.12.2015 17:15
SeReGaN4iK
 
День добрый. Помогите с кодировкой принтера. Тестовые страницы и печать с блокнота проходят на ура. Как пытаюсь распечатать с 1с Розница китайский шрифт, при тесте софтиной предоставляемой с принтером выбираю ей кодовую страницу 17 и она принимает, но при печати внутренним тестом выводит все заглавные нормально, а прописные догоняет до (ноп) дальше "кракозябры" и продолжает до конца алфавита я думаю, что проблема в этом можете подсказать, что делать мне с этим или куда копать дальше. В самой 1с выставляю кодовую страницу 17, а кодировку строки ср866.

P.S. Будет использоваться как чековый принтер брался на Али
06.12.2015 12:28
UrikEEE
 
Цитата:
SeReGaN4iK Помогите с кодировкой принтера. Тестовые страницы и печать с блокнота проходят на ура. Как пытаюсь распечатать с 1с Розница китайский шрифт, при тесте софтиной предоставляемой с принтером выбираю ей кодовую страницу 17 и она принимает, но при печати внутренним тестом выводит все заглавные нормально, а прописные догоняет до (ноп) дальше "кракозябры"
Мне кажется, что Вам надо отделить мух от котлет. А именно, иметь четкое понимание, когда принтер работает в режиме windows-принтера (поток данных от компьютера принтер воспринимает исключительно как графическую картинку), а когда в режиме DOS-принтера (когда байт от компьютера принтер воспринимает как код символа, и печатает этот символ из встроенного шрифта).

Тестовые страницы и печать из блокнота (и любого windows-приложения) - это печать в режиме windows-принтера однозначно.

С "1С-розница" все не так очевидно. Там используются свои драйверы торгового оборудования, и, похоже, в вашем случае 1С печатает на принтер именно в режиме DOS-принтера.

Учитывая, что принтер покупался в китайском интернет-магазине, надо быть готовым ко всяким неожиданностям - например, что кодовую страницу 866 братья-китайцы русифицировали весьма своеобразно - часть символов (заглавные большие буквы) русифицированы нормально, а остальные - нет. Это только моё предположение. Но проверить его Вам вполне реально самому - подготовьте текст из всех возможных русских букв (больших и маленьких) и напечатайте его из 1С-розница.

А еще лучше - подготовьте строку с кодами символов от 20H до FFH (в десятичной кодировке это будут числа от 32 до 255 - клавиша ALT и цифровые клавиши Вам в помощь) и также напечатайте ее из 1С-розница. Вам главное понять - куда братья-китайцы засунули маленькие русские буквы. А они такие шалуны)))
09.12.2015 22:22
UrikEEE
 
Попалась мне на глаза кодовая страница 866 (см.картинку).

Сразу бросился в глаза разрыв в 3 колонки (48 байт) как раз после символа "п" - у символа "п" код 175 (в десятичном счислении), а вот у следующего символа "р" уже код 224.

А не может быть так, что китайцы просто засандалили в прошивке русские буквы, начиная с "р", с кода 176 (без разрыва)?
Миниатюры
Нажмите на изображение для увеличения
Название: CP866_Descr.png
Просмотров: 955
Размер:	151.0 Кб
ID:	6671  
11.12.2015 10:20
SeReGaN4iK
 
Чек кстати распечатывается именно так как вы показали в таблице. И что же мне теперь с этим делать, я так понимаю надо принтер както перепрошивать ((((
11.12.2015 13:39
UrikEEE
 
Цитата:
SeReGaN4iK И что же мне теперь с этим делать, я так понимаю надо принтер както перепрошивать ((((
Перепрошить принтер - это самый правильный путь. Но в вашем случае он может быть неосуществим по причине банального отсутствия инструментария - китайцы (производители дешевого товара) обычно не балуют потребителей программами конфигурирования, тестирования, прошивания и т.п.

Но выход всё-таки есть - надо найти спецов, которые доработают вашу 1С именно для печати на ваш чудо-принтер. Вам ведь этот принтер нужен исключительно для печати на нем из "1С:Розница"? Если так, то надо в этой 1С найти тот кусок программы, который посылает текстовую строку на принтер, и там добавить фрагмент программы (строк на 10-15), который перекодирует символы от "р" до "я" (уменьшит их код на 48) и тогда 1С будет отправлять на принтер текстовую строку в лихой кодировке, понятной лишь вашему термопринтеру.

С точки зрения системного подхода реализация корявая, но зато вполне реальная. У Вас какая именно "1С:Розница" установлена?
11.12.2015 13:50
UrikEEE
 
А есть еще самый простой путь - использовать для печати на этом термопринтере только ЗАГЛАВНЫЕ РУССКИЕ БУКВЫ. Тогда лезть в 1С и переделывать программу вообще не надо, только поменять в справочниках ("Номенклатура" и т.п.) наименования все же придется, конечно.
11.12.2015 17:41
SeReGaN4iK
 
Так дело в том при печати чека из под 1с даже если есть заглавные буквы они все равно китайскими печатают. да и сами подумайте переводить более 20 тысяч наименований на заглавные это бред, можно конечно использовать какуюнибудь обработку, но ее нет у меня ))) так что надо думать еще куда покопать
11.12.2015 17:44
SeReGaN4iK
 
1С:Предприятие 8.3 (8.3.7.1776) Розница, редакция 2.1 (2.1.9.12)
11.12.2015 19:04
UrikEEE
 
Нет у меня такой конфигурации...

А как в настройках торгового оборудования в 1С выглядит ваш принтер? К какой группе оборудования он относится (фискальные регистраторы или что-то еще) и что у него за обработка обслуживания указана?

Я на 1С:Розница 1.0 (демо-версия) бегло посмотрел обработки парочки фискальных регистраторов (Штрих-М и Атолл) - там все оказалось не так радужно, весь вывод на печать делается не из 1С, а из внешних компонент (особым образом написанные для 1С dll). И в настройках этих обработок есть только выбор COM-порта и скорости его работы, нигде кодовая страница не указывается. А из 1С вызываются только разные методы этих внешних компонент:

ОткрытьЧек() - печатает заголовок чека, в параметрах передается номер чека, дата/время, еще кое-что;

ПечататьФискальнуюСтроку() - в параметрах передается Наименование, количество, цена, сумма, сумма скидки;

ЗакрытьЧек() - видимо, вызывает печать итогов по чеку, при этом уже сама внешняя компонента (как я думаю) выводит на принтер строки, в которых тоже есть русские слова (Итого, сумма скидки, сдача и т.п.), которые формируются внешней компонентой, а не 1С.

Получается, что из 1С на фискальный регистратор выводится текстом только наименование товара ну и в виде параметров открытия/закрытия чека передает данные об операторе, продавце и т.п. При этом все текстовые строки 1С8 хранит в кодировке UTF-8, другие кодировки используются при работе с текстовыми (и xml) файлами.

Но Вы в первом посте пишите, что и в 1С8 тоже указываете кодовую страницу 866. Может, шанс подшаманить 1С8 есть. Но от Вас нужен ответ на вопрос в самом начале этого поста.
11.12.2015 20:51
UrikEEE
 
Нашел конфигурацию 1С:Розница (2.1.9.12). Установил демо-базу. Создал в меню "Подключение и настройка оборудования" принтер чеков "1С:Принтер чеков". Нажал кнопку "Настроить..." и увидел окно настройки, в котором можно указать кодовую страницу принтера (см.миниатюры).

Обратил внимание, что в 1С в списке кодовых страниц 2 страницы (07 и 17) с русскими буквами. А кодовую страницу 07 в 1С пробовали?
Миниатюры
Нажмите на изображение для увеличения
Название: НастройкаЧековогоПринтера1С.png
Просмотров: 957
Размер:	32.2 Кб
ID:	6677  
11.12.2015 22:51
SeReGaN4iK
 
Да как уже не пробовал что только не делал, одно и тоже
13.12.2015 12:46
UrikEEE
 
Поковырялся сегодня с утра в 1С:Розница. Если есть желание и возможность, предлагаю попробовать вот что:

1) В конфигураторе должна быть включена возможность изменения;
2) В окне конфигурации открываете общий модуль "ПодключаемоеОборудованиеУниверсальныйДрайверКлиент" (В дереве конфигурации ветка "Общие", "Общие модули");
3) Переходите к строке 1155 общего модуля - это строка в теле функции "НапечататьСтроку() и должна в оригинале быть такой:

Код:
		Ответ = ОбъектДрайвера.НапечататьСтроку(ПараметрыПодключения.ИДУстройства, СтрокаТекста);
а я предлагаю Вам ее заменить на такую строку:
Код:
		Ответ = ОбъектДрайвера.НапечататьСтроку(ПараметрыПодключения.ИДУстройства, ВРег(СтрокаТекста));
То есть, добавить функцию ВРег(), которая переводит все символы строки к верхнему регистру. По-моему, это самый простой способ как-то помочь Вам.

Есть, конечно, и другой путь - создать специально для вашего принтера новую обработку для 1С:Розница, но это надо искать спецов, оплата работы которых может превысить стоимость нормального нового термопринтера.
16.12.2015 00:02
SeReGaN4iK
 
Мне кажется все таки проблема в принтере, интересно можно ли его перепрошить. внутри принтера есть какой-то как разъем с 8 (вроде) торчащими ногами фото позже приложу.
16.12.2015 22:20
UrikEEE
 
Цитата:
SeReGaN4iK Мне кажется все таки проблема в принтере
Да в этом я и не сомневался )) Но я предложил Вам реальное решение - подшаманить 1С.

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

А можно идиотский вопрос - а кто Вас надоумил купить этот принтер? Ведь Вы его собираетесь использовать в торговой точке (20 тысяч товарных позиций, кажется). А это уже профессиональный инструмент должен быть.

Я вот купил парочку б/у термопринтеров Аксиом - вовсе не для торговли, а в помощь тренерам печатать в лесу результаты участников. Но у меня и мысли в голове не возникло купить что-нибудь у китайцев. Выбирал между новым Ситизен или Самсунг (обязательно 80мм шириной чековая лента и с автоотрезчиком), но цена в 9-10 тысяч тренеров не устроила, тогда нашел проверенные Аксиомы. Да, пришлось кнопки протяжки бумаги заменить - но зато это рабочие лошадки, в которых я уверен.
21.12.2015 14:32
SeReGaN4iK
 
Хотелось нового и дешевого )))))))) А так можно сказать поэксперементировал с покупкой у китайцев )))))

Я так понимаю больше вариантов решения моей проблемы нет ?
22.12.2015 09:22
UrikEEE
 
Цитата:
SeReGaN4iK Я так понимаю больше вариантов решения моей проблемы нет ?
Ну почему? Самый правильный путь - выходить на контакт с производителем.

То, что предлагал я (подправить 1С, чтобы принтер печатал заглавными буквами) - это, по сути, дешевые костыли для 1С, отчасти компенсирующие костыли производителя.

Я также предлагал Вам вариант "дорогих костылей" для 1С - найти спецов, которые специально для этого принтера и для вашей 1С сделают обработку. Как мне кажется, такое вполне возможно (если использовать внешнюю компоненту типа rs232hex, пуляющую из 1С в эту компоненту строки из HEX-символов, ну типа 0A 0D 31 4F, а компонента из этих строк собирает байты и шлёт их в COM-порт), при этом можно заставить принтер печатать и маленькие русские буквы "р"-"я" (если они есть в прошивке принтера, но под другими кодами) - но цена вопроса будет немаленькой...
11.02.2016 15:25
alesha777
 
Цитата:
SeReGaN4iK Мне кажется все таки проблема в принтере, интересно можно ли его перепрошить. внутри принтера есть какой-то как разъем с 8 (вроде) торчащими ногами фото позже приложу.
на сайте производителя лежит программка для изменения настроек принтера. что мешает отредактировать и залить правильную кодировку ?
09.07.2016 09:01
boriskim
 
Та же фигня из 1с розницы идут иероглифы, а из блокнота по русски и большие и маленькие. Может кто поможет?
14.09.2016 16:50
UrikEEE
 
Цитата:
boriskim Та же фигня из 1с розницы идут иероглифы, а из блокнота по русски и большие и маленькие. Может кто поможет?
Давно сюда не заглядывал...

Ну а как тут поможешь? Из блокнота этот принтер печатает (как я думаю) как windows-принтер - то есть, как и любое windows-приложение, печатает через драйвер, который шлет на принтер данные для печати в виде графики. Поэтому русские буквы отображаются прекрасно. Но как картинка.

А 1С шлет данные в COM-порт напрямую (минуя драйвер принтера), там каждый байт содержит код символа (или команду для принтера, но сейчас это опустим), а его изображение принтер берет из своего знакогенератора (из прошивки). И похоже, что китайцы накосячили с кодировкой русских букв в прошивке - они их загнали в знакогенератор все подряд, хотя в кодовой странице 866 между большими и маленькими русскими буквами есть разрыв в 32 символа. А в прошивке принтера его (этого разрыва) нет...

Самый правильный путь - выходите на контакт с производителем, излагайте свою проблему. Обладая исходниками прошивки, поправить эту беду и выложить новую прошивку для них не должно быть ахти какой проблемой (я так думаю).
07.12.2016 00:59
action88
 
День добрый.

Купил я тут этот принтер и наткнулся на те же грабли. Промучился я с ним неделю и проблему решил, и даже с розницей его подружил.

Решение оказалось элементарным. Для ее решения понадобится утилита XPrinter V3.0C взять ее можно либо с диска от принтера, либо с сайта производителя(). Устанавливаем, и выбираем
Далее выбираем Свои настройки и нажимаем кнопки как на картинке 1
И все начинает работать
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 511
Размер:	48.7 Кб
ID:	7962  
07.12.2016 01:05
action88
 
Забыл написать(не нашел как редактировать сообщение)

в поле ввода(то которое номер 4) нужно написать сначала
1F 1B 1F FE 01

и нажать Print, а потом
1F 1B 1F FE 11
15.12.2016 16:33
UrikEEE
 
Цитата:
action88 Забыл написать(не нашел как редактировать сообщение)
в поле ввода(то которое номер 4) нужно написать сначала
1F 1B 1F FE 01
и нажать Print, а потом
1F 1B 1F FE 11
Вот нашел же выход человек, не поленился и раскопал где-то чудо-команды для этого принтера :)

А эту процедуру достаточно проделать один раз или её надо повторять после каждого включения принтера?
15.12.2016 18:02
pavel_k
 
Положил в хранилище документацию и утилиту для настройки.
08.01.2017 16:15
SeReGaN4iK
 
Цитата:
pavel_k Положил в хранилище документацию и утилиту для настройки.
Ребят хорошо его не выкинул сегодня достал вроде делаю все по инструкции а ни чего не меняется все как и было, после нажатия на кнопку принт должно что то происходить или нет и как правильно проводить селф тест, да и в документации написано "1F 1B 1F FF 11" а у вас "1F 1B 1F FE 11"
08.01.2017 16:16
SeReGaN4iK
 
И может есть момент как то сбросить его на заводские настройки и потом заново произвести настройку, можно инструкцию по подробнее как вы сделали ????
08.01.2017 17:08
SeReGaN4iK
 
Да и еще на скринах печатания чеков приложенных в пдф видно непонятки идут также после маленькой буквы "п" как я понимаю в принтере некорректно забита таблица,т.е она не полная (забита так как у них в примере на последней странице показана через НЕХ редактор) значит ее как то нужно поправить и сохранить в памяти принтера, но как ????
08.01.2017 17:22
SeReGaN4iK
 
Цитата:
action88 День добрый.

Купил я тут этот принтер и наткнулся на те же грабли. Промучился я с ним неделю и проблему решил, и даже с розницей его подружил.

Решение оказалось элементарным. Для ее решения понадобится утилита XPrinter V3.0C взять ее можно либо с диска от принтера, либо с сайта производителя(). Устанавливаем, и выбираем
Далее выбираем Свои настройки и нажимаем кнопки как на картинке 1
И все начинает работать

А в рознице какие настройки выставляли???? Поделитесь опытом )))
08.01.2017 17:24
SeReGaN4iK
 
Хотя да в таблице символов 866 после маленькой "п" идут графические символы хотя все я уже запутался подождем action88 который может поподробнее все объяснит )))))))))))
08.01.2017 18:31
SeReGaN4iK
 
Вроде разобрался в рознице все корректно печатает всем спасибо !!!!!!!!!!!
09.01.2017 02:29
SeReGaN4iK
 
А как быть с qr кодами может ктонить подсказать ????


Опции темы


Часовой пояс GMT +3, время: 07:49.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.