Работа через прокси
Нужно установить переменные окружения:
- ALL_PROXY = http://user:pass@server:port
- HTTP_PROXY = http://user:pass@server:port
- HTTPS_PROXY = https://user:pass@server:port
Публизация базы 1С
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/root" ib="Srvr="server";Ref="base";">
<ws enable="true"
pointEnableCommon="false"
publishExtensionsByDefault="false">
<point
name="brom_api"
alias="brom"
enable="true"
reuseSessions="dontuse"
sessionMaxAge="20">
<accessTokenAuthentication>
<accessTokenRecepientName>gateway</accessTokenRecepientName>
<issuers>
<issuer name="ssl"
authenticationClaimName="sub"
authenticationUserPropertyName="name"
keyInformation="base46(secret)"/>
</issuers>
</accessTokenAuthentication>
</point>
</ws>
<httpServices publishExtensionsByDefault="false">
<service name="lk"
rootUrl="lk"
enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5">
<accessTokenAuthentication>
<accessTokenRecepientName>lk</accessTokenRecepientName>
<issuers>
<issuer name="ssl"
authenticationClaimName="sub"
authenticationUserPropertyName="name"
keyInformation="base64(secret)"/>
</issuers>
</accessTokenAuthentication>
</service>
</httpServices>
<standardOdata enable="true"
reuseSessions="dontuse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<analytics enable="false"/>
<accessTokenAuthentication>
<accessTokenRecepientName>gateway</accessTokenRecepientName>
<issuers>
<issuer name="ssl"
authenticationClaimName="sub"
authenticationUserPropertyName="name"
keyInformation="base64(secret)"/>
</issuers>
</accessTokenAuthentication>
</point>
aiobrom
быстрое погружение:
# импортируем бром
from aiobrom import BromClient
# создаем клиента
cl = BromClient(
wsdl=r'http://10.0.122.127:8088/processing/ws/brom?wsdl',
auth=BasicAuth(username=r'brom', password=r'123456aA'))
# эти креды будут использованны только для загрузки wsdl
# описыаем функцию, вызывающую удаленный код
T = tuple[None, dict[str, str]] # сокращение типа, в данном случае, возвращаемое функцией значение
@cl.decorator_code(r'Результат=Параметр')
def super_code(цена: int, товар: str) -> T | Awaitable[T]: ...
del T # уничтожаем сокращение
# параметры передаются на сервер в виде Массив[2], [0] - args: Массив, [1] - kwargs: Структура
# для вызова сервера нужно установить креды доступа
cl.auth.set(BasicAuth(username=r'brom', password=r'123456aA'))
# можно начинать делать запросы
with cl.sync_mode: # - в синронном варианте
res = super_code(34.5, 'Батон дачный')
async def run(): # - в асинронном варианте
res = await super_code(34.5, 'Батон дачный')
anyio.run(run())
еще больше примеров ...
from datetime import date
from typing import Awaitable
from asyncer import runnify
from httpx import BasicAuth
from aiobrom import BromClient
from aiobrom._model import collection
with BromClient(
wsdl=r'http://10.0.122.127:8088/processing/ws/brom?wsdl',
auth=BasicAuth(username=r'brom', password=r'123456aA')).sync_mode as cl:
token = cl.auth.set(BasicAuth(username=r'brom', password=r'123456aA'))
res_sync = cl.debug_echo(
{'Результат = Параметр'},
324.3434, ('dsfsdf', 3434), {343: 'dsdfsdf'},
{'343': 'dsdfsdf'}, {'Наименование': 343}, Имя="Антон",
Фамилия=collection(r'Справочник.Проекты')())
# @formatter:off
T = tuple[None, dict[str, str]]
@cl.decorator_echo
def echo(param1: str) -> T | Awaitable[T]: ...
del T
# @formatter:on
# @formatter:off
T = tuple[None, dict[str, str]]
@cl.decorator_code(r'Результат=Параметр')
def code(param1: str) -> T | Awaitable[T]: ...
del T
# @formatter:on
# @formatter:off
T = tuple[None, dict[str, str]]
@cl.decorator_method(None, r'ВызватьИсключение')
def method(text:str) -> T | Awaitable[T]: ...
del T
# @formatter:on
with cl.sync_mode:
wr0 = echo(param1=243234)
wr1 = code(param1='243234')
#wr2 = method('Test')
pass
@runnify
async def main():
wr = await echo(param1=243234)
return await cl.execute_code(
'Результат = Параметр',
324.3434, 'dsfsdf', date.today(), Имя="Антон",
Фамилия=collection(r'Справочник.Проекты')())
res_async = main()