После того как нам принесли новый терминал для работы с драйвером Сбербанка, который наотрез отказался работать с терминалом через проброшеный RDP порт, возникла идея, нужно было либо ставить сторонние программы для проброски порта, а такой опыт у нас был, но работало это тоже не всегда стабильно. Тогда возникла мысль написать свой драйвер или обертку для работы с 1С через сеть по протоколу HTTP.
Полазив по инету я нашел несклько точек входа в драйвер Сбербанка
- sbrf.dll - для обращения нужно вызывать методы COM
- sbrfcom.dll - обертка для 1С, но для обращения тоже нужно вызывать методы COM
- pilot_nt.dll - для обращения можно вызывать обычные экспортные функции, их много, документация достаточно запутанная
- sb_pilot.exe - еще одна обертка драйвера подходит для DOS и Windows программ принимает параметры во входящей строке, возвращает данные в виде файлов "e" и "p"
Хорошим языком для быстрого написания Web серверов является Go (GoLang). А он, как известно, не дружит с COM технологией от Microsoft. По крайней мере в течении пары часов не удалось его подружить даже используя наработки, которые есть в интернете. Изрядно помучав sbrf.dll и sbrfcom.dll, вдруг наткнулся на "pilot_nt.dll", который содержит уже обычные экспортные функции, к которым можно обратиться на Go. Но также был найден sb_pilot.exe и неплохая документация к нему, поэтому выбор в качестве точки входа пал на него.
На языке Go написан драйвер обертка sb_pilot_web.exe который поднимает web сервер на нужном порту, принимает команды вида http://localhost:8081/do?p1=...&p2=...&p3=...&p4=.... переадресует их sb_pilot.exe, ждет выполнения и возвращает ответ в формате JSON.
Обработка торгового оборудования SberBankES_v2.epf от Сбербанка, которая работает с sbrfcom.dll, исправлена для работы с новым веб сервисом-оберткой. Названа она sb_pilot_web.epf.
Порядок установки решения:
- установить и настроить драйвер от Сбербанка на клиентскую машину (это тот где loadparam.exe)
- убедиться, что в комплекте с драйвером есть обертка sb_pilot.exe (может быть в отдельном каталоге WinCLI), если ее нет, то нужно установить.
- скопировать в папку с sb_pilot.exe файлы sb_pilot_web.exe и sb_pilot_web.ini
- установить в 1С в качестве обработки торгового обслуживания sb_pilot_web.epf
- указать в 1С адрес и порт нашего веб сервера
- запустить на клиентской машине sb_pilot_web.exe
- у 1С должен быть доступ к клиентской машине по сети (например, через VPN)
Примечание:
Сервер использует HTTP, а не HTTPS. Никакой авторизации тоже нету. Подразумевается, что все работает в защищенной локальной сети (поднимайте VPN)
Список файлов:
- sb_pilot_web.exe - Обертка, которую нужно запустить
- sb_pilot_web.ini - тут прописывается порт, на котором нужно поднять сервер
- sb_pilot_web.epf - обработка торгового обслуживания для 1С
Список дополнительных файлов:
- TradeWareEpfTester.epf - обработка для отладки внешних обработок оборудования
- TradeWareEpfTester.ini - тут лежит путь к файлу обработки, который нужно отлаживать
- разная документация от Сбера, которую удалось найти в интернете.
Обработка проверена на конфигурации: "Управление торговлей", редакция 10.3 (10.3.88.3)
Релиз платформы: 1С:Предприятие 8.3 (8.3.24.1667)