Skip to content

validtugrikov/API_bitrix24_1C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Для организации обмена данными между 1С и Bitrix24 с использованием PHP, FastAPI и 1С, можно следовать следующей схеме:

Схема обмена данными

  • PHP код в Bitrix24: Отправляет запрос с помощью curl к FastAPI приложению.
  • FastAPI приложение: Обрабатывает запрос от Bitrix24, формирует данные в формате XDTO и отправляет запрос к 1С с использованием requests.post.
  • 1С: Получает и обрабатывает данные, отправленные с FastAPI приложения.

Шаги реализации

  1. PHP код в Bitrix24

В вашем бизнес-процессе Bitrix24, используйте curl для отправки данных на FastAPI приложение. Пример кода на PHP:

<?php
$data = array(
    "name" => "Example Name",
    "email" => "example@example.com"
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://your-fastapi-server/api/endpoint");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
));

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

  1. FastAPI приложение

Создайте приложение на FastAPI, которое будет принимать запросы от Bitrix24 и отправлять их в 1С. Пример кода на Python с использованием FastAPI и requests:


from fastapi import FastAPI, Request
import requests
import json

app = FastAPI()

@app.post("/api/endpoint")
async def handle_request(request: Request):
    data = await request.json()
    
    # Формирование данных в формате XDTO
    xdto_data = {
        "name": data["name"],
        "email": data["email"]
    }
    
    # Отправка данных в 1С
    response = requests.post(
        "http://your-1c-server/api/endpoint",
        json=xdto_data,
        headers={"Content-Type": "application/json"}
    )
    
    return {"status": "success", "1c_response": response.json()}


  1. Обработка запроса в 1С

Создайте обработчик в 1С, который будет принимать запросы и обрабатывать данные в формате XDTO. Пример кода на 1С:

Процедура ОбработатьЗапрос(Запрос)
    HTTPЗапрос = Новый HTTPЗапрос(Запрос);
    ТелоЗапроса = HTTPЗапрос.ПолучитьТелоКакСтроку();
    Данные = СтрНайти(ТелоЗапроса);
    
    // Пример обработки данных
    Имя = Данные["name"];
    ЭлектроннаяПочта = Данные["email"];
    
    // Обработка данных (сохранение в базе и т.д.)
    
    HTTPОтвет = Новый HTTPОтвет(200);
    HTTPОтвет.УстановитьТело(Новый HTTPСообщение(Новый Строка(Формат("Данные успешно получены: %1", Имя))));
    Запрос.ОтправитьОтвет(HTTPОтвет);
КонецПроцедуры

Пример схемы взаимодействия

  • Bitrix24 (PHP):
    • Отправка данных на FastAPI приложение.
    • curl запрос с данными в формате JSON.
  • FastAPI (Python):
    • Прием данных от Bitrix24.
    • Формирование данных в формате XDTO.
    • Отправка данных в 1С с использованием requests.post.
  • 1С (1C):
    • Прием данных от FastAPI.
    • Обработка и сохранение данных.

Пример XDTO данных

Формат XDTO данных может быть любым, но для примера это может быть JSON:

{
    "name": "Example Name",
    "email": "example@example.com"
}

Таким образом, схема обмена данными между 1С и Bitrix24 с использованием PHP, FastAPI и 1С будет состоять из четко определенных шагов по передаче данных между системами, обеспечивая гибкость и масштабируемость интеграции.


Немного P.S

Мне невдомек, какой у вас IDE, предположу лайт вариант. В файле main.py вставить

if __name__ == "__main__":
    pass
    uvicorn.run(app, host="192.168.1.2", port=8000
                # , ssl=ssl_context
                )
    '''uvicorn.run(
        # app,
        "__main__:app",
        host="192.168.1.2", port=8000,
        reload=True,
        # workers=2,
        ssl_keyfile="./key.pem",
        ssl_certfile="./cert.pem")
    '''

Если приложение запустили, то откройте страницу http://localhost:8000/docs и тестируйте на здоровье)

Я только ЗА, чтобы происходила не демонизация guicorn/uvicorn, а чтобы приложение запускалось через Supervisor с помошью start_app.sh

#!/bin/bash
#  --worker-class $WORKER_CLASS \

NAME=app_b24-fastapi
DIR=/home/myuser/app_b24
USER=owner
GROUP=owner
WORKERS=3
WORKER_CLASS=uvicorn.workers.UvicornWorker
VENV=$DIR/.venv/bin/activate
BIND=0.0.0.0:8100
LOG_LEVEL=error

cd $DIR
source $VENV

exec gunicorn wsgi:app \
  --name $NAME \
  --workers $WORKERS \
  --user=$USER \
  --group=$GROUP \
  --bind=$BIND \
  --log-level=$LOG_LEVEL \
  --log-file=-

Как Вы настроите nginx и какие задачи решаете, не знаю, но вот примерно как может выглядеть файл конфигурации для вашего ресурса

        location /app_b24 {
            proxy_pass http://localhost:8100/;
            proxy_read_timeout 300;
            proxy_connect_timeout 300;
            proxy_set_header Host $host;
            #proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
        }
        location /swaggeruiapp_b24 {
            proxy_pass  http://127.0.0.1:8100/docs/;
        }

Может, это все - лишнее (https) не будете применять, тогда хотя-бы сделайте намек на микросервис, огородив доступ с помошью iptables

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages