Почему не удается прочитать файл расширения *.xls в табличный документ, ведь в справке написано:
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 - 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).
---
В синтакс помощнике написано, что доступен.
ТабличныйДокумент (SpreadsheetDocument)
Прочитать (Read)
...
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
---
попробуйте загрузить mxl. Если получится, значит формат xlsx не поддерживается в мобильном приложении.
---
Получается файлы экселя в мобильную платформу загрузить никак нельзя (О_о)
mxl - через Прочитать() = ОК.
xml - через объект ЧтениеXML = ОК.

Печалька
---
Версия платформы какая?
Режим совместимости какой?
---
8.3.13:1690
Совместимость отключена
---
del
---
что это даст , если у меня все читается без второго параметра?
---
Подумал что может быть дело в типе файла, но в справке написано что файл "Лист Microsoft Excel 97-2003 (.xls)" должен читаться.
---
Я же тестировал только что и старый и новый - читаются оба без проблем...
Остается только различие в платформах
---
попробуйте сделать это на клиенте
---
так а что у вакс не выходит-то ? где картинка ошибки?
И конечно же любопытный выбор
На СервереБезКонтекста - вы из каких соображений это выбрали?
---
Все картинки ошибок прикреплены к данному вопросу. Зачем мне контекст клиента на сервере при загрузке номенклатуры? Данная конфигурация будет работать в мобильном приложении и сервер там находится там же где и клиент.
---
извините , я не доглядел, но хотелось бы увидеть "Подробно..."
---
{Обработка.ОбменДанными.Форма.Форма.Форма(182)}: Ошибка при вызове метода контекста (Прочитать)
 ФайлЗагрузки.Прочитать(Каталог);
по причине:
Ошибка при выполнении файловой операции 'C:\Users\**********\Desktop\ТМЦ_ШтрихКоды.xls'. Формат файла не поддерживается.
---
У меня прекрасно грузит файл xsls, только что проверил
&НаСервереБезКонтекста
Процедура Команда1НаСервере()
  ggg= Новый ТабличныйДокумент;

ggg.Прочитать("C:\1C\Копия Апрель 2019.xlsx" );

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

А платформа какая?
---
Я писал о *.xls, а не о *.xlsx.
8.3.13 платформа
---
а вам это принципиально? Это оба файлы EXCEL.
xls старый формат...
Пользуйтесь новым
---
Мне не могут дать файл формата *.xlsx. Я могу и руками конвертировать форматы сидеть,но вопрос касался того что должен ли метод "Прочитать()" читать файлы формата *.xls или нет. Что бы я понимал свою ошибку, либо просто на будущее запомнил что прочитать в табличный документ ексель старого формата не смогу.
---
старый формат тоже прекрасно читается!
У меня платформа 1С:Предприятие 8.3 (8.3.13.1865)

Что то у вас там еще не так...
---
Вы пробовали этот файл открывать екселем?
может файл на самом деле битый?
---
Открывается он екселем
---
Можете попробовать прочитать сами...
---
это файл Excel 5.0/95
т.е. совсем старого формата 1995 года. Он не поддерживается. Хоть и имеет расширение xls
---
Расскажите пожалуйста где Вы это увидели? (у меня ОС Windows 10)
---
Файл на самом деле не поддерживается...
Я получил ту же ошибку...
И вот ссылка как в 7.7 создавать нормальные файлы...
https://forum.mista.ru/topic.php?id=170622
https://infostart.ru/public/57210/
Ну или придется самим экселем конвертировать, что вам легче то и применяйте
---
открыть файл Экселем и попытаться "Сохранить Как". Он и покажет текущий формат.
---
кстати выбор
Прочитать("C:\1C\Filehasfb.xls",,ТипФайлаТабличногоДокумента.XLS95 );
не решает проблемы...
Зачем тогда вообще ТипФайлаТабличногоДокумента.XLS95 , не в курсе?
---
для обратной совместимости.
ТабДок.Записать

А вот для Прочитать 3 параметр... это рудимент. Его даже в справке нет.
---
База случайно не клиент-серверная?
---
Файловая база
---
Попробуйте место файла изменить!
Вы пытаетесь от имени сервера влезть на свой рабочий стол, а у него может не быть на это прав.
Создайте папку где-нибудь (но не сетевую), общую и попытайтесь оттуда загружать
---
Я файл нового формата так открываю и он читается. Дело не в этом. В сообщении (23) скорее всего верный ответ.
---
аааа , ясно, да шанс есть
---
Не могу найти только где написана информацию, указанная "spacecraft". Не знаете где поглядеть?
---
Здесь
---
я то создавал xls из нового формата новым Excel , а это немного не одно и то же видимо...
---
Мне данный файл вообще с 1с7 дали с выгруженными данными, ссылаясь на то что новее 1с7 не позволяет.
С 1с7 не работал и вот думаю *.xlsx действительно что ли с 1с7 выгрузить нельзя?
---
Теоретически возможно, но кто ж это будет переписывать?
---
Как вариант, можно прочитать ком объектом файл и пересохранить в новый формат.
А дальше уже стандартно, платформой.

Точнее, даже попробовать прочитать платформой, через Попытку Исключение - если будет такая ошибка - через ком пересохранить файл.
---
прочитать ком объектом файл и пересохранить в новый формат.
А дальше уже стандартно, платформой.

Точнее, даже попробовать прочитать платформой, через Попытку Исключение - если будет такая ошибка - через ком пересохранить файл.

Хорошая идея, но для пересохранения с помощью COM объекта нужен Exel что очень важно учесть, а не всегда он установлен.
С самого начала хотел применить данный функционал для загрузки данных с екселя в мобильное приложение, но, когда уже все было описано и протестировано на ТК, то в мобильном приложении оказалось что процедура Прочитать() недоступна. Не вначале на то что процедура не доступна, я все равно решил разобраться почему не грузится файл и доволен результатом, так как получил новые знания по работе с выгрузкой данных из Exel.

Невзначай спрошу еще один вопрос у Вас. Не подскажете как можно загрузить данные из Exel в мобильном приложении?
---
если данные приходят из 1С7.7, то пусть сохраняют не в xls, а mxl. Это родной формат 1С. Он поддерживается.
---
Невзначай спрошу еще один вопрос у Вас. Не подскажете как можно загрузить данные из Exel в мобильном приложении?

В (39) предложен отличный вариант =)
---
mxl это хорошо, но как его прочитать, если метод Прочитать() в мобильном приложении не доступен =)
---
В синтакс помощнике написано, что доступен.
ТабличныйДокумент (SpreadsheetDocument)
Прочитать (Read)
...
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
---
Хм. Вы правы, я ошибся. Значит проблема в моем программном решении
---
А читаете файл на сервере?
---
СерверБезКонтекста. Я понимаю на что Вы намекаете (превратить все в двоичные данные на клиенте->перекинуть их на сервер и на сервере по ним создать файл, который опосля прочитать) , но мобильное приложение в моем понимании как файловая база, то есть сервер и клиент общие и все должно и так работать, или я тут опять в лужу слёз 1с-ников наступил?)
---
Нене, вопрос был только про контекст =)
---
Ничего не имею против, просто у Вас такие умные пингвины на аватарке, что я не мог не спросить Вас
---
судя по пути \storage\emulated\0\... пытаетесь прочесть на клиенте. Там это не поддерживается.
---
&НаСервереБезКонтекста выполняю данный код, а в него уже с клиента передаю путь к файлу.
---
а в него уже с клиента передаю путь к файлу путь к файлу на смартфоне? :)
---
Я на смартфоне это и делаю. ЧЕрез диалог выбора файла на телефоне выбираю файл и передаю в прочитать этот путь :)
---
используйте временное хранилище для передачи файла.
---
filetemp.xlsx успешно создался, но при Прочитать() эта же ошибка.

```1c
    &НаКлиенте
    Процедура ОбработкаВыбораФайла(ВыбранныеФайлы,ДополнительныеПараметры) Экспорт
    Если НЕ ВыбранныеФайлы=Неопределено И ВыбранныеФайлы.Количество()=1 Тогда
    Если ДополнительныеПараметры="ЗагрузитьНоменклатуру" Тогда
    ДвД = Новый ДвоичныеДанные(ВыбранныеФайлы[0]);
    АдресВрХранилища = ПоместитьВоВременноеХранилище(ДвД); МассивУведомлений=ЗагрузитьНоменклатуруНаСервере(АдресВрХранилища,ВыбранныеФайлы[0],ОбновитьИмеющиесяНоменклатуры);
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ЗагрузитьНоменклатуруНаСервере(АдресВрХранилища,Каталог,Обновлять=Неопределено)
    ПолноеИмяФайла="\storage\emulated\0\Download\filetemp.xlsx";
    ДвД = ПолучитьИзВременногоХранилища(АдресВрХранилища);
    ДвД.Записать(ПолноеИмяФайла);
    ФайлЗагрузки= Новый ТабличныйДокумент;
    ФайлЗагрузки.Прочитать(ПолноеИмяФайла);
    КонецФункции
```
---
&НаСервереБезКонтекста
Функция ЗагрузитьНоменклатуруНаСервере(АдресВрХранилища,Каталог,Обновлять=Неопределено)
ПолноеИмяФайла=ПолучитьИмяВременногоФайла("xlsx");
ДвД = ПолучитьИзВременногоХранилища(АдресВрХранилища);
ДвД.Записать(ПолноеИмяФайла);
ФайлЗагрузки= Новый ТабличныйДокумент;
ФайлЗагрузки.Прочитать(ПолноеИмяФайла);
КонецФункции
---
Спасибо за правки. Сейчас нет возможности проверить, но как только проверю, то отпишу.
---
ПолноеИмяФайла=ПолучитьИмяВременногоФайла("xlsx");
ДвД = ПолучитьИзВременногоХранилища(АдресВрХранилища);
ДвД.Записать(ПолноеИмяФайла);
ФайлЗагрузки= Новый ТабличныйДокумент;
ФайлЗагрузки.Прочитать(ПолноеИмяФайла);

