Готовый сервер xml-rpc для 1С средствами python.
Принцип работы
1. Создаем классы 1С++ с названием rpc_name и методами с англ. именами с одним параметром param, пример:
function getInfo(param) export
param.result = 0;
return param;
endfunction
2. Прописываем методы которые должны быть доступны удаленно в defcls.prm как открытые
function getInfo(param);
При запуске сервак определит эти методы и зарегистрирует их для удаленного вызова автоматически, о чем будет сообщено в консоле.
3. В файле конфигурации сервака settings.py прописываем строку запуска.
4. Запускаем v77xmlrpc_server.py (что бы небыло видно консоли можно задать расширение pyw), для остановки сервера stop_server.py
5. Дальше читаем google xmlrpclib.
Пример на стороне вызывающей методы программы (в моем случае веб-интерфейс)
import xmlrpclib
client = xmlrpclib.ServerProxy("http://192.168.16.1:888/") # "куда хотим подключиться?"
client.system.listMethods() # покажет все доступные методы на сервере
result = client.rpc_partner_GetMessages({"idpartner":"10"}) # получить список сообщений для партнера с id = 10
if result["result"] == 1: # если на стророне 1С все в порядке, то обработаем дальше полученный список
msg_list = result["table"]
else:
error = result["msg"]
Этот сервак используется и по сей день в комбинации с веб интерфейсом (ubuntu apache mod_python django). вызов методов менее 1сек при загрузке 10 пользователями. Дополнительно использую memcached, поэтому отклик моментальный :).
Дополнительные ресурсы:
http://ru.wikipedia.org/wiki/XML-RPC
http://docs.python.org/library/xmlrpclib.html
http://1cpp.ru/
16.06.09
Выкладываю еще пример того как можно использовать вызовы удаленных процедур внутри 1С.
На практике этот код служит для получения информации по картам c сервака под ubuntu.