Почему дисплей покупателя АТОЛ PD-2100C выводит иероглифы в 1С и как это исправить?

Программист 1С v8.3 (Обычные формы) 1С:Розница Торговля и дистрибуция
← На главную

При подключении дисплея покупателя АТОЛ 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, из-за чего русские буквы отображаются иероглифами.

Вариант 1. Доработка внешней обработки обслуживания ТО (рекомендуемый)

Разберем по шагам наиболее правильный способ решения — добавление нужной модели и кодировки непосредственно в обработку обслуживания торгового оборудования:

  1. Откроем используемую внешнюю обработку обслуживания (например, ATOLCustomerDisplay.epf) в режиме «Конфигуратор».
  2. Найдем функцию или макет со списком поддерживаемых моделей (в зависимости от ревизии обработки это может быть таблица значений или макет соответствия). Добавим строку с идентификатором модели АТОЛ PD-202S/2100C.
  3. В модуле объекта найдем процедуру установки параметров драйвера (обычно это УстановитьПараметры() или Подключить()). Убедимся, что при выборе новой модели в свойство Объект.Драйвер.Модель передается корректный числовой код модели АТОЛ, а в свойство Объект.Драйвер.НаборСимволов передается значение 1251.
  4. Посмотрим на пример установки параметров в модуле обработки:
    
    // Установка модели и кодировки для дисплея АТОЛ PD-2100C
    Объект.Драйвер.Модель = НомерМоделиPD2100C; // числовой код модели в драйвере АТОЛ
    Объект.Драйвер.Порт = НомерCOMПорта;
    Объект.Драйвер.Скорость = СкоростьCOM;
    Объект.Драйвер.НаборСимволов = 1251; // Применяется успешно только после правильной установки модели
    
  5. Сохраним обработку, перезагрузим её в справочнике Обработки обслуживания торгового оборудования в режиме «1С:Предприятие» и перевыберем модель в карточке подключаемого оборудования.

Вариант 2. Принудительная инициализация параметров в коде обработки

Если требуется оперативно запустить рабочее место без переработки диалоговых форм и макетов, рассмотрим вариант быстрой правки процедуры подключения:

  1. Откроем модуль объекта обработки обслуживания в конфигураторе.
  2. Найдем процедуру инициализации связи с устройством и закомментируем принудительное присвоение значения 866.
  3. Зададим явную установку модели и кодовой страницы перед вызовом методов вывода информации:
    
    Попытка
        // Сначала задаем идентификатор модели, поддерживающей Windows-1251
        Объект.Драйвер.Модель = 24; // Соответствует АТОЛ PD-202S / PD-2100C в ДТО 8.x
        Объект.Драйвер.НаборСимволов = 1251;
    Исключение
        // Обработка возможной ошибки установки параметров драйвера
    КонецПопытки;
    
  4. Проверим вывод строки: метод Объект.Драйвер.ВывестиСтроку() начнет передавать текст в кодировке Windows-1251, и дисплей отобразит русские буквы без искажений.

Вариант 3. Использование настроек драйвера по умолчанию

Разберем альтернативный способ без глубокой модификации логики обработки:

  1. Запустим утилиту Тест драйвера дисплеев покупателя от компании АТОЛ.
  2. Настроим логическое устройство: выберем модель АТОЛ PD-202S/PD-2100C, укажем виртуальный COM-порт, скорость и установим кодировку 1251. Сохраним настройки логического устройства.
  3. В коде обработки обслуживания 1С отключим программное переопределение параметров порта и кодовой страницы при открытии сеанса, чтобы драйвер считывал параметры напрямую из системного реестра Windows.
← На главную