Не помогает, не подскажете в чём еще может быть дело?

Примечание:
Файл = Новый Файл (ПолноеИмяФайла);
Файл.Существует(); //возвращает Истина, то есть 1с8 создает файл, но при чтении не может его прочитать в ТД.
Также пытался менять директиву исполнения с НаСервереБезКонтекста на НаСервере. Не помогло.
---
На партнерском форуме тоже пишут, что не работает в мобильной платформе чтение екселя в таб. док.
https://partners.v8.1c.ru/forum/t/1813867/m/1813867
https://partners.v8.1c.ru/forum/topic/1761316#m_1761316
Но ответов там нет.

Может можно через mxl реализовать?
Еще вариант - выгрузить таблицу в файл (ЗначениеВФайл) и прочитать файл.
Или ЗначениеВСтрокуВнутр.
---
К сожалению не имею доступа к партнерскому форуму, но спасибо за совет. Сейчас начал разбираться с чтением файлов XML. Буду просить у программиста XML файл.

Потом попробую через mxl реализовать, заодно и буду разбираться как єто делать, так как ни разу с этого не делал.
Как только дойду до mxl и получу результат, то отпишу его.
---
Потом попробую через mxl реализовать

MXL - это формат табличного документа платформы. Собственно, также как и эксель читать.
Проверить, работает ли в принципе на мобильной платформе чтение таб.дока.

ПолноеИмяФайла=ПолучитьИмяВременногоФайла("mxl");
ДвД = ПолучитьИзВременногоХранилища(АдресВрХранилища);
ДвД.Записать(ПолноеИмяФайла);
ФайлЗагрузки= Новый ТабличныйДокумент;
ФайлЗагрузки.Прочитать(ПолноеИмяФайла);

Если не работает, то уже xml.
---
Для этого мне ведь нужен какой то файлик mxl, так как я не смогу же xlsx прописать что это mxl (я так думаю, потому что уже попытался и получил ту же ошибку =) ).
У Вас нет какого то фалика mxl для теста?)
---
Во вложении.
А вообще, в конфигураторе - Файл - Новый - Табличный документ.
Сохранить как - mxl.
---
Не знал подобного :) Спасибо за подсказку.
Прошло чтение .mxl на мобильной платформе.

Примечание: не обязательно даже делать временные файлы из двоичных данных, переданных на сервер с клиента, так как сервер видит файл и по пути переданному с клиента, как и в обычной файловой БД 1с8 на стационарном устройстве.
---
лучше сразу привыкать делать правильно. На андроиде жесткие правила доступа к внешним ресурсам относительно приложения (файлам в том числе). Может и не сработать прямое обращение к файлу.
---
(65)

Думаю на этом тему можно закрывать. Спасибо всем большое за помощь, проявленный интерес к теме и сдержанность к моей тупости :)

"Sashares", если Вам не трудно, то в ЛС объясните куда именно нас сайте заходить что бы отправлять репорты о проблемах в работе с 1с8.
---
Получается файлы экселя в мобильную платформу загрузить никак нельзя (О_о)
mxl - через Прочитать() = ОК.
xml - через объект ЧтениеXML = ОК.

Печалька
---
Напишите на линию консультации(v8@1c.ru), что в мобильной платформе не работает чтение файлов экселя в табличном документе. Тогда должны зарегистрировать ошибку и со временем исправить.
---
попробуйте загрузить mxl. Если получится, значит формат xlsx не поддерживается в мобильном приложении.
---
А че так мучиться?
Юзай:

```1c
    &НаСервере
    Функция ПреобразоватьТабличныйДокументВТаблицуЗначений(ТабДокумент)
    ПоследняяСтрока = ТабДокумент.ВысотаТаблицы;
    ПоследняяКолонка = ТабДокумент.ШиринаТаблицы;
    ОбластьЯчеек = ТабДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
    // Создаем описание источника данных на основании области ячеек табличного документа.
    ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);
    // Создаем объект для интеллектуального построения отчетов,
    // указываем источник данных и выполняем построение отчета.
    ПостроительОтчета = Новый ПостроительОтчета;
    ПостроительОтчета.ИсточникДанных = ИсточникДанных;
    ПостроительОтчета.Выполнить();
    // Результат выгружаем в таблицу значений.
    ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
    Возврат ТабЗначений
    КонецФункции
```

Можно на форму закинуть табличный документ и читать, можно из макета - без разницы.
Функция из макета(табличный документ) с данными превратит в ТЗ, в первой строке макета указываешь заголовки колонок, слитно естественно.