В чем суть вопроса, у табличного документа есть метод прочитать() и в качестве параметра можно передавать не только путь к файлу, но и поток. Решил разобраться в этом вопросе, но видимо чего-то я не понимаю.
Вот простенький код, который приводит к ошибке выполнения файловой операции. (в переменной путь к обычному файлу .mxl). Подскажите, как правильно записать данные в поток?
Вот простенький код, который приводит к ошибке выполнения файловой операции. (в переменной путь к обычному файлу .mxl). Подскажите, как правильно записать данные в поток?
&НаКлиенте
Процедура Команда1(Команда)
ТабДок = Новый ТабличныйДокумент;
лДанные = Новый ДвоичныеДанные(Путь);
Адрес = ПоместитьВоВременноеХранилище(лДанные, УникальныйИдентификатор);
ПрочитатьНаСервере(ТабДок, Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПрочитатьНаСервере(ТабДок, Адрес)
лДанные = ПолучитьИзВременногоХранилища(Адрес);
лПоток = Новый ПотокВПамяти;
лЗапись = Новый ЗаписьДанных(лПоток);
лЗапись.Записать(лДанные);
лЗапись.Закрыть();
ТабДок.Прочитать(лПоток);
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2/3.0
- Отказ от работы с временными файлами при работе с двоичными данными или Потоки как простая замена ADODB.Stream и временным файлам
- Многопоточность в 1С. Универсальный «Менеджер потоков» 2.1
- Формирование HTTP запроса формата multipart/form-data с двоичными данными, используя ПотокВПамяти
- Где деньги, Зин? Или как загрузить информацию из банка, если у вас 200 000 операций в день?
Найденные решения
(1) поток нужно спозиционироваться на начало.
&НаСервереБезКонтекста
Процедура Команда8НаСервере(ТабДок, Адрес)
лДанные = ПолучитьИзВременногоХранилища(Адрес);
лПоток = Новый ПотокВПамяти;
лЗапись = Новый ЗаписьДанных(лПоток);
лЗапись.Записать(лДанные);
лЗапись.Закрыть();
лПоток.Перейти(0, ПозицияВПотоке.Начало);
ТабДок.Прочитать(лПоток);
лПоток.Закрыть();
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) поток нужно спозиционироваться на начало.
&НаСервереБезКонтекста
Процедура Команда8НаСервере(ТабДок, Адрес)
лДанные = ПолучитьИзВременногоХранилища(Адрес);
лПоток = Новый ПотокВПамяти;
лЗапись = Новый ЗаписьДанных(лПоток);
лЗапись.Записать(лДанные);
лЗапись.Закрыть();
лПоток.Перейти(0, ПозицияВПотоке.Начало);
ТабДок.Прочитать(лПоток);
лПоток.Закрыть();
КонецПроцедуры
Показать
Написал код:
РезультатОтчета- это реквизит на УФ. На строке
выдает ошибку "Ошибка при выполнении файловой операции "
В чем может быть причина?
ДвоичныеДанныеОтвета = РезультатЗапроса.Ответ.ПолучитьТелоКакДвоичныеДанные();
лПоток = Новый ПотокВПамяти;
лЗапись = Новый ЗаписьДанных(лПоток);
лЗапись.Записать(ДвоичныеДанныеОтвета);
лЗапись.Закрыть();
лПоток.Перейти(0, ПозицияВПотоке.Начало);
РезультатОтчета.Прочитать(лПоток);
лПоток.Закрыть();
ПоказатьРезультатОтчета- это реквизит на УФ. На строке
РезультатОтчета.Прочитать(лПоток);
выдает ошибку "Ошибка при выполнении файловой операции "
В чем может быть причина?
(11)
ошибка
У процедуры стоит директира "&НаСервере"
лПоток = Новый ПотокВПамяти;
лЗапись = Новый ЗаписьДанных(лПоток);
лЗапись.Записать(ДвоичныеДанныеОтвета);
лЗапись.Закрыть();
лПоток.Перейти(0, ПозицияВПотоке.Начало);
ТТ = Новый ТабличныйДокумент;
ТТ.Прочитать(лПоток);
Показатьошибка
{ВнешнийОтчет.ВнешнийОтчет1.Форма.ФормаОтчета.Форма(48)}: Ошибка при вызове метода контекста (Прочитать)
ТТ.Прочитать(лПоток);
по причине:
Ошибка при выполнении файловой операции
У процедуры стоит директира "&НаСервере"
(13)
РезультатОтчета.Прочитать(ВремФайл);
по причине:
Ошибка при выполнении файловой операции
сейчас код процедуры приведу которая отправляет ответ
ВремФайл = ПолучитьИмяВременногоФайла("mxl");
ДвоичныеДанныеОтвета = РезультатЗапроса.Ответ.ПолучитьТелоКакДвоичныеДанные();
ДвоичныеДанныеОтвета.Записать(ВремФайл);
РезультатОтчета.Прочитать(ВремФайл);
РезультатОтчета.Прочитать(ВремФайл);
по причине:
Ошибка при выполнении файловой операции
сейчас код процедуры приведу которая отправляет ответ
ПотокФайла = Новый ПотокВПамяти();
ТабличныйДокумент.вывод = ИспользованиеВывода.Разрешить;
ТабличныйДокумент.Записать(ПотокФайла);
ЧтениеПотока = Новый ЧтениеДанных(ПотокФайла);
ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
СтруктураОтвет.Вставить("ДвоичныеДанные",ДвоичныеДанныеФайла);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот