Использование считывателя(ридера) магнитных карт в native 1С под Linux

14.08.20

Интеграция - Эквайринг/ридер магнитных карт

Обход проблемы отсутствия драйверов торгового оборудования для 1С под Linux

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

У меня имеется клиент, который долго работал на связке 1С(несколько конф на обычных формах)+XUbuntu+NX+Wine@Etersoft, однако Wine@Etersoft перестал устраивать (не работают программные лицензии, проект заброшен и т.п.), однако перейти на native 1C linux-клиент не получалось, т.к. имелось несколько считывателей (ридеров) магнитных карт, которые без wine в 1С запускать не получалось.

Однако сегодня я докопался до рабочего варианта и это простой шелл-скрипт запускаемый из 1С!

Вот примерный вариант получения кода магнитной карты:

ТекстСкрипта = "#!/bin/bash
|rm /tmp/result
|stty -F /dev/ttyUSB0 raw
|stty -F /dev/ttyUSB0 -echo
|while read -rs -n 1 c && [[ $c != '?' ]]
|do
|  echo ""$c""
|done < /dev/ttyUSB0 >> /tmp/result";

РаздРазделитель = "\n";
ИмяВремФайла = ПолучитьИмяВременногоФайла();
Скрипт = Новый ЗаписьТекста(ИмяВремФайла,,,,РаздРазделитель);
Скрипт.Записать(ТекстСкрипта);
Скрипт.Закрыть();

КомандаСистемы("mv "+ИмяВремФайла+" ~/scanscript");
КомандаСистемы("chmod +x ~/scanscript");
КомандаСистемы("~/scanscript");

Текст = Новый ЧтениеТекста("/tmp/result");
Результат = Текст.Прочитать();
Текст.Закрыть();

КомандаСистемы("rm ~/scanscript");

Результат = СтрЗаменить(Результат,Символы.ПС,"");

Сообщить(""+Результат);

Замечания :

  • Используется /dev/ttyUSB0 - это VirtualCOM порт, так что думаю порядочное количество устройств можно так обработать
  • КомандаСистемы("~/scanscript") ожидает ввода именно кода магнитной карты, который оканчивается на ? если у вас не так - она зависнет - правьте текст скрипта
  • Новый ЗаписьТекста("~/scanscript") выдавал ошибку, поэтому пришлось заморочиться с mv
  • КомандаСистемы ждет выполнения, причем и в управляемых формах, так что код должен работать и под упр. форм
  • не ошибитесь с параметрами rm :)
  • Скорее всего скрипт можно и оптимизировать, например не использовать -echo и посимвольный вывод, но в linux я не особо специалист, хотя именно знание того что в linux устройства могут быть обработаны через файлы и натолкнуло на эту идею
  • ВАЖНО! Для работы с этим скриптом из 1С пользователь должен иметь права на чтение у файла /dev/ttyUSB0 (sudo o+r /dev/ttyUSB0) - для Debian-based дистрибутивов достаточно добавить пользователя в группу dialout 

Вступайте в нашу телеграмм-группу Инфостарт

ридер оборудование linux линукс

См. также

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Устали вручную дозаполнять и корректировать документы по банку после загрузки банковской выписки? С помощью правил обработки банковской выписки вы сможете автоматически определять правильный вид хозяйственной операции, заполнять расшифровку, аналитику платежа и многое другое.

19520 руб.

21.03.2023    21305    151    27    

117

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Мастера заполнения Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки, и оно автоматически применится при загрузке выписки, экономя ваше время (Можно настроить отбор по любому реквизиту или по регулярному выражению). Решение позволяет автоматически заполнять расшифровку платежа, исключать загрузку ненужных документов (дублей) из банка, заполнять комиссию за эквайринг и многое другое. Вам не нужно доплачивать за алгоритмы, они уже включены в решение. Автоматическая обработка применяется при загрузке данных как из файлов клиент банка, так и через DirectBank. Доступен AI чат бот который умеет консультировать по функционалу решения.

15250 руб.

20.12.2024    14087    61    27    

57

Кассовые операции Эквайринг/ридер магнитных карт Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Внешнее расширение для конфигурации Управление торговлей ред. 11.5 при создании новых документов "Приходный кассовый ордер" и "Эквайринговая операция" в поля "касса", "договор подключения" и "терминал" поставит значения по умолчанию для текущего пользователя, которые определяются из его настроек Рабочее место кассира (РМК). Аналог персональных настроек.

5 стартмани

24.02.2026    175    0    plkt2    0    

2

Эквайринг/ридер магнитных карт Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Абонемент ($m)

Предлагаю решение для API-интеграции с эквайринговыми терминалами Сбербанка (Kozen).

3 стартмани

04.12.2025    1002    0    Alexez    0    

4

Эквайринг/ридер магнитных карт Пользователь 1С:Предприятие 8 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Доработка для УТ 11.5, позволяющая провести частичную отмену (возврат) по банковскому терминалу.

1 стартмани

27.11.2025    858    0    1Pawel    0    

1
Для отправки сообщения требуется регистрация/авторизация