Работаю с REST API OData в 1С. С созданием/получением объектов проблем нет.
Но столкнулся с проблемой при добавлении/получении файлов через этот интерфейс.
Создаю объект в "Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы" - создается объект без проблем.
Если посмотреть в $metadata - у объекта есть следующие параметры:
...
<Property Name="Расширение" Type="Edm.String" Nullable="true" />
<Property Name="ТекстХранилище_Base64Data" Type="Edm.Binary" Nullable="true" />
<Property Name="ФайлХранилище_Base64Data" Type="Edm.Binary" Nullable="true" />
<Property Name="ТекстХранилище" Type="Edm.Stream" Nullable="true" />
<Property Name="ФайлХранилище" Type="Edm.Stream" Nullable="true" />
...
Значит, на сколько я понимаю, содержимое файла нужно отправлять через эти параметры.
Пробовал передавать содержимое файла в каждом из этих параметров и в base64 и просто - ничего не получается.
В 1С в присоединенных файлах договора файл отображается, но при попытке открыть его выдает ошибку, что "Файл не найден в хранилище файлов".
Также не удается получить содержимое файла (созданного в этом же справочнике через 1С) через REST.
Пытался запрашивать:
Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы(guid'GUID')/ТекстХранилищеCatalog_ДоговорыКонтрагентовПрисоединенныеФайлы(guid'GUID')/ФайлХранилище
Ничего не возвращает.
Может кто-то работал с файлами через OData, и, в частности, с REST API 1C, подскажите как это сделать?
upd
Разобрался как добавить/получить файл через OData.
При создании записи в справочнике в параметре "ФайлХранилище_Type" указываем mime-type файл (например image/jpeg), в "ФайлХранилище_Base64Data" пихаем содержимое файла, закодированное в base64.
После этого через OData можно получить файл двумя способами:
1.
.../Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы(guid'GUID')/ФайлХранилище - возвращает сам файл
2.
.../Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы(guid'GUID')/ФайлХранилище_Base64Data/$value - возвращает содержимое файла, кодированное в base64
Но! При этом все равно этот файл не открывается через 1С, и выдает прежнюю ошибку, равно как и добавленные через 1С файлы не удается получить через OData - в "ФайлХранилище_Base64Data" просто пусто!