1. Подключение сканеров Datalogic.
В самом начале, т.к. сканер беспроводной, необходимо подружить сканер с подставкой. Включаем подставку в USB и в соответсвии с руководством пользователя привязываем сканер к базе. Для этого необходимо считать управляющие штрихкоды и ввести ПИН-код сканера из 4-х цифр. Цифры задаём так же считывая штрих коды из таблицы, приведённой в руководстве. Т.к. сканеров у нас было несколько, то для каждого был заведён свой пин-код. После ввода пин-кода сканер сообщит о подключении к подставке радостным пиканьем 🙂 Далее считываем управляющие штрихкоды для перевода сканера в режим «USB в эмуляции COM» и на всех рабочих станциях, где подключено оборудование установливаем драйвера эмуляции COM порта. Драйвера брали последние с официального сайта Datalogic. Сканер имеет три режима работы при потери связи с базой:
- При потери связи не передавать ничего.
- Передавать считанные штрихкода при восстановлении связи
- Собирает все штрих коды во внутренней памяти и выгружает на компьютер после считывания управляющего штрихкода о выгрузке.
Режимы настраиваются так же путём считывания управляющих штрихкодов из руководства. При тестировании второй режим не всегда передавал данные, в третьем так же были замечены потери данных при передаче (видимо 1С не успевает отрабатывать поток штрихкодов), оставили работать в первом режиме. В этом случае, если штрихкод не передан на базу, сканер сообщает длительным бипом, удачная передача сопровождается двойным бипом.
Проброс COM портов осуществляется установкой флажка порты на закладке локальные ресурсы rdp.
Так же на сервере необходимо проверить разрешение на подключение COM портов удалённого клиента: Администрирование-Службы терминалов-Конфигурация служб терминалов, закладка Параметры клиента:
Т.к. порты виртуальные, то на сервере в диспетчере задач они не появляются, но исправно работают. Проверить, что порты подключены можно в реестре в ветке HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM или различными утилитами. Т.к. устройств несколько, то на каждой рабочей станции желательно присвоить им разные номера COM портов, что б при одновременном подключении они не комфликтовали.
Далее устанавливаем на сервере драйвер сканера штирхкода SCANOPOS и настраиваем сканеры в 1С как локальные.
2. Подключение сканера Honeywell.
Тут процедура по сути аналогичная, не требует заморочек с подключением подставки, но так же необходимо перевести сканер в режим «USB в эмуляции COM» путём считывание управляющего штрих кода и установить драйвера эмулятора на рабочих станциях. Тут возникла другая проблема в связи с тем, что сканеры переключаются между компьютером кассы и приёмке, при возвращении сканера на место слетает установленный в диспетчере устройств номер COM-порта. Сейчас реализовано следующее, сканер был определен во всех USB портах, далее в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSB находим нужное устройство, в нем подчинённые ветки для каждого USB порта, для каждого меняем параметр FriendlyName (влияет только на отображение устройства в диспетчере задач) и во вложенной ветке Device Parameters меняем параметр PortName на нужный номер COM порта. Пока порты не слетали. Если будут другие предложения, готов обсудить.
3. Подключение ФР.
При подключении ФР Штрих в терминальном доступе, для корректной работы ФР в драйвере необходимо увеличить таймаут (в зависимости от скорости соединения порядка 1000~3000мс ) Рекомендую установить драйвер Штрих в начале локально на рабочей станции. Настроить параметры обмена и таймаут, потом передать выбранные параметры на ФР нажатием кнопки Установить параметры в настройках свойств драйвера. И только потом устанавливать драйвер на сервере и проверять соединение. Если на ФРе установлен маленький таймаут, то установка параметров сразу из терминала может не сработать, о чём драйвер не сообщает.
По информации с сайта тех. поддержки Штриха, при использовании контроллера доменов, для корректного проброса COM портов необходимо что б рабочая станция вошла в домен иначе порт не пробрасывается. У нас проверить не получилось, т.к. используются рабочие группы и порты пробросились без проблем.
4. Разделение оборудования по сессиям.
В типовых конфигурациях до сих пор не реализован механиз разделения оборудования по сессиям, и в нашем случае при открытии товарных документов любым пользователем, 1С пытается включить всё подключенное к текущему компьютеру оборудование (в нашем случае это 8 сканеров и два ФР) естественно сделать этого не может, о чём радостно сообщает пользователю несметным количеством ошибок.
Было решено использовать следующий алгоритм. Т.к. оборудование подключено к рабочим станциям, то перед подключением оборудования получаем имя компьютера с которого подключается сеанс. Для этого обращаемся к переменной среды CLIENTNAME. В регистр сведений Торговое оборудование добавлено строковое поле ИмяКлиента. И в модуле обработки СерверТО в процедуре ПодключитьОборудование() добавлена проверка на совпадение имени подключенного клиента с именем клиента для оборудования:
// Добавим проверку по клиенту, если это терминал.
Если ЗначениеЗаполнено(СтрокаТО.ССБ_ИмяКлиента) Тогда
WshShell = Новый COMОбъект("WScript.Shell");
ИмяКомпьютераКлиента = WshShell.expandEnvironmentStrings("%CLIENTNAME%");
Если НЕ СтрокаТО.ССБ_ИмяКлиента = ИмяКомпьютераКлиента Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Лучше выполнить этот кода в попытке, т.к. переменная среды доступна только в контексте терминального подключения и при вызове из локальных подключений может вызвать ошибку.
ФР подключали через сервер печати драйвера или напрямую? Проблем со скоростью печати не было?
На прямую. По сути, как я понимаю сервер нужен для работы с несколькими источниками, тут такой задачи не было. Не большая задержка при печати есть, но не критичная.
«В типовых конфигурациях до сих пор не реализован механиз разделения оборудования по сессиям, и в нашем случае при открытии товарных документов любым пользователем, 1С пытается включить всё подключенное к текущему компьютеру оборудование (в нашем случае это 8 сканеров и два ФР) естественно сделать этого не может, о чём радостно сообщает пользователю несметным количеством ошибок. »
Брешете. В УТ11 (и других конфигурациях на базе БСП) эта проблема давно решена. Но предложенное Вами решение я по умолчанию использовал на всех внедрениях УТ10.
Согласен.. Как-то про БСП даже не подумал. Спасибо за дополнение 🙂 Последнее время всё комплексная, да УПП, для них собственно и писал. По-моему на обычных формах нигде ещё не сделано.
Ещё делали не некоторых проектах аналогичную привязку к пользователю, но тут надо было именно к клиенту привязаться, т.к. пользователи меняются.
Для теста перекидки на сервер СОМ портов я использовал команду на серваке «change port». Для теста устройств программу «HYPERTERMINAL». Может кому пригодится.
(5) MsDjuice, к сожалению, по-моему, начиная с Win Vista HYPERTERMINAL не включен в стандартные. Не пробовали его запускать от старых версий на новых? Работает?
И по «change port», там проблема в том, что нам надо знать номер ком порта на клиенте. А т.к. у нас USB в эмуляции, то иногда номер ком порта может меняться. Решается исправлением ключей реестра.
HYPERTERMINAL от старых на новых не пробовал, качал триал версию, на сайте пишется что подходит для Вин 7,8. Ну так узнать номер Ком порта на клиенте не проблема.
(7) MsDjuice, Ну не проблема, если посмотреть в диспетчер задач. А если неопытный пользователь вытащил сканер и воткнул вместо него флешку и порт поменялся, то он сам не перенастроит потом всё. Т.е. нужен какой-то универсальный механизм, без перенастройки. Была идея сделать скрипт, который бы проверял все номера портов. Но в итоге остановились на изменении реестра.
Если пользователь переподключается по rdp (потеря связи) у вас оборудование перестает работать?
(9) fieryfist, никто не жаловался, точно не могу сказать, но раз не жалуются, то работает. Обрывы связи точно были. Думаю тут может ещё от настроек терминала зависеть, разрешает ли в новый сеанс подключиться или новое соединение делает.
Ну, кстати, зря вы пишите, что нет гипертерминала в windows, начиная с Висты. Насчет именно Висты не могу точно сказать — может действительно там нет, но и в windows 7 и в 8 есть. Просто он отключен.
Пуск — Панель управления — Программы и компоненты — Включение или отключение компонентов windows — Клиент Telnet (ставим галочку).
Самое лучшее решение, это разделять оборудование не по сессиям, а по пользователям и запрещать для пользователя несколко сессий.
Проброс портов — это тривиальное решение.
(13) berator37, Разделять оборудование по пользователям — это полный бред, а не решение. Оборудование подключено к компьютеру, а не к пользователю. И ЛЮБОЙ пользователь входящий в терминал с этого компьютера должен иметь возможность работать с подключенным оборудованием. Это может и применимо для каких-то задач, но явно, не в описанной задаче.
Проброс может и тривиальное решение, за то рабочее. На научную диссертацию и не претендую, просто описал узкие места с которыми столкнулся сам и сталкиваются коллеги.
Здравствуйте!
Воспользовался вашим постом — все заработало, Спасибо!
Но почему-то после перезагрузки сервера оборудование становится недоступным из 1С.
Пишет что Порт недоступен (System Error. Code: 2.Не удается найти указанный файл)
Хотя при этом я открываю «драйвер ккм»(на удаленном рабочем столе) — там указываю порт нужный и нажимаю «Проверка связи» — успешно!
Это на терминальном сервере так.
Может дело в том что кассир(у которого ФР подключен) — заходит в 1С на терминале далеко не первый?
(15) prohorp, Так на вскидку не скажу, не сталкивался. Очень странно, что тест драйвера проходит нормально. Значит порт по идее подключен.
http://www.google.com/search?client=opera&rls=ru&q=настройка+мапинга+портов&sourceid=oper a&ie=utf-8&oe=utf-8#hl=ru&pq=настройка%20мапинга%20портов&xhr=t&q=настройка+мапи нга+портов+терминал&cp=33&pf=p&sclient=psy&newwindow=1&clien t=opera&rls=ru&source=hp&aq=f&aqi=&aql=&oq=настройка+мапинга +портов+терминал&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=8105cc1102691913&biw=1280&bih=844
Попробуйте тут почитать, может что-то поможет:
Может кому пригодится идея: В моём случае связь по rdp была настолько плохой, что чек или выходил через минуту или не выходил вообще. Был сделан костыль — данные чека записывались в файл на фтп, у клиента небольшая программа проверяла наличие файла и если он появлялся, то данные отправлялись на ккм.
Костыль, но уже год работает:)
(17) ASDF2, Да тоже как-то делали такую штуку. И еще для кассы и для ТСД, там вообще была беда с передачей большого объема данных. Идея рабочая ))
я решаю так
Функция ПолучитьИмяКомпьютераТО() Экспорт
Если мИмяКомпьютера = Неопределено Тогда
мИмяКомпьютера = ВРег(ИмяКомпьютера());
Если Константы.ТорговоеОборудованиеИспользуетсяНаСервереТерминала.Получить() = истина тогда
мИмяКомпьютера = мИмяКомпьютера + «_»+глЗначениеПеременной(«глТекущийПользователь»);
КонецЕсли;
КонецЕсли;
Возврат мИмяКомпьютера;
КонецФункции // ПолучитьИмяКомпьютераТО()
Решаю на Linux + RDP, подтверждаю ФР от Штрих так работают, даже с сервером ФР. C принтерами чеков, сканерами COM->TCP софтом на терминалах, на серве или в обратку TCP->COM (довольно устойчиво порты видны не только в сессии) или вовсе использую из 1с как IP:port.
(19) Tarlich, Опять же привязка по пользователю. И если пользователю разрешено несколько сессий и они могут входить с других компьютеров, то не будет работать. Один и тот же пользователь будет подключаться к терминалу с разных рабочих станций — имя компьютера будет одинаковое. А в данном случае это постоянно, т.к. сотрудники меняются между магазинами. Нужно что б подключенное к рабочей станции оборудование работало для ЛЮБОГО пользователя.
Классная статья.
Спасибо, что подсказали, где в реестре посмотреть, какие ком-порты подключены.
Хочу добавить, что в процедуре Подключить оборудование нужно менять и запрос:
Показать
А также, чтобы удобно было настраивать в обработке ТОНастройка в процедуре ОткрытьФормуНастройки нужно дописать:
А вообще конечно плохо что не почитал сразу комменты, вариант с виртуальным именем компьютера мне больше понравился. 😉
Я скомбинировал лучшее, что предложили автор статьи и комментатор Tarlich и сделал следующее:
Показать
Больше ничего и делать не нужно.
Тоже жалею, что не почитал вначале комментарии, сэкономил бы кучу времени
Кто-нибудь с ФР от Штрихов решил проблему с медленной печатью чеков.
Проверял просто из драйвера.
Тестовый стих из драйвера «Мой дядя самых честных правил…» печатается с очень большой задержкой. Пользовался только драйвером 4.10, Новые 4.11 и 4.12 еще не пробовал.
Короткие одиночные команды типа «печать x-отчета» проходят быстро, а с методом «Печать строки» какая-то борода…
Чек ККМ с длинными наименованиями, с именами клиентов и прочей строковой информацией печатается мелкими рывками.
Почему драйвер штриха так сильно критичен к пингу?
Можно запрос и не менять а в Функцию ПолучитьИмяКомпьютераТО() написать так
Здесь и определение на локальную машину без терминала
(24) sancho86,
если еще актуально, то скорее всего дело в скорости.
х-отчет скорее всего уходит на ФР как команда, а строка печатается возможно в графике — тогда вероятно выбрана скорость маленькая
Коллеги кто сталкивался с проблемой печати ФР:
Пытаемся подключить удаленные магазины к работе в 1С:ERP. Пользователь подключается к терминальному серверу, пробрасываем com порт по VPN каналу. Настраиваем фискальный регистратор, оборудование проходит тестирование, при создании чека ККМ появляется сообщение, что фискальник подключен(зеленая галка), но когда пробиваем чек — печать чека не происходит.
В чем может быть причина?
Мой вариант:
1.снимаем галку ТолькоПросмотр с формы списка регистра сведений Торговое оборудование
2.в обработке ТОСервер меняем:
Показать
редактируем в регистре ИмяКомпьютера по правилу: если это локальное подключение, то остается просто ИмяСервера, если терминал, то ИмяСервера_ИмяКомпаКлиента
Кто-нибудь встречался с такой проблемой.
При подключение пользователя к УТ 10 режим кассира через RDP и при наличии оборудования, 1С вылетает с записью в дамп.
Пользователь RDP входит только в группу Пользователи удаленного рабочего стола.
При добавлении в группу Администраторы все работает нормально.
(29) bashhhh, попробуй отладчиком отловить в какой момент падает, скорее всего, думаю, не получается какую-нт дллельку драйвера подключить и падает в бесконечный цикл или самой длл не хватает прав для работы. Скоррее всего длл какую-то надо зарегистрировать в системе. В общем желательно отловить попытаться. Там правда есть нюанс с тем, что обработки обслуживания как внешние запускаются.
А как будет понятно в какой момент падает, там можно будет подумать что делать )
А группа обычные пользователи есть у него? Если опытного пользователя добавить тоже падает?
(24)
http://infostart.ru/public/544687/
Наш вариант решения проблемы печати из RDP сессий:
Также попутно получаем возможность печати с нескольких рабочих мест на одном ККМ.
Реализована очередь печати, виртуальная контрольная лента, которую можно просмотреть через браузер (реализован мини-вебсервер для контроля и управления настройками по сети).
в попытку оборачивать может и не надо
при обращении к несуществующей переменной окружения вернется просто это заданное имя переменной, т.е. при выполнении на локальном ПК
ИмяКомпьютераКлиента = WshShell.expandEnvironmentStrings(«%CLIENTNAME%»);
в ИмяКомпьютераКлиента будет тупо содержаться строка «%CLIENTNAME%»
(28) понравилась идея использовать тоже поле с разделителем. Но только в моём случае хоть сессия и терминальная, правильнее вышел разрез именно пользователя
Показать
Не нашел готового решения, написал статью
для подключения оборудования отдельным RDP пользователям.
Статья писал очень давно. И метод не совем уже актуален. По этому кто прочитал комментарии тот молодец.
В связи с вводом новых документов кассовая смена, демонстрация кода (28) Сергея Капустина более актуальная, так как совершенно без болезненно для для документов кассовой смены работает.
Странно готовое решение было в комментариях здесь, решил резюмировать и актуализировать отдельно —https://infostart.ru/public/679048/ на мой взгляд самый простой вариант и без сильных травм для конфиги
(29) У меня на 7.7 была такая ситуация с подключением сканера ШК.
Пришлось найти в реестре ветку
[HKEY_LOCAL_MACHINESOFTWAREWow6432Node1CTradeWareScanOPOS]
и добавить пользователя терминала, который работает с ТО, с правами на запись в данную ветку.
После этого все заработало.