Форум OlegON > Программы и оборудование для автоматизации торговли > Оборудование > Принтеры > Другие принтеры

Xprinter XP-58IIH проблема с кодировкой : Другие принтеры

18.04.2024 19:54


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
Просмотров: 1968
Размер:	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
Просмотров: 2106
Размер:	32.2 Кб
ID:	6677  
Часовой пояс GMT +3, время: 19:54.

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