Как настроить префикс F7 для сканера Digifors Scan 25 2D BT в 1С?

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

В рамках этой статьи мы подробно рассмотрим процесс настройки префикса F7 для сканера штрихкодов Digifors Scan 25 2D BT и его интеграции с конфигурацией 1С, в частности с 1С:Комплексная автоматизация 1.1. Эта задача часто возникает, когда необходимо, чтобы сканер отправлял специальный символ перед данными штрихкода для активации определенных действий в программе 1С, например, для поиска товара по штрихкоду с использованием функциональной клавиши F7. Мы выясним, как настроить сам сканер, а также как адаптировать обработку обслуживания в 1С.

Принципы работы сканера штрихкодов в режиме эмуляции клавиатуры

Прежде чем приступить к детальной настройке, важно понять, как сканер взаимодействует с компьютером и программой 1С. Сканеры, подобные Digifors Scan 25 2D BT, часто работают в режиме эмуляции клавиатуры (также известном как режим HID-устройства). Это означает, что когда вы сканируете штрихкод, сканер преобразует его в последовательность символов и "вводит" их, как если бы вы печатали на клавиатуре. Функциональные клавиши, такие как F7, также могут быть настроены для отправки через этот механизм. В данном случае, основная сложность заключается в том, что 1С ожидает определенный символ (префикс F7), а сканер по умолчанию может его не отправлять, либо отправлять в виде, который 1С не распознает. Наша задача — научить сканер отправлять именно этот символ перед данными штрихкода, а затем убедиться, что 1С его правильно интерпретирует.

Настройка префикса F7 непосредственно на сканере Digifors Scan 25 2D BT

Для того чтобы сканер Digifors Scan 25 2D BT начал отправлять префикс F7, нам потребуется запрограммировать его с помощью специальных системных штрихкодов. Крайне важно иметь под рукой руководство по программированию именно для вашей модели сканера, так как системные штрихкоды могут отличаться даже у схожих моделей и разных производителей. Если оригинального руководства нет, мы рекомендуем попытаться найти его на сайте производителя Digifors или через поисковые системы по запросу "Digifors Scan 25 2D BT programming manual", "Digifors Scan 25 2D BT руководство по настройке" или "Digifors Scan 25 2D BT set prefix F7".

Рассмотрим общие шаги, которые характерны для большинства программируемых сканеров и, вероятно, применимы к Digifors Scan 25 2D BT:

  1. Вход в режим программирования: Первым шагом является сканирование штрихкода "Enter Setting Mode", "Start Configuration" или аналогичного, который переводит сканер в режим настройки. Обычно этот штрихкод находится на первой странице раздела "Настройка" в руководстве. Без этого шага сканер не будет воспринимать последующие команды как команды программирования.
  2. Установка или добавление префикса: После успешного входа в режим настройки, найдите штрихкод "Set Prefix", "Add Prefix" или "Prefix Data". Отсканируйте его, чтобы указать сканеру, что вы собираетесь определить префикс. Некоторые сканеры могут предложить выбрать, будет ли префикс добавляться к началу данных или заменять уже существующий.
  3. Выбор функциональной клавиши F7 как префикса: Это самый критичный шаг, требующий внимательности. В руководстве по программированию должна быть таблица управляющих символов (Control Character Table), ASCII-таблица или таблица функциональных клавиш, где указаны специальные "коды настройки" (Setting Code) для функциональных клавиш, таких как F7.
    • Для F7 стандартно используется ASCII-код 28 (десятичный) или 1C (шестнадцатеричный). Этот код относится к группе "Control Characters" и является непечатаемым символом "File Separator" (FS), который часто используется для обозначения F7 в контексте сканеров.
    • В руководстве вам нужно будет найти, как ввести этот код. Это может быть реализовано несколькими способами:
      • Сканирование штрихкода, прямо соответствующего F7: Некоторые производители предоставляют отдельные штрихкоды для F1-F12.
      • Сканирование шестнадцатеричных значений: Если F7 соответствует 1C в шестнадцатеричной системе, вам нужно будет найти и отсканировать штрихкоды, соответствующие "1", затем "C". Обычно для этого в руководстве есть штрихкоды для каждой цифры (0-9) и буквы (A-F).
      • Сканирование последовательности управляющих символов: В редких случаях может потребоваться сканирование комбинации, например, "Ctrl" + "L" (что соответствует ASCII 12) или другого управляющего символа, который сканер интерпретирует как F7.
    • Возможно, также потребуется выбрать определенный "Набор экранирующих символов" (Escape Character Set) или "Режим работы функциональных клавиш" для корректной работы, если функциональные клавиши не распознаются стандартно. Внимательно изучите раздел, посвященный настройке функциональных клавиш или специальных символов.
  4. Сохранение настроек и выход: После того как вы отсканировали все необходимые штрихкоды для F7 и убедились в правильности ввода, завершите процесс, отсканировав штрихкод "Save", "Exit Setting Mode" или "End Configuration". Это применит сделанные изменения и выведет сканер из режима программирования.

Если найти конкретные штрихкоды для F7 не удается, возможно, придется использовать универсальные таблицы ASCII-кодов и искать возможность ввода шестнадцатеричных значений напрямую. Некоторые сканеры предлагают штрихкоды для каждой цифры (0-9) и буквы (A-F), что позволяет вводить любой шестнадцатеричный код. Для F7 это будет последовательность, соответствующая 0x1C (шестнадцатеричному значению). Проверьте раздел руководства, который описывает "Direct ASCII Input" или "Hexadecimal Value Input".

В случае крайних затруднений, мы можем попробовать сбросить настройки сканера до заводских, отсканировав штрихкод "Restore Factory Defaults" или "Factory Reset". Однако имейте в виду, что это удалит все пользовательские настройки, включая любые ранее настроенные суффиксы или другие параметры, и сканер вернется к своим исходным параметрам. После сброса потребуется повторить всю процедуру настройки префикса заново.

Настройка обработки обслуживания сканера в 1С:Комплексная автоматизация 1.1

После успешной настройки сканера на отправку префикса F7, нам необходимо убедиться, что ваша конфигурация 1С:Комплексная автоматизация 1.1 (особенно если она сильно переделана, как в нашем случае) правильно обрабатывает этот символ. В старых и сильно модифицированных конфигурациях часто возникают сложности с использованием стандартных драйверов торгового оборудования, поэтому многие пользователи предпочитают работать со сканерами в режиме эмуляции клавиатуры и настраивать обработку обслуживания вручную. В качестве альтернативы ручной доработке можно использовать обработку обслуживания сканеров на базе NativeAPI для типовых конфигураций.

Рассмотрим, как можно попытаться настроить префикс в обработке обслуживания 1С. Обычно для работы со сканерами в 1С используются внешние обработки обслуживания, например, 1CScanOPOSScan_v2.epf. Этот файл представляет собой внешнюю обработку, которая содержит логику взаимодействия с подключаемым оборудованием.

Откройте вашу внешнюю обработку 1CScanOPOSScan_v2.epf в режиме конфигуратора. Мы должны найти модуль формы настройки или основной модуль обработки, который отвечает за инициализацию параметров сканера или его формы. В данном случае, в процедуре ПередОткрытием формы настройки, можно попытаться явно указать ожидаемый префикс. Эта процедура выполняется при каждом открытии формы настроек обработки, что позволяет установить или изменить параметры по умолчанию.

Пример кода, который был предложен в обсуждении, демонстрирует попытку программно установить префикс. Давайте его проанализируем, чтобы понять логику и возможные причины его неработоспособности:


// В модуле формы настройки обработки 1CScanOPOSScan_v2.epf
// В процедуре ПередОткрытием

// Попытка установить префикс F7, если он не определен или пуст
Префикс = ?(времПрефикс = Неопределено ИЛИ времПрефикс = "", "#150", времПрефикс);

Разберем этот фрагмент подробнее:

  1. Переменная Префикс здесь, очевидно, предназначена для хранения символа префикса, который 1С будет ожидать от сканера. Когда сканер отправляет данные, обработка будет проверять, начинается ли последовательность символов с этого Префикс.
  2. Оператор ?(Условие, ЗначениеИстина, ЗначениеЛожь) является тернарным оператором 1С, который позволяет в одну строку выполнить условное присваивание. Он проверяет два условия: определена ли переменная времПрефикс (то есть, была ли она ранее инициализирована или считана из настроек) и является ли она пустой строкой.
  3. Если времПрефикс не определена или пуста (то есть, префикс еще не был установлен или прочитан откуда-либо), то переменной Префикс устанавливается значение "#150".
  4. Если же времПрефикс уже содержит какое-то значение (например, было загружено из сохраненных настроек пользователя), то используется это значение, что позволяет сохранять индивидуальные настройки.

Возможная причина, по которой данный код "не помогает", заключается в несоответствии ASCII-кода. Клавиша F7, как мы уже упоминали, обычно соответствует ASCII-коду 28 (десятичный) или 0x1C (шестнадцатеричный). Символ #150 в 1С является представлением ASCII-кода 150 (десятичное) или 0x96 (шестнадцатеричное). Это совершенно другой символ, который никак не связан с F7. Если сканер настроен на отправку ASCII 28, а 1С ждет ASCII 150, то они просто не "поймут" друг друга.

Давайте рассмотрим, как мы можем скорректировать этот подход, если мы хотим, чтобы 1С распознавала F7, которая имеет ASCII-код 28. В 1С для получения символа по его ASCII-коду мы можем использовать функцию Символ().

Рекомендации по отладке и проверке для 1С:

  1. Проверьте, какой символ отправляет сканер: Прежде всего, нам необходимо точно узнать, какой символ отправляет сканер, когда он настроен на F7-префикс.
    • Подключите сканер к компьютеру (без 1С) и откройте любой текстовый редактор, например, Блокнот, Wordpad или Notepad++.
    • Отсканируйте штрихкод со сканера, настроенного на F7-префикс.
    • Если в Блокноте перед данными штрихкода появляется символ, который вы не можете увидеть, который выглядит как пустой квадрат, или курсор просто перемещается без видимого символа – это типичное поведение для непечатаемого управляющего символа F7 (ASCII 28).
    • Для более точного определения можно использовать специализированные утилиты для просмотра ASCII-кодов или hex-дампов ввода с клавиатуры. Если сканер эмулирует нажатие F7, то в таких утилитах вы увидите именно этот код.
  2. Экспериментируйте с кодами в 1С: Если вы уверены, что сканер отправляет F7 (ASCII 28), попробуйте различные варианты установки префикса в коде 1С в вашей обработке 1CScanOPOSScan_v2.epf:
    • Наиболее вероятный корректный вариант:
      
      // В модуле формы настройки обработки 1CScanOPOSScan_v2.epf
      // В процедуре ПередОткрытием
      
      // Установка префикса F7 (ASCII 28)
      Префикс = Символ(28); 
      
      Мы используем функцию Символ(28) для получения символа с десятичным ASCII-кодом 28, который соответствует F7.
    • Проверка на случай, если F7 отправляется как Escape-последовательность: В некоторых системах F7 может эмулироваться как последовательность символов, например, Escape (ASCII 27) с последующими символами. В этом случае нам пришлось бы анализировать всю строку ввода. Однако, для большинства сканеров в режиме HID, F7 отправляется как один управляющий символ.
  3. Анализ стандартных драйверов: Даже если вы не можете установить драйвер для вашей старой конфигурации, полезно изучить исходный код стандартных обработок обслуживания для более новых версий 1С (например, из актуальных конфигураций 1С). Там часто есть более сложная логика распознавания различных префиксов и суффиксов, а также обработки функциональных клавиш, что может подсказать корректное представление F7 или других управляющих символов в коде 1С.
  4. Регистрация оборудования: Убедитесь, что сканер корректно зарегистрирован в справочнике "Подключаемое оборудование" (или его аналоге в КА 1.1) и что для него выбрана правильная обработка обслуживания, даже если это эмуляция клавиатуры.

Заключение

Настройка префикса F7 для сканера Digifors Scan 25 2D BT и его корректная работа с 1С требует двухстороннего подхода: правильная конфигурация самого сканера с использованием системных штрихкодов и адаптация обработки обслуживания 1С для распознавания этого префикса. Внимательное изучение руководства сканера, точное определение ASCII-кода, отправляемого сканером, и тщательная отладка кода в 1С помогут достичь желаемого результата.

В случае с устаревшими конфигурациями 1С, такими как Комплексная автоматизация 1.1, этот процесс может быть более трудоемким из-за отсутствия актуальных драйверов и специфики старых механизмов работы с внешним оборудованием. Мы выяснили, что ключ к успеху лежит в точном сопоставлении символа, отправляемого сканером (например, ASCII 28 для F7), с символом, который ожидает 1С, и правильной его программной интерпретации с использованием функции Символ(). При сложностях с настройкой оборудования в таких базах может помочь обработка для подключения сканера в режиме совместимости с 8.2.

← На главную