You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将1С与Django集成实现商品数据双向互通?

Django商城与1С商品数据交换(CommerceML协议)集成操作指南

一、Django侧前置准备(必须先完成再配置1С端)

  • 开发符合CommerceML 2/3标准的交换接口,固定接口地址如https://你的商城域名/1c_exchange/,必须同时支持GET(鉴权、状态查询)和POST(接收商品数据)请求
  • 实现标准Basic Auth鉴权逻辑,配置1С专用的交换账号密码,示例代码如下:
# Django views.py 核心鉴权及基础响应示例
from django.http import HttpResponse
from django.views.decorators.http import require_http_methods
import base64

@require_http_methods(["GET", "POST"])
def onec_exchange(request):
    # 校验Basic Auth鉴权信息
    auth_header = request.META.get('HTTP_AUTHORIZATION', '')
    if not auth_header.startswith('Basic '):
        response = HttpResponse('Unauthorized', status=401)
        response['WWW-Authenticate'] = 'Basic realm="1C Exchange"'
        return response
    auth_info = base64.b64decode(auth_header.split(' ')[1]).decode().split(':')
    if auth_info != ['你配置的1C账号', '你配置的1C密码']:
        return HttpResponse('Unauthorized', status=401)
    
    # 响应1С标准流程请求
    mode = request.GET.get('mode')
    if mode == 'checkauth':
        return HttpResponse('success\nsessionid\n'+request.session.session_key)
    elif mode == 'init':
        # 配置是否支持压缩、单文件大小上限(单位字节)
        return HttpResponse('zip=no\nfile_limit=10485760')
    # 后续文件接收、XML解析、商品入库逻辑自行实现
  • 提前放行服务器规则:确保WAF、防火墙不会拦截1С的User-Agent请求,不会限制XML格式大体积POST请求,Django的DATA_UPLOAD_MAX_MEMORY_SIZE参数、Web服务器的上传大小上限调整到符合你的商品数据体积要求

二、1С端具体配置步骤(以国内常用的汉化版1С:贸易管理 8、1С:会计核算 8版本为例)

2.1 进入交换配置页面

  • 打开1С管理后台,依次进入「管理」→「数据交换」→「电商站点数据交换配置」
  • 选择「新建交换配置」,交换类型选择「与CMS站点交换」,协议选择CommerceML标准选项

2.2 注册Django接口地址

  • 在「站点交换地址」输入框填入你Django侧的完整接口地址,注意末尾的斜杠不要遗漏,否则Django的自动重定向会导致1С同步失败
  • 鉴权方式选择「Basic Auth(基础鉴权)」,填入你之前在Django侧配置的1С专用交换账号和密码
  • 勾选需要同步的内容:商品基础信息、分类、价格、库存、商品图片、属性参数等,按实际需求选择

2.3 配置同步规则

  • 进入「商品上传规则」页面,选择需要同步到商城的商品分类、对应价格类型、库存统计的仓库范围
  • 配置同步触发方式:可以选择手动触发,也可以设置定时自动同步,建议非高峰时段执行全量同步
  • 点击「测试连接」按钮,1С提示连接成功即代表两端基础通信正常

2.4 触发首次同步

  • 保存所有配置后,点击「上传数据」触发首次全量同步
  • 1С会按照CommerceML标准流程自动执行全流程:鉴权校验→上传分类XML→上传商品基础信息XML→上传价格库存XML→上传商品图片等二进制文件→发送同步完成请求
  • 可以在Django的请求日志中查看每一步的处理状态,出现报错对应调整1С配置或者Django的接口逻辑即可

三、常见配置问题排查

  • 测试连接失败:优先检查接口地址的斜杠是否正确,Basic Auth账号密码是否匹配,服务器是否拦截了1С的请求
  • 商品数据缺失:检查1С侧的上传规则是否勾选了对应分类/属性,确认Django侧的XML解析逻辑兼容你1С导出的CommerceML版本
  • 同步中途中断:检查Web服务器和Django的上传大小限制是否小于你导出的商品数据包体积,确认服务器超时时间配置足够长

内容的提问来源于stack exchange,提问作者Yerke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:54:03