Отправка/получение присоединенных файлов через REST-сервис

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. ova777 13.11.15 12:44 Сейчас в теме
Не удается через 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С, подскажите как это сделать?
Прикрепленные файлы:
by_1c.xml
by_rest.xml
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. torch 128 13.11.15 13:11 Сейчас в теме
Сударь, Вы первопроходец и пионер! С нетерпением жду результатов Ваших изысканий. Лично я потратил 2 суток на эксперименты с REST-сервисов и решил подождать таких, как Вы. Свои задачи решил другими механизмами.
4. ova777 13.11.15 20:40 Сейчас в теме
(2) torch, спасибо! На самом деле очень удобно работать с объектами, если бы не проблемы с файлами!
Создается впечатление, что в 1С просто не доделали работу с файлами через OData.

(3) Serginio, Linq для работы с OData 1C пробовал - ситуация та же. Файлы, добавленные через 1С не окрываются, добавленные через REST - открываются. Просто LINQ работает чисто по протоколу OData, и ничего нового он не дает, разве что удобно по $metadata ходить.
Вы имели в виду "почему нельзя присоединить файл", или "почему нельзя включить регистр Присоединенные файлы в REST"?

Файл то как раз присоединить можно. Просто к файлам, присоединенным через REST - можно получить доступ (получить содержимое) только по REST, а присоединенным через 1С - только в 1С.

А регистр "Присоединенные файлы" нельзя включить в REST потому что этот запрет прописан в самой конфигурации. Видимо, нельзя с этим регистром напрямую через REST работать - как-то через связанные объекты нужно. Конечно, можно влезть в конфигурацию, но хочется всё реализовать на типовой. Иначе вообще весь смысл REST теряется!
3. Serginio 938 13.11.15 14:13 Сейчас в теме
Посмотри http://infostart.ru/public/403524/
А почему нельзя присоединить?
5. Serginio 938 13.11.15 22:46 Сейчас в теме
Что типа
Массив = Новый Массив();

 Для Каждого Регистр Из Метаданные.РегистрыСведений ( Цикл
     Массив.Добавить(Регистр);
КонецЦикла;
УстановитьСоставСтандартногоИнтерфейсаOData(Массив);


Вернее сначала
массив=ПолучитьСоставСтандартногоИнтерфейсаOData();
Массив.Добавить(Метаданные.РегистрыСведений.ТвойРегистр);
УстановитьСоставСтандартногоИнтерфейсаOData(Массив);


или
http://infostart.ru/public/297325/
6. ova777 16.11.15 08:31 Сейчас в теме
(5) Serginio, Спасибо! С помощью этой обработки все-таки удалось включить публикацию регистра "Присоединенные файлы" в REST.
Почему-то через ту обработку, которой я редактировал REST (называется "Настройка автоматического REST-сервиса") никак этого сделать не удавалось!

Получается сейчас механизм добавления файла через REST выглядит следующим образом:
1. Добавляем запись с информацией о файле (название, размер, ...) в справочник "Присоединенные файлы (Договоры контрагентов)"
2. Добавляем запись в регистре "Присоединенные файлы" с самим содержимым файла и guid созданной выше записи.
После этого есть возможность скачать файл по REST из регистра "Присоединенные файлы", и в 1С в присоединенных файлах к договору этот файл открывается!
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)