1С и xml-rpc (python) для 1С


Готовый сервер 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.

https://infostart.ru/public/20253/

Скачать:
20253_1_1S_i_xml-rpc_(python).zip
20253_2_1S_i_xml-rpc_(python)..py
20253_3_1S_i_xml-rpc_(python).ert
20253_4_1S_i_xml-rpc_(python)..py
20253_5_1S_i_xml-rpc_(python)..py
20253_6_1S_i_xml-rpc_(python).erv
20253_7_1S_i_xml-rpc_(python)..py