В чем суть вопроса, у табличного документа есть метод прочитать() и в качестве параметра можно передавать не только путь к файлу, но и поток. Решил разобраться в этом вопросе, но видимо чего-то я не понимаю.
Вот простенький код, который приводит к ошибке выполнения файловой операции. (в переменной путь к обычному файлу .mxl). Подскажите, как правильно записать данные в поток?

```1c
    &НаКлиенте
    Процедура Команда1(Команда)

    ТабДок = Новый ТабличныйДокумент;

    лДанные = Новый ДвоичныеДанные(Путь);

    Адрес = ПоместитьВоВременноеХранилище(лДанные, УникальныйИдентификатор);

    ПрочитатьНаСервере(ТабДок, Адрес);

    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ПрочитатьНаСервере(ТабДок, Адрес)

    лДанные = ПолучитьИзВременногоХранилища(Адрес);

    лПоток = Новый ПотокВПамяти;
    лЗапись = Новый ЗаписьДанных(лПоток);

    лЗапись.Записать(лДанные);
    лЗапись.Закрыть();

    ТабДок.Прочитать(лПоток);

    КонецПроцедуры
```
---
поток нужно спозиционироваться на начало.

```1c
    &НаСервереБезКонтекста
    Процедура Команда8НаСервере(ТабДок, Адрес)
    лДанные = ПолучитьИзВременногоХранилища(Адрес);

    лПоток = Новый ПотокВПамяти;
    лЗапись = Новый ЗаписьДанных(лПоток);

    лЗапись.Записать(лДанные);
    лЗапись.Закрыть();
    лПоток.Перейти(0, ПозицияВПотоке.Начало);
    ТабДок.Прочитать(лПоток);
    лПоток.Закрыть();

    КонецПроцедуры
```
---
код ПрочитатьНаСервере ?
---
Вроде все есть...
---
поток нужно спозиционироваться на начало.

```1c
    &НаСервереБезКонтекста
    Процедура Команда8НаСервере(ТабДок, Адрес)
    лДанные = ПолучитьИзВременногоХранилища(Адрес);

    лПоток = Новый ПотокВПамяти;
    лЗапись = Новый ЗаписьДанных(лПоток);

    лЗапись.Записать(лДанные);
    лЗапись.Закрыть();
    лПоток.Перейти(0, ПозицияВПотоке.Начало);
    ТабДок.Прочитать(лПоток);
    лПоток.Закрыть();

    КонецПроцедуры
```
---
Спасибо! Так сразу и не догадаешься, ошибка совсем не информативная
---
На какой инструкции падает? На записи?
И что за "ТабДок" в серверной неконтекстной процедуре?
---
Написал код:

```1c
    ДвоичныеДанныеОтвета = РезультатЗапроса.Ответ.ПолучитьТелоКакДвоичныеДанные();
    лПоток = Новый ПотокВПамяти;
    лЗапись = Новый ЗаписьДанных(лПоток);

    лЗапись.Записать(ДвоичныеДанныеОтвета);
    лЗапись.Закрыть();
    лПоток.Перейти(0, ПозицияВПотоке.Начало);
    РезультатОтчета.Прочитать(лПоток);
    лПоток.Закрыть();
```

РезультатОтчета- это реквизит на УФ. На строке

```1c
    РезультатОтчета.Прочитать(лПоток);
```

выдает ошибку "Ошибка при выполнении файловой операции "
В чем может быть причина?
---
РезультатОтчета это ТабличныйДокумент?
При чтении табличного документа из потока допустимы следующие форматы: MXL, ODS.
Смотрите что содержится в ДвоичныеДанныеОтвета.
---
Да, табличныйдокумент
В одной базе http-сервис формирует табличный документ и возвращает двоичныеданные :

```1c
    ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
```

Во второй базе пытаюсь эти двоичные данные прочитать
---
если заменить РезультатОтчета.Прочитать(лПоток); на

```1c
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(лПоток);
```

ошибка будет?
И приведите ошибку полностью.
---
```1c
    лПоток = Новый ПотокВПамяти;
    лЗапись = Новый ЗаписьДанных(лПоток);

    лЗапись.Записать(ДвоичныеДанныеОтвета);
    лЗапись.Закрыть();
    лПоток.Перейти(0, ПозицияВПотоке.Начало);
    ТТ = Новый ТабличныйДокумент;
    ТТ.Прочитать(лПоток);
```

ошибка

```1c
    {ВнешнийОтчет.ВнешнийОтчет1.Форма.ФормаОтчета.Форма(48)}: Ошибка при вызове метода контекста (Прочитать)
    ТТ.Прочитать(лПоток);
    по причине:
    Ошибка при выполнении файловой операции
```

У процедуры стоит директира "&НаСервере"
---
сохраните полученные данные в файл и откройте его в 1С. Скорее всего это не mxl. Может не двоичные данные отправляете?
---
попробую. делал вроде также как в одном из уже существующих сервисов
---
```1c
    ВремФайл = ПолучитьИмяВременногоФайла("mxl");
    ДвоичныеДанныеОтвета = РезультатЗапроса.Ответ.ПолучитьТелоКакДвоичныеДанные();
    ДвоичныеДанныеОтвета.Записать(ВремФайл);
    РезультатОтчета.Прочитать(ВремФайл);
```

  РезультатОтчета.Прочитать(ВремФайл);
по причине:
Ошибка при выполнении файловой операции

сейчас код процедуры приведу которая отправляет ответ
---
в postman-e показывает
MOXCEL
{"#","",1,1,"#","Язык по умолчанию","Язык по умолчанию",0},

в ДвоичныеДанныеОтвета- "5B 5D.....
---
```1c
    ПотокФайла = Новый ПотокВПамяти();
    ТабличныйДокумент.вывод = ИспользованиеВывода.Разрешить;
    ТабличныйДокумент.Записать(ПотокФайла);
    ЧтениеПотока = Новый ЧтениеДанных(ПотокФайла);
    ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
    СтруктураОтвет.Вставить("ДвоичныеДанные",ДвоичныеДанныеФайла);
```
---
а дальше? Похоже тело ответа составное, а не только эти двоичные данные. А читаете целиком тело как ДД.
---
похоже нашел. проверю отпишусь
---
все норм было сразу. Один параметр в ответе проверял, а в исходной базе не заполнял его.
Спасибо за помощь
---
MXL открывается, а ODS нет.
Пишет: "по причине:
Ошибка при выполнении файловой операции"