|
1С Rest OData $expand реквизита строки табличной части. Реально ли? | ☑ | ||
---|---|---|---|---|
0
tabarigen
03.07.21
✎
11:26
|
Все добра.
Получаю документ по Odata в формате json. Запрос имеет слндующий url данные получаются. &НаСервере Процедура ЗаполнитьДокументПоСсылке(UID) Сообщение = Новый СообщениеПользователю; // Установить имя сервера. СерверИсточник =Константы.АдресСервера.Получить(); Попытка // Создать HTTP-соединение с сервером localhost. HTTPСоединение = Новый HTTPСоединение(СерверИсточник,80,"tsd","89288713000",,Ложь); Исключение // Вывести сообщение об ошибке соединения с сервером. Сообщение.Текст = "Не удалось соединиться с сервером: " + СерверИсточник; Сообщение.Сообщить(); Сообщение.Текст = ОписаниеОшибки(); Сообщение.Сообщить(); Возврат; КонецПопытки; // Создать HTTP-запрос на основе URL. АдресРесурса = "/*******/odata/standard.odata/Document_РеализацияТоваров(guid'" + UID + "')?$format=json"; HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса); Попытка // Получить ответ сервера в виде объекта HTTPОтвет. Результат = HTTPСоединение.Получить(HTTPЗапрос); Если Результат.КодСостояния = 200 Тогда //получить содержимое ответа сервера в виде строки ТекстJSON = Результат.ПолучитьТелоКакСтроку(); ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(ТекстJSON); Док = ПрочитатьJSON(ЧтениеJSON,Истина,"Date"); Если Док.Получить("Ref_Key") = UID Тогда ТоварыНакладной = Док.Получить("Товары"); Если ТоварыНакладной.Количество() > 0 Тогда Для каждого Товар Из ТоварыНакладной Цикл нСтр = Товары.Добавить(); нСтр.Номенклатура = Товар.Получить("Номенклатура_Key"); нСтр.Характеристика = Товар.Получить("Характеристика_Key"); нСтр.Количество = Товар.Получить("Количество"); нСтр.Цена = Товар.Получить("Цена"); КонецЦикла; Иначе Сообщить("Документ пуст"); КонецЕсли; КонецЕсли; Иначе // Вывести сообщение об ошибке при получении ответа сервера. Сообщение.Текст = "Ответ сервера: " + Результат.КодСостояния + Символы.ПС + ОписаниеОшибки(); Сообщение.Сообщить(); КонецЕсли; Исключение // Вывести сообщение об ошибке при получении ответа сервера. Сообщение.Текст = ОписаниеОшибки(); Сообщение.Сообщить(); КонецПопытки; КонецПроцедуры Проблема в том, что у меня в возвращаемых данных для табличной части есть только ссылки на номенклатуру Номеклатура_Key а мен нужно подтянуть наименование как минимум. Насколько я понял из документации параметр $expand не умеет разворачивать реквизиты ТЧ. Так как тогда быть в моем случае?? Для каждой строки делать отдельный запрос? А что если строк пару сотен? А что если откроется одновременно 10 таких документов по несколько сотен строк? Документация с ИТС.. Ограничения параметра $expand: ● Не поддерживается расширение реквизитов табличных частей. ● Не поддерживается расширение при запросе одиночных сущностей (сущность, строки табличной части, запись регистра). ● Расширение ссылочных и составных типов виртуальных таблиц не соответствует протоколу OData версии 3. Запрос, в котором будет выполняться расширение измерения виртуальной таблицы будет выглядеть следующим образом Помогите собраться с мыслями. |
|||
1
Ёпрст
03.07.21
✎
11:42
|
ну и собери все номенклатуры и сделай один запрос на них.
|
|||
2
tabarigen
03.07.21
✎
11:47
|
(1) то есть для получения всех номенуклатура применить $filter=.
Но разве умеет искать вхождение в массив? Или все условия передавать через OR в параметрах get запроса? |
|||
3
Ёпрст
03.07.21
✎
11:56
|
(2) нужно смотреть, что оно там умеет в фильтр. Простые условия, типа не группа, не пометка удаления точно могёт, на счет списка ..не помню.
Я с этим уг сталкивался один раз |
|||
4
Ёпрст
03.07.21
✎
11:56
|
Поищи статьи на нимфостарте, наверняка кто-то распинался, что оно там умеет, или итс почитать.
Да и устаревший одата 3.. |
|||
5
tabarigen
03.07.21
✎
12:09
|
(4) ок. щас проштудирую ИТС
|
|||
6
серый КТУЛХУ
03.07.21
✎
15:36
|
вторым oData - запросом получить нужные Номеклатура_Desc по Номеклатура_Key - не судьба?
|
|||
7
Ёпрст
03.07.21
✎
18:42
|
(6) тут вопрос, можно ли сразу сдалать 1 запрос на нужный список Номеклатура_Key, или пидётся куеву тучу для каждой номенклатуры.
|
|||
8
серый КТУЛХУ
03.07.21
✎
21:32
|
(7) а через or натулить - нэ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |