Не удается через OData получить файл, добавленный через 1С.
Действия в 1С:
1. Создаем контрагента
2. Создаем договор контрагента
3. Заходим в "Присоединенные файлы" в договоре
4. Добавляем файл.
После этого информацию о добавленном файле можно получить через OData ".../Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы"
(в прикрепленном к сообщению файле "by_1c.xml" пример такого объекта).
Но в этом объекте отсутствуют данные о содержимом файла, которые должны быть в параметре "ФайлХранилище_Base64Data".
Если же добавить файл посредством OData - POST запрос на ".../Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы"
С параметрами:
"ТипХраненияФайла": "ВИнформационнойБазе",
"Description": имя файла,
"Расширение": расширение файла,
"ФайлХранилище_Type": mime-type,
"ФайлХранилище_Base64Data": base64-кодированное содержимое файла,
Объект успешно создается (в прикрепленном к сообщению файле "by_rest.xml" пример созданного объекта),
файл отображается в 1С в присоединенных к договору файлах, но при попытке открыть его
выдается ошибка "Файл не найден в хранилище файлов".
Но, при этом, в созданном объекте в параметре "ФайлХранилище_Base64Data" есть содержимое файла в base64.
И сам файл можно получить через REST по ".../Catalog_ДоговорыКонтрагентовПрисоединенныеФайлы(guid'GUID')/ФайлХранилище"
Таким образом, не удается через REST получить содержимое файла, добавленного в 1С, и не удается открыть в 1С файл, добавленный через REST.
Когда файл добавляется посредством 1С, запись о нем добавляется не только в справочник "Присоединенные файлы (Договоры контрагентов)",
но и в регистр "Присоединенные файлы". Проблема в том, что к регистру "Присоединенные файлы" нет доступа через REST, и включить его тоже нельзя.
Когда же файл добавляется через REST - запись в регистре "Присоединенные файлы" не создается, и, видимо, поэтому он не открывается в 1С.
Может кто-то работал с файлами через OData REST-сервис 1С, подскажите как это сделать?
Сударь, Вы первопроходец и пионер! С нетерпением жду результатов Ваших изысканий. Лично я потратил 2 суток на эксперименты с REST-сервисов и решил подождать таких, как Вы. Свои задачи решил другими механизмами.
(2) torch, спасибо! На самом деле очень удобно работать с объектами, если бы не проблемы с файлами!
Создается впечатление, что в 1С просто не доделали работу с файлами через OData.
(3) Serginio, Linq для работы с OData 1C пробовал - ситуация та же. Файлы, добавленные через 1С не окрываются, добавленные через REST - открываются. Просто LINQ работает чисто по протоколу OData, и ничего нового он не дает, разве что удобно по $metadata ходить.
Вы имели в виду "почему нельзя присоединить файл", или "почему нельзя включить регистр Присоединенные файлы в REST"?
Файл то как раз присоединить можно. Просто к файлам, присоединенным через REST - можно получить доступ (получить содержимое) только по REST, а присоединенным через 1С - только в 1С.
А регистр "Присоединенные файлы" нельзя включить в REST потому что этот запрет прописан в самой конфигурации. Видимо, нельзя с этим регистром напрямую через REST работать - как-то через связанные объекты нужно. Конечно, можно влезть в конфигурацию, но хочется всё реализовать на типовой. Иначе вообще весь смысл REST теряется!
Массив = Новый Массив();
Для Каждого Регистр Из Метаданные.РегистрыСведений ( Цикл
Массив.Добавить(Регистр);
КонецЦикла;
УстановитьСоставСтандартногоИнтерфейсаOData(Массив);
(5) Serginio, Спасибо! С помощью этой обработки все-таки удалось включить публикацию регистра "Присоединенные файлы" в REST.
Почему-то через ту обработку, которой я редактировал REST (называется "Настройка автоматического REST-сервиса") никак этого сделать не удавалось!
Получается сейчас механизм добавления файла через REST выглядит следующим образом:
1. Добавляем запись с информацией о файле (название, размер, ...) в справочник "Присоединенные файлы (Договоры контрагентов)"
2. Добавляем запись в регистре "Присоединенные файлы" с самим содержимым файла и guid созданной выше записи.
После этого есть возможность скачать файл по REST из регистра "Присоединенные файлы", и в 1С в присоединенных файлах к договору этот файл открывается!