RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1588041
Accepted
auem
auem
Asked:2024-07-23 16:01:14 +0000 UTC2024-07-23 16:01:14 +0000 UTC 2024-07-23 16:01:14 +0000 UTC

创建 1C OData 命名法

  • 772

大家好!我在向 1C 添加新项目时遇到了问题。

这是我的代码:

import requests
from requests.auth import HTTPBasicAuth
import xml.etree.ElementTree as ET

post_url = 'http://localhost/mc/odata/standard.odata/Catalog_%D0%9D%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D0%B0'

data_to_post = {
    "Description": "Soundqueen ZH0602E15LS",
    "Вес": "5",
    "НаименованиеПолное": "Soundqueen ZH0602E15LS",
    "КатегорияНоменклатуры_Key": "6d8cc3fc-6ae7-11ed-91a8-a068f8f3337c",
    "Комментарий": "Soundqueen ZH0602E15LS - это звукоусилительный комплект, который не требует специальной инсталляции, общая мощность 500 Вт. Подойдет для использования в кафе, бизнес-центре, учебном заведении. В комплект входит активный микшерный пульт (ZH62AD) со встроенным усилителем, двухполосная пассивная акустическая система (2 x FQ013A), металлические стойки, динамический микрофон и необходимая коммутация.",
    "ВидСтавкиНДС": "Общая",
    "СчетУчетаДоходов_Key": "6d8cc3ad-6ae7-11ed-91a8-a068f8f3337c",
    "СчетУчетаЗапасов_Key": "6d8cc382-6ae7-11ed-91a8-a068f8f3337c",
    "СчетУчетаЗатрат_Key": "6d8cc383-6ae7-11ed-91a8-a068f8f3337c",
    "ПризнакПредметаРасчета": "Товар",
}

ns = {
    'atom': 'http://www.w3.org/2005/Atom',
    'm': 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata',
    'd': 'http://schemas.microsoft.com/ado/2007/08/dataservices'
}

root = ET.Element(ET.QName(ns['atom'], 'entry'))
content = ET.SubElement(root, ET.QName(ns['atom'], 'content'), type="application/xml")
properties = ET.SubElement(content, ET.QName(ns['m'], 'properties'))

for key, value in data_to_post.items():
    prop = ET.SubElement(properties, ET.QName(ns['d'], key))
    prop.text = value

xml_data = ET.tostring(root, encoding="utf-8", method="xml")

headers = {'Content-Type': 'application/xml'}

response = requests.post(post_url, auth=HTTPBasicAuth(username='Nick', password=''), data=xml_data, headers=headers)

if response.status_code == 201:
    print("Data successfully posted.")
    print("Response:", response.text)
else:
    print(f"Failed to post data: {response.status_code}")
    print("Response content:", response.text)

答案如下:

Data successfully posted.
Response: <?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom"
        xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
        xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
        xml:base="http://localhost/mc/odata/standard.odata/">
    <id>http://localhost/mc/odata/standard.odata/Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')</id>
    <category term="StandardODATA.Catalog_Номенклатура"
            scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
    <title type="text"/>
    <updated>2024-07-23T09:10:09</updated>
    <author/>
    <summary/>
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ЕдиницаИзмерения"
            href="Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')/ЕдиницаИзмерения"
            type="application/atom+xml;type=entry;charset=utf-8"
            title="ЕдиницаИзмерения"/>
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/НаправлениеДеятельности"
            href="Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')/НаправлениеДеятельности"
            type="application/atom+xml;type=entry;charset=utf-8"
            title="НаправлениеДеятельности"/>
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Склад"
            href="Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')/Склад"
            type="application/atom+xml;type=entry;charset=utf-8"
            title="Склад"/>
    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/СчетУчетаДоходов"
            href="Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')/СчетУчетаДоходов"
            type="application/atom+xml;type=entry;charset=utf-8"
            title="СчетУчетаДоходов"/>
    <link rel="edit"
            href="Catalog_Номенклатура(guid'33a23d6b-48ba-11ef-a305-00155d550200')"
            title="edit-link"/>
    <content type="application/xml"><m:properties xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    <d:ПроверятьЗаполнениеХарактеристики>false</d:ПроверятьЗаполнениеХарактеристики>
    <d:ПодконтрольнаяПродукцияВЕТИС>false</d:ПодконтрольнаяПродукцияВЕТИС>
    <d:ПроверятьЗаполнениеПартий>false</d:ПроверятьЗаполнениеПартий>
    <d:Периодичность>Год</d:Периодичность>
    <d:Поставщик_Key>00000000-0000-0000-0000-000000000000</d:Поставщик_Key>
    <d:Производитель_Key>00000000-0000-0000-0000-000000000000</d:Производитель_Key>
    <d:Объем>0</d:Объем>
    <d:ОбъемДАЛ>0</d:ОбъемДАЛ>
    <d:СпособОграниченияСертификата>НеОграничен</d:СпособОграниченияСертификата>
    <d:ПроизводительИмпортерАлкогольнойПродукции_Key>00000000-0000-0000-0000-000000000000</d:ПроизводительИмпортерАлкогольнойПродукции_Key>
    <d:РеквизитДопУпорядочиванияУНФ>0</d:РеквизитДопУпорядочиванияУНФ>
    <d:РекомендуемЗаказать>false</d:РекомендуемЗаказать>
    <d:Склад_Key>ff235c58-6ae6-11ed-91a8-a068f8f3337c</d:Склад_Key>
    <d:ПроизвольныйНоминал>false</d:ПроизвольныйНоминал>
    <d:ВидСтавкиНДС/>
    <d:СчетУчетаДоходов_Key>6d8cc3ad-6ae7-11ed-91a8-a068f8f3337c</d:СчетУчетаДоходов_Key>
    <d:СпособПополнения>Закупка</d:СпособПополнения>
    <d:СредствоИндивидуальнойЗащиты>false</d:СредствоИндивидуальнойЗащиты>
    <d:СрокИсполненияЗаказа>1</d:СрокИсполненияЗаказа>
    <d:СрокДействияФлагаНовинка>0001-01-01T00:00:00</d:СрокДействияФлагаНовинка>
    <d:СрокПополнения>1</d:СрокПополнения>
    <d:СпособРасчетаЦеныНабора/>
    <d:СчетУчетаЗапасов_Key>00000000-0000-0000-0000-000000000000</d:СчетУчетаЗапасов_Key>
    <d:ТНВЭДГИСМ/>
    <d:УдалитьСтавкаНДС_Key>00000000-0000-0000-0000-000000000000</d:УдалитьСтавкаНДС_Key>
    <d:ТипСрокаДействия>БезОграниченияСрока</d:ТипСрокаДействия>
    <d:СчетУчетаЗатрат_Key>00000000-0000-0000-0000-000000000000</d:СчетУчетаЗатрат_Key>
    <d:ТабачнаяПродукция>false</d:ТабачнаяПродукция>
    <d:ЦеноваяГруппа_Key>00000000-0000-0000-0000-000000000000</d:ЦеноваяГруппа_Key>
    <d:ТипНоменклатуры>Запас</d:ТипНоменклатуры>
    <d:УдалитьСпецификация_Key>00000000-0000-0000-0000-000000000000</d:УдалитьСпецификация_Key>
    <d:ТоварнаяНоменклатураВЭД_Key>00000000-0000-0000-0000-000000000000</d:ТоварнаяНоменклатураВЭД_Key>
    <d:ТолькоПоддержкаОстаткаПриРасчетеПотребностей>false</d:ТолькоПоддержкаОстаткаПриРасчетеПотребностей>
    <d:ФайлКартинки_Key>00000000-0000-0000-0000-000000000000</d:ФайлКартинки_Key>
    <d:ФиксированнаяСтоимость>true</d:ФиксированнаяСтоимость>
    <d:ЭтоНабор>false</d:ЭтоНабор>
    <d:ШиныИПокрышки>false</d:ШиныИПокрышки>
    <d:Ширина>0</d:Ширина>
    <d:ЭтоНовинка>false</d:ЭтоНовинка>
    <d:Ячейка_Key>00000000-0000-0000-0000-000000000000</d:Ячейка_Key>
    <d:ПодакцизныйТовар>false</d:ПодакцизныйТовар>
    <d:ЧастичноеПогашение>false</d:ЧастичноеПогашение>
    <d:ИндивидуальныеНастройкиПолитикиУчетаСерий>false</d:ИндивидуальныеНастройкиПолитикиУчетаСерий>
    <d:ИспользоватьДатуПроизводстваСерии>false</d:ИспользоватьДатуПроизводстваСерии>
    <d:ИспользоватьСрокГодностиСерии>false</d:ИспользоватьСрокГодностиСерии>
    <d:ПолитикаУчетаСерий_Key>00000000-0000-0000-0000-000000000000</d:ПолитикаУчетаСерий_Key>
    <d:ИспользоватьУникальныеСерии>false</d:ИспользоватьУникальныеСерии>
    <d:ЭтоАгентскаяУслуга>false</d:ЭтоАгентскаяУслуга>
    <d:Договор_Key>00000000-0000-0000-0000-000000000000</d:Договор_Key>
    <d:ТочностьУказанияСрокаГодностиСерии/>
    <d:ПрослеживаемыйТовар>false</d:ПрослеживаемыйТовар>
    <d:СрокГодности>0</d:СрокГодности>
    <d:ИспользоватьНаборыЕдиницИзмерения>false</d:ИспользоватьНаборыЕдиницИзмерения>
    <d:ВесПоСертификатуТовара>0</d:ВесПоСертификатуТовара>
    <d:НаборЕдиницИзмерения_Key>00000000-0000-0000-0000-000000000000</d:НаборЕдиницИзмерения_Key>
    <d:ЕдиницаИзмеренияСрокаГодности>Сутки</d:ЕдиницаИзмеренияСрокаГодности>
    <d:КодОКПД2/>
    <d:ПризнакПредметаРасчета/>
    <d:КодТРУ/>
    <d:ДополнительныеРеквизиты m:type="Collection(StandardODATA.Catalog_Номенклатура_ДополнительныеРеквизиты_RowType)"/>
    <d:Штрихкод/>
    <d:ЕдиницаДляОтчетов_Key>00000000-0000-0000-0000-000000000000</d:ЕдиницаДляОтчетов_Key>
    <d:КоэффициентЕдиницыДляОтчетов>1</d:КоэффициентЕдиницыДляОтчетов>
    <d:ПрослеживаемыйКомплект>false</d:ПрослеживаемыйКомплект>
    <d:НоменклатураГруппыЦеновыеГруппы m:type="Collection(StandardODATA.Catalog_Номенклатура_НоменклатураГруппыЦеновыеГруппы_RowType)"/>
    <d:Code>НФ-00000013</d:Code>
    <d:Ref_Key>33a23d6b-48ba-11ef-a305-00155d550200</d:Ref_Key>
    <d:Predefined>false</d:Predefined>
    <d:DataVersion>AAAAGwAAAAA=</d:DataVersion>
    <d:PredefinedDataName/>
    <d:Description/>
    <d:Артикул/>
    <d:IsFolder>false</d:IsFolder>
    <d:DeletionMark>false</d:DeletionMark>
    <d:Parent_Key>00000000-0000-0000-0000-000000000000</d:Parent_Key>
    <d:АлкогольнаяПродукция>false</d:АлкогольнаяПродукция>
    <d:ВерхняяГраницаОстатков>0</d:ВерхняяГраницаОстатков>
    <d:ВариантПечатиНабора/>
    <d:ЕдиницаИзмерения_Key>6d8cc3fe-6ae7-11ed-91a8-a068f8f3337c</d:ЕдиницаИзмерения_Key>
    <d:Вес>0</d:Вес>
    <d:ВариантОграниченияСертификата>ПоНоменклатуре</d:ВариантОграниченияСертификата>
    <d:Весовой>false</d:Весовой>
    <d:Высота>0</d:Высота>
    <d:ВыписыватьГарантийныйТалон>false</d:ВыписыватьГарантийныйТалон>
    <d:ГарантийныйСрок>0</d:ГарантийныйСрок>
    <d:ВидАлкогольнойПродукции_Key>00000000-0000-0000-0000-000000000000</d:ВидАлкогольнойПродукции_Key>
    <d:ВидМаркировки>НеМаркируется</d:ВидМаркировки>
    <d:ДатаИзменения>2024-07-23T09:10:08</d:ДатаИзменения>
    <d:ВидПродукцииИС/>
    <d:АвтоматическиГенерироватьПартии>false</d:АвтоматическиГенерироватьПартии>
    <d:ИмпортнаяАлкогольнаяПродукция>false</d:ИмпортнаяАлкогольнаяПродукция>
    <d:ИспользоватьДатуПроизводстваПартии>false</d:ИспользоватьДатуПроизводстваПартии>
    <d:Длина>0</d:Длина>
    <d:ДатаОкончанияДействия>0001-01-01T00:00:00</d:ДатаОкончанияДействия>
    <d:ИспользоватьСерииНоменклатуры>false</d:ИспользоватьСерииНоменклатуры>
    <d:ИсключитьИзПрайсЛистов>false</d:ИсключитьИзПрайсЛистов>
    <d:Изготовитель_Key>00000000-0000-0000-0000-000000000000</d:Изготовитель_Key>
    <d:ИспользоватьЗаписьСкладскогоЖурналаВЕТИСПартии>false</d:ИспользоватьЗаписьСкладскогоЖурналаВЕТИСПартии>
    <d:ИспользоватьСрокГодностиПартии>false</d:ИспользоватьСрокГодностиПартии>
    <d:ИспользоватьИдентификаторПартииВЕТИСПартии>false</d:ИспользоватьИдентификаторПартииВЕТИСПартии>
    <d:ИспользоватьПартии>false</d:ИспользоватьПартии>
    <d:ИспользоватьПроизводителяВЕТИСПартии>false</d:ИспользоватьПроизводителяВЕТИСПартии>
    <d:НаименованиеПолное/>
    <d:ИспользоватьНомерПартии>false</d:ИспользоватьНомерПартии>
    <d:ИспользоватьХарактеристики>false</d:ИспользоватьХарактеристики>
    <d:КиЗГИСМGTIN/>
    <d:КиЗГИСМВид/>
    <d:КиЗГИСМРазмер/>
    <d:КиЗГИСМ>false</d:КиЗГИСМ>
    <d:КиЗГИСМСпособВыпускаВОборот/>
    <d:КатегорияНоменклатуры_Key>00000000-0000-0000-0000-000000000000</d:КатегорияНоменклатуры_Key>
    <d:КоличествоПериодовДействия>1</d:КоличествоПериодовДействия>
    <d:КодМедицинскогоИзделия/>
    <d:НижняяГраницаОстатков>0</d:НижняяГраницаОстатков>
    <d:Недействителен>false</d:Недействителен>
    <d:Крепость>0</d:Крепость>
    <d:МетодОценки>ПоСредней</d:МетодОценки>
    <d:СтранаПроисхождения_Key>00000000-0000-0000-0000-000000000000</d:СтранаПроисхождения_Key>
    <d:НаправлениеДеятельности_Key>6d8cc3ff-6ae7-11ed-91a8-a068f8f3337c</d:НаправлениеДеятельности_Key>
    <d:Комментарий/>
    <d:Номинал>0</d:Номинал>
    <d:НормаВремени>0</d:НормаВремени>
    <d:ОбувнаяПродукция>false</d:ОбувнаяПродукция>
</m:properties>
    </content>
</entry>

数据似乎消失了,并且在服务器上创建了对象,但只有空值:

在此输入图像描述

请告诉我如何解决这个问题

python
  • 1 1 个回答
  • 41 Views

1 个回答

  • Voted
  1. Best Answer
    auem
    2024-07-23T23:06:28Z2024-07-23T23:06:28Z

    这篇文章很有帮助,我只是按照示例操作,它就起作用了

    import requests # импортируем библиотеку
    import json
    
    def read( # определяем функцию
        entity, # имя сущности
        guid, # идентификатор сущности
        select=None, # выбор только заданных полей сущности
    ):
        url = f'''http://localhost/mc/odata/standard.odata/{entity}(guid'{guid}')''' # конструируем адрес
        headers = dict(Accept='application/json') # задаём тип ответа
        params = dict() # объявляем параметры
        if select is not None: params['$select'] = select # если задан выбор полей, то задаём его
        response = requests.get(url, headers=headers, params=params) # выполняем запрос
        try: json = response.json() # получаем результат и пытаемся преобразовать его в json
        except: raise Exception(response.text) # а в случае неудачи поднимаем исключение
        if 'odata.error' in json: raise Exception(json['odata.error']['message']['value']) # если в результате ошибка, то поднимаем исключение
        return json # возвращаем сущность
    
    def create( # определяем функцию
        entity, # имя сущности
        data, # тело сущности
        select=None, # выбор только заданных полей сущности
    ):
        username = 'Nick'
        password = ''
        
        url = f'http://localhost/mc/odata/standard.odata/{entity}' # конструируем адрес
        headers = dict(Accept='application/json', Content_Type='application/json; charset=utf-8') # задаём тип ответа и кодировку
        json_data = json.dumps(data) # сериализуем словарь в JSON-строку
        response = requests.post(url, auth=(username, password), headers=headers, data=json_data.encode('utf-8')) # выполняем запрос с кодировкой данных
        print(data)
        print(response.json())
        try: 
            json_response = response.json() # получаем результат и пытаемся преобразовать его в json
        except: 
            raise Exception(response.text) # а в случае неудачи поднимаем исключение
        if 'odata.error' in json_response: 
            raise Exception(json_response['odata.error']['message']['value']) # если в результате ошибка, то поднимаем исключение
        if select is not None: 
            return read(entity, json_response['Ref_Key'], select) # если задан выбор полей, то заново читаем и возвращаем сущность
        return json_response # иначе просто возвращаем сущность
    
    data_to_post = {
        "Description": "Товар от OData",
        "НаименованиеПолное": "Товар от OData",
        "КатегорияНоменклатуры_Key": "6d8cc3fc-6ae7-11ed-91a8-a068f8f3337c"
    }
    
    create(entity='Catalog_Номенклатура', data=data_to_post)
    

    戳

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5