Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 15:03

Заполнение табличной части Операции через Odata

Автор GenMarat, 19 мая 2024, 18:30

0 Пользователей и 1 гость просматривают эту тему.

GenMarat

Добрый день!
Пытаюсь создать и заполнить документ "Операция" через протокол Odata.
С созданием и заполнением шапки документа все хорошо. Через метод POST все проходит.
Но вот как заполнять табличную часть, не могу сообразить. Как заполнить СчетаДт, счетаКт, сумму и пр.?

1С:Предприятие 8.3 (8.3.23.1865) Бухгалтерия предприятия, редакция 3.0 (3.0.152.28)
Поля, возвращаемые через GET:
{'DataVersion': 'AAAAAAACGdw=',
 'Date': '2024-12-31T12:00:01',
 'DeletionMark': False,
 'Number': '00ВБ-000020',
 'Posted': False,
 'Ref_Key': 'e0c6e82d-15ef-11ef-be4b-000c29b0efcb',
 'odata.metadata': 'https://host/base/odata/standard.odata/$metadata#Document_ОперацияБух/@Element';,
 'Комментарий': '',
 'МежотчетныйПериод': False,
 'Организация@navigationLinkUrl': "Document_ОперацияБух(guid'e0c6e82d-15ef-11ef-be4b-000c29b0efcb')/Организация",
 'Организация_Key': '9792c95a-d87c-11e4-a63b-00155d010a04',
 'Ответственный@navigationLinkUrl': "Document_ОперацияБух(guid'e0c6e82d-15ef-11ef-be4b-000c29b0efcb')/Ответственный",
 'Ответственный_Key': '4893b4d0-91dc-11e5-80e9-0cc47a124028',
 'Содержание': '',
 'СпособЗаполнения': 'Вручную',
 'СпособЗаполнения_Type': 'Edm.String',
 'СторнируемыйДокумент': '',
 'СторнируемыйДокумент_Type': 'StandardODATA.Undefined',
 'СуммаОперации': 144,
 'ТаблицаРегистровНакопления': [],
 'ТаблицаРегистровСведений': [],
 'ТиповаяОперация_Key': '00000000-0000-0000-0000-000000000000'}

Максим75

GenMarat, ну если есть табличная часть в получаемом документе, то она должна быть в JSON.
и тогда обходите этот массив и заполняете документ.

GenMarat

Максим75, json, который я приложил, это все, что возвращается, но в нем нет никакой информации из табличной части

Максим75

GenMarat, ну значит в документе, который Вы получаете через OData нет табличной части.
Код получения дайте.

Когда-то игрался, возвращает все, что есть в документе.
Может Вы при получении указали, что только реквизиты шапки вернуть. Там с OData много заморочек в строке получения.
Вот что пишут в мануале:
Если объект обладает табличной частью, то для получения доступа ко всем записям этой табличной части необходимо добавить имя табличной части после имени самого объекта, например, для получения всех строк табличных частей Товары всех документов РасходТовара будет необходимо выполнить GET-запрос по следующему адресу:
https://host/base/zone/odata/standard.odata/Document_РасходТовара_Товары.

Короче говоря, почитайте, много всякого разного там есть.

GenMarat

Максим75, Да запрос самый банальный
'https://host/base/odata/standard.odata/Document_ОперацияБух?$format=json';
Возвращает все имеющиеся операции. Если к конкретному документу, то по guid
'https://host/base/odata/standard.odata/Document_ОперацияБух(guid'0d253f74-15ec-11ef-be4b-000c29b0efcb')?$format=json';

А как можно узнать имя табличной части?

Максим75

GenMarat, ну должен вернуть все, что есть у объекта.
у меня возвращало все.
узнать имя табличной части - через конфигуратор только.

GenMarat

Максим75, Ты прав, нет в нем табличной части. Спасибо большое!

ElinaDuchess

Я на просторах интернета такой способ доступа к табличной части нашла, но ещё только проверяю
/AccountingRegister_Хозрасчетный?$filter=Recorder eq cast(guid'a661f39a-61e7-4e2c-81fe-3a246777777c', 'Document_ПоступлениеТоваровУслуг')
и ещё остатки на счетах так находила актуальные на сегодня
f"{base_url}/ru_RU/odata/standard.odata/AccountingRegister_Хозрасчетный/Balance(Period=datetime'{period}')?$format=json"

Похожие темы (5)

Рейтинг@Mail.ru

Поиск