Сбербанк подключил терминалы к локальным компьютерам, зарегистрировав библиотеки sbrf.dll и sbrfcom.dll из папки SC552.
Всё нормально работает на локальном компе.
А у меня была задача реплицировать эти терминалы на удалённый сервер через RDP.
Один терминал ставится на сервер без проблем: Копируется папка SC552 не важно куда на сервер, и регистрируются упомянутые DLL с помощью regsvr32 с правами администратора. Всё работает.
Когда ставил так же второй терминал, скопировал папку SC552, предварительно переименовал её в SC5521. Зарегистрировал DLL из этой папки.
Вот тут возникла проблема. Когда регистрируешь DLL из SC552, с 1С работает первый терминал, когда из SC5521, работает второй. А одновременно никак.
Судя по всему, Сбербанковские драйвера не предполагают, что к одной машине может быть подключено более одного терминала.
Я решил эту проблему так:
Создал для каждого соответствующего пользователя (магазина) по скрипту .BAT, который запускается при входе пользователя и состоит из команды: "SUBST X: c:\sc552" или "SUBST X: c:\sc5521" соответственно.
В результате у каждого из пользователей монтируется собственный диск X, на котором лежат его собственные настройки.
Далее пришлось руками поискать по реестру (через regedit) и изменить везде ссылки c:\sc552 или c:\sc5521 на x:\
Может, странное решение но всё работает. Каждый магазин видит свой терминал и все работают одновременно.
Судя по всему, Сбербанковские драйвера не предполагают, что к одной машине может быть подключено более одного терминала.
Пожалуй вернее будет сказать что используемая в 1С обработка обслуживания это не предполагает, потому что сберовский софт из разных папок работает.
Так, в частности, работает со сбером АТОЛовский "драйвер платежных систем": при выборе типа АС "Сбербанк" там нужно указать папку. Например, на одном объекте у меня сделано так: есть две сбербанковские папки, причем настроенные на разные фирмы; в программе (Frontol) два логических устройства соответственно на эти папки, при оплате вызывается одно из них и идет оплата на нужную фирму.
В обработку обслуживания не лазил, но сильно подозреваю что туда тоже можно добавить настройку на определенную папку.
Вариантов три смысл всех в одном и том же -каждому пользователю отправлять компоненту в его папку:
1. Переделать регистрацию с HKLM в HKCU
Удаляем регистрацию sbrf.DLL - чтобы не мешалась
Регистрируем для каждого пользователя ручками
убрать .txt
для других заменить путь c:\\pilot_nt\\kassa1\\sbrf.dll например на c:\\pilot_nt\\kassa2\\sbrf.dll во всех местах файла
2. Использовать при загрузке скрипт с командой
SUBST X: c:\pilot_NT\kassa1
Для второго
SUBST X: c:\pilot_NT\kassa2
Библиотеку sbrf.dll регистрируем админом по пути X:\
3. Тоже самое только использовать можно сетевой диск командой net use
Во всех случая рекомендую использовать права каждому пользователю только на его папку - чтобы не случайно не запортить папку другого терминала.
Увидел тему, долго искал инфу, может кому пригодиться.
Как было сделано у нас(конфигурация самописная, 7.7).
1. Создаем на сервере терминалов папку Teminal в ProgramFiles, даем права на доступ пользователям.
2. Кидаем в эту папку все dll из локальной папки SC552
3. Регистрируем sbrf.dll, sbrfcom.dll (от локального администратора) в ранее созданной папке(на терминале)
4. Меняем com-порт на всех рабочих станциях, на которых установлен терминал, на одинаковое значение(сом5, например)
5. Кидаем папку SC552 с локального компьютера на сервер терминалов в папку Пользователи (Users) в папку того пользователя (папку профиля пользователя), под чьей учеткой будет заходить на сервер терминалов (например, c:\users\Admin\sc552)
6. Создаем(редактируем) файл pinpad.ini в ранее созданной папке Terminal. Должен содержать следующие строки:
EnableUSB=0
ComPort=5
WorkingDir=%UserProfile%\SC552
TlvDir=%UserProfile%\SC552
После этого должно заработать.
Указанная схема работает примерно с 30 терминалами стабильно.
Сталкивались с некорректной работой USB-терминалов-отваливались через некоторое время работы, проблема исчезла после замены терминалов на com-подключение.
(5) Denger, ситуация следующая. Имеется два пользователя. user1 работает на локальной учетной записи и терминал сбербанка подключен по COM1 физически. User2 работает через RDP терминал подключен по USB (эмуляция COM порта) Com7. Порт пробрасывается нормально на сервер. Второму пользователю, у которого эмуляция COM, EnableUSB=0 в pinpad.ini не прописовала. COM порты указываются у каждого пользователя в свое папке соответственно.
Проделав все пункты ранее Вами описанные имею следующее поведение. У обоих пользователей 1С активирует терминал первого пользователя. Всегда. То есть тест устройства в настройках 1С активирует терминал первого пользователя. Как это победить ума не приложу.
Спасибо mas55555 за предложенное решение, столкнулся с такой же проблемой, голову сломал в поиске решения, Ваше меня очень выручило. Немного не красиво вышло, что запуск bat файла пришлось делать из ПриНачалеРаботыСистемы, т.к. RDP у нас запускается сразу с 1С и меню автозаргузки игнорируется.
могло не помочь,если имена пользователей на кириллице. Кроме того, было замечено, что свежие компоненты Сбербанка берут номер com порта из каталога пользователя (например, с:\\users\user1\sc552\pinpad.ini, а не как было описано выше).Порты точно пробрасываются(командная строка-change port, должно быть что-то вроде "com1=device\RdpDrPort\;com1:1\tsclient\com1")?
2 варианта в зависимости от версии компоненты сбербанка:
свежая версия: смотрит на настройки в файле pinpad в каталоге пользователя
старая версия: в каталоге Terminal (где лежит sbrfcom.dll)
Похоже на поведение старой версии компоненты, т.е. компонента берет порт из файла pinpad
(11) Denger, в каталоге Terminal вообще не указывала номер порта. Номера портов прописаны в папках пользователя. И почему компонента обращается именно к первому терминалу на COM1 мне непонятно 0_о
Версии: sbrf.dll - 20.0.20.0; SBRFCOM.dll - 1.0.0.1