При подключении дисплея покупателя АТОЛ PD-2100C (или PD-202S) к конфигурациям на обычных формах (например, 1С:Розница 1.0 или 1С:Управление торговлей 10.3) часто возникает ситуация, когда тест через утилиту драйвера отрабатывает корректно на русском языке, а при печати строк из программы 1С на экран выводятся нечитаемые символы и иероглифы. Проанализируем причину такого поведения и рассмотрим варианты устранения неполадки.
Выясним причину ошибки: в драйвере дисплеев покупателя АТОЛ список доступных кодовых страниц жестко привязан к свойству модели устройства. Дисплей АТОЛ PD-2100C аппаратно ориентирован на кодировку 1251 (Windows-1251). В старых типовых обработках обслуживания торгового оборудования этой модели нет в списке — пользователи вынуждены выбирать похожую, например, Posiflex PD-201. Однако для модели PD-201 драйвер поддерживает только DOS/OEM-таблицы (кодировки 866, 437 и др.). При попытке программно передать свойство Объект.Драйвер.НаборСимволов = 1251 драйвер отвергает неподдерживаемое для выбранной модели значение и сбрасывает его на 866, из-за чего русские буквы отображаются иероглифами.
Разберем по шагам наиболее правильный способ решения — добавление нужной модели и кодировки непосредственно в обработку обслуживания торгового оборудования:
ATOLCustomerDisplay.epf) в режиме «Конфигуратор».УстановитьПараметры() или Подключить()). Убедимся, что при выборе новой модели в свойство Объект.Драйвер.Модель передается корректный числовой код модели АТОЛ, а в свойство Объект.Драйвер.НаборСимволов передается значение 1251.
// Установка модели и кодировки для дисплея АТОЛ PD-2100C
Объект.Драйвер.Модель = НомерМоделиPD2100C; // числовой код модели в драйвере АТОЛ
Объект.Драйвер.Порт = НомерCOMПорта;
Объект.Драйвер.Скорость = СкоростьCOM;
Объект.Драйвер.НаборСимволов = 1251; // Применяется успешно только после правильной установки модели
Если требуется оперативно запустить рабочее место без переработки диалоговых форм и макетов, рассмотрим вариант быстрой правки процедуры подключения:
866.
Попытка
// Сначала задаем идентификатор модели, поддерживающей Windows-1251
Объект.Драйвер.Модель = 24; // Соответствует АТОЛ PD-202S / PD-2100C в ДТО 8.x
Объект.Драйвер.НаборСимволов = 1251;
Исключение
// Обработка возможной ошибки установки параметров драйвера
КонецПопытки;
Объект.Драйвер.ВывестиСтроку() начнет передавать текст в кодировке Windows-1251, и дисплей отобразит русские буквы без искажений.Разберем альтернативный способ без глубокой модификации логики обработки:
1251. Сохраним настройки логического устройства.