Ошибка при вызове метода контекста прочитать формат файла не поддерживается

Ошибка чтения ТабДок.Прочитать()

Я
   МимохожийОднако

09.11.20 — 14:03

При открытии файла XLS через ТабДок.Прочитать()

Ошибка при выполнении файловой операции . Формат файла не поддерживается.

Если исходный файл открыть в Excel  и сохранить, ошибки нет.

Мне надо читать его программно. Кто-нибудь решал эту проблемку?

   RomanYS

1 — 09.11.20 — 14:05

(0) попробуй переименовать в *.xlsx, экселю пофигу а 1С такую ошибку выдает если формат не соответствует расширению

   alkorolev

2 — 09.11.20 — 14:18

(0) сколько листов в файле? примечания есть?

   МимохожийОднако

3 — 09.11.20 — 14:20

(2) Лист один. Примечаний нет

(1) Расширение *.xls .  В свойствах тип файла Лист Microsoft Excel 97–2003 (.xls)

   RomanYS

4 — 09.11.20 — 14:24

(3) у xls и xlsx внутренняя структура. Если файл с новым форматом сохранить с расширением xls, то эксель его откроет, а не 1С нет. Просто попробуй, нет — будешь искать варианты дальше

   ДенисЧ

5 — 09.11.20 — 14:31

Откуда файл взялся? С интернета каким-нибудь пых-скриптом создан?

Такое в таких случаях бывает, это же опенсорц, там делают на ХХП…

   yzimin

6 — 09.11.20 — 14:34

В 8.3.17.1549 пофиксили

   МимохожийОднако

7 — 09.11.20 — 14:42

(5) Файл прислан по почте. Создается регламентом у контрагентов. Как-не знаю. Скорее всего ХХП

(6) 1С:Предприятие 8.3 (8.3.18.1128)

(4) Попробую.

   vicof

8 — 09.11.20 — 14:45

(0) Через ком-объект прочитай.

   МимохожийОднако

9 — 09.11.20 — 14:52

(8) Этот вариант я оттягиваю до последнего )

   МимохожийОднако

10 — 09.11.20 — 15:04

(4) Переименование с другим расширением даёт тот же результат:»Формат не поддерживается»

   mszsuz

11 — 09.11.20 — 15:06

Это формат Excel 95, неподдерживается.

   RomanYS

12 — 09.11.20 — 15:06

(10) А файл то открывал, может там вообще csv внутри

   RomanYS

13 — 09.11.20 — 15:07

(10) выложи файл, если не секретный

   МимохожийОднако

14 — 09.11.20 — 15:11

(12) Экселем файл открывается без проблем. Сохраняю его без каких либо изменений. После этого он открывается из 1С без ошибок.

   RomanYS

15 — 09.11.20 — 15:12

(14) открой блокнотом

   МимохожийОднако

16 — 09.11.20 — 15:15

   МимохожийОднако

17 — 09.11.20 — 15:16

(15) В блокноте с кракозябрами

   УдавВПопугаях

18 — 09.11.20 — 15:16

была недавно эта проблема, файл формировали какой то приблудой, в свойствах файла должно быть название, какой то там xl

   МимохожийОднако

19 — 09.11.20 — 15:16

(18) Как решили эту проблему?

   УдавВПопугаях

20 — 09.11.20 — 15:18

тему поднимал «малоопытный» человек, наверно никак, но было ясно, что при формировании получаем файл не совсем той структуры, которая получается из самого экселя, типа как какого то оглавления не хватает или еще чего то подобного

   УдавВПопугаях

21 — 09.11.20 — 15:22

   УдавВПопугаях

22 — 09.11.20 — 15:23

проблема не совсем такая, но причина может быть аналогичная. Excelize во.

   RomanYS

23 — 09.11.20 — 15:26

(16) Да, внутри похож на xls… похоже без экселя 1С его не съест.

(21) С таким тоже сталкивался, победить не смог.

   УдавВПопугаях

24 — 09.11.20 — 15:28

(23) велосипед наверно только, как xml может или еще что

ну факт в том, что штатный механизм в таком случае не работает

   УдавВПопугаях

25 — 09.11.20 — 15:34

эмммм… звиняйте за «малоопытного»)

ras27

   RomanYS

26 — 09.11.20 — 15:40

(24) Так старый формат (xls) вроде не xml внутри и закрыт. И парсить xml это та ещё задача, ТС как раз ищет лёгких путей))). Здравой выглядит идея пересохранять файл экселем или сервисом каким, а потом читать штатно табличным документом

   УдавВПопугаях

27 — 09.11.20 — 15:45

(26) кстати о сервисах) можно дать сервис поставщику файла и пусть льет напрямую

  

МимохожийОднако

28 — 13.11.20 — 07:56

Повторное сохранение файла через открытие файла в Excel позволяет привести его формат к виду, который читается из 1С.

Может быть, подскажете командную строку или набор команд, который делает это без участия пользователя?

Тогда можно будет запустить обработку, которая читает файл с некорректным для 1С форматом и сохраняет обратно в хранилище.

У меня эти файлы лежат до времени в хранилище значений в регистре сведений.

Ошибка чтения ТабДок.Прочитать()

Я

  

МимохожийОднако

09.11.20 — 14:03

При открытии файла XLS через ТабДок.Прочитать()

Ошибка при выполнении файловой операции . Формат файла не поддерживается.

Если исходный файл открыть в Excel  и сохранить, ошибки нет.

Мне надо читать его программно. Кто-нибудь решал эту проблемку?

  

RomanYS

1 — 09.11.20 — 14:05

(0) попробуй переименовать в *.xlsx, экселю пофигу а 1С такую ошибку выдает если формат не соответствует расширению

  

alkorolev

2 — 09.11.20 — 14:18

(0) сколько листов в файле? примечания есть?

  

МимохожийОднако

3 — 09.11.20 — 14:20

(2) Лист один. Примечаний нет

(1) Расширение *.xls .  В свойствах тип файла Лист Microsoft Excel 97–2003 (.xls)

  

RomanYS

4 — 09.11.20 — 14:24

(3) у xls и xlsx внутренняя структура. Если файл с новым форматом сохранить с расширением xls, то эксель его откроет, а не 1С нет. Просто попробуй, нет — будешь искать варианты дальше

  

ДенисЧ

5 — 09.11.20 — 14:31

Откуда файл взялся? С интернета каким-нибудь пых-скриптом создан?

Такое в таких случаях бывает, это же опенсорц, там делают на ХХП…

  

yzimin

6 — 09.11.20 — 14:34

В 8.3.17.1549 пофиксили

  

МимохожийОднако

7 — 09.11.20 — 14:42

(5) Файл прислан по почте. Создается регламентом у контрагентов. Как-не знаю. Скорее всего ХХП

(6) 1С:Предприятие 8.3 (8.3.18.1128)

(4) Попробую.

  

vicof

8 — 09.11.20 — 14:45

(0) Через ком-объект прочитай.

  

МимохожийОднако

9 — 09.11.20 — 14:52

(8) Этот вариант я оттягиваю до последнего )

  

МимохожийОднако

10 — 09.11.20 — 15:04

(4) Переименование с другим расширением даёт тот же результат:»Формат не поддерживается»

  

mszsuz

11 — 09.11.20 — 15:06

Это формат Excel 95, неподдерживается.

  

RomanYS

12 — 09.11.20 — 15:06

(10) А файл то открывал, может там вообще csv внутри

  

RomanYS

13 — 09.11.20 — 15:07

(10) выложи файл, если не секретный

  

МимохожийОднако

14 — 09.11.20 — 15:11

(12) Экселем файл открывается без проблем. Сохраняю его без каких либо изменений. После этого он открывается из 1С без ошибок.

  

RomanYS

15 — 09.11.20 — 15:12

(14) открой блокнотом

  

МимохожийОднако

16 — 09.11.20 — 15:15

  

МимохожийОднако

17 — 09.11.20 — 15:16

(15) В блокноте с кракозябрами

  

УдавВПопугаях

18 — 09.11.20 — 15:16

была недавно эта проблема, файл формировали какой то приблудой, в свойствах файла должно быть название, какой то там xl

  

МимохожийОднако

19 — 09.11.20 — 15:16

(18) Как решили эту проблему?

  

УдавВПопугаях

20 — 09.11.20 — 15:18

тему поднимал «малоопытный» человек, наверно никак, но было ясно, что при формировании получаем файл не совсем той структуры, которая получается из самого экселя, типа как какого то оглавления не хватает или еще чего то подобного

  

УдавВПопугаях

21 — 09.11.20 — 15:22

  

УдавВПопугаях

22 — 09.11.20 — 15:23

проблема не совсем такая, но причина может быть аналогичная. Excelize во.

  

RomanYS

23 — 09.11.20 — 15:26

(16) Да, внутри похож на xls… похоже без экселя 1С его не съест.

(21) С таким тоже сталкивался, победить не смог.

  

УдавВПопугаях

24 — 09.11.20 — 15:28

(23) велосипед наверно только, как xml может или еще что

ну факт в том, что штатный механизм в таком случае не работает

  

УдавВПопугаях

25 — 09.11.20 — 15:34

эмммм… звиняйте за «малоопытного»)

ras27

  

RomanYS

26 — 09.11.20 — 15:40

(24) Так старый формат (xls) вроде не xml внутри и закрыт. И парсить xml это та ещё задача, ТС как раз ищет лёгких путей))). Здравой выглядит идея пересохранять файл экселем или сервисом каким, а потом читать штатно табличным документом

  

УдавВПопугаях

27 — 09.11.20 — 15:45

(26) кстати о сервисах) можно дать сервис поставщику файла и пусть льет напрямую

  

МимохожийОднако

28 — 13.11.20 — 07:56

Повторное сохранение файла через открытие файла в Excel позволяет привести его формат к виду, который читается из 1С.

Может быть, подскажете командную строку или набор команд, который делает это без участия пользователя?

Тогда можно будет запустить обработку, которая читает файл с некорректным для 1С форматом и сохраняет обратно в хранилище.

У меня эти файлы лежат до времени в хранилище значений в регистре сведений.

Ошибка при вызове метода контекста (Прочитать)

Ошибка при выполнении файловой операции при чтении xls файла методом прочитать объекта ТабличныйДокумент. 

Скрин сообщения

oshibka-pri-vypolnenii-fajlovoj-operatsii

Данный объект 1C умеет не только записывать в Excel, но возможна и обратная операция с ограничениями, свойственными табличному документу.

В чем плюсы такой методики чтения

  • Всё производится встроенными средствами;
  • достаточно быстро;
  • код в 2 строки
  • данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
  • возможно считывать значения ячеек как текст (без авто-преобразования),
  • доступно на сервере, где excel вообще нельзя установить (linux, OSx).

Причина ошибки

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

Если же документ открыт, то выходит ошибка при выполнении файловой операции чтения.

COM-Объекта Excel.Application в данном ситуации просто открывает еще один экземпляр, а также  в нём можно скрыть отображение сообшения о режиме «чтения».

Другой причиной может быть: отсутствие прав на чтение этого файла

Решение:

Закрыть открытую в Excel (или другой программе) книгу, проверить права на файл (возможность открытия в его в Excel, косвенный признак его наличия)

Реклама — средство заставить людей нуждаться в том, о чем они раньше не слыхали.

Сvотри что бы тег не содержал запрещенных символов (не должен начинаться с цифры и т.д.)

Установившаяся Практика Именования

Делайте имена описательными. Имена с символом подчеркивания выглядят аккуратно: <first_name>, <last_name>.

Имена должны быть короткими и простыми, например: <book_title> а не: <the_title_of_the_book>.

Избегайте символов «-«. Если вы называете xml-элемент, используя дефис («first-name,») некоторые компьютерные программы могут решить, что вы хотите вычесть значение name из значения first.

Избегайте символов «.». Если вы называете что-нибудь например так: «first.name,» некоторые программы могут решить, что «name» является свойством объекта «first.»

Старайтесь не использовать символы «:». Двоеточие зарезервировано для использования в так называемых пространствах имен (подробнее о них будет рассказано позже).

XML документы часто имеют соответствующую базу данных. Обычно используют правила именования этой базы данных для элементов XML документов.

Не английские буквы, такие как ���, вполне допустимы в XML, но следите за тем, чтобы не было проблем совместимости, если ваш производитель программного обеспечения не поддерживает их.

Добавлено через 1 минуту
Правила Именования в XML
Элементы XML должны следовать следующим правилам именования:

Имена могут состоять из букв, чисел, и других символов
Имена не могут начинаться с числа или знака препинания
Имена не могут начинаться с букв xml (или XML, или Xml, и т.п.)
Имена не могут содержать пробелы
Любое имя может использоваться, зарезервированных слов нет.

Добрый день, не могу понять, в чем ошибка: файл перенесен на диск д, существует, 1с под администратором запущена, вход тоже с админ. правами. ошибка: Ошибка при вызове метода контекста (Прочитать)         ТабДок.Прочитать(«D:чектекст1.txt»); по причине: Ошибка при выполнении файловой операции

ТабличныйДокумент, txt…ни на что не наталкивает?

суровые челябинские девушки…

меня тоже смутил сначала, переделано было в mxl, но в сп написано, что и txt  тоже может. с mxl тоже самое

может быть не TXT а CSV по стандарту с разделителями?

нет, не csv, обычный текстовый файл нужно распечатать.

тогда причем тут ТабличныйДокумент?

а у него какой метод печати?

я думал первоначальная проблема в методе: Прочитать. Я жеж и не подозревал, что вам потом печатать нужно. А вообще СП украли чтоль?

наверное, это: Показать (Show) Синтаксис: Показать(<Заголовок>, <ИмяФайла>) Параметры: Тип: Строка. Заголовок окна редактирования. Тип: Строка. Имя файла, в котором будет предлагаться сохранение текста при закрытии окна текстового редактора. Если файла с указанным именем не существует, то будет создан новый файл с таким именем для сохранения текста. Если параметр не указан, то при закрытии окна, не будет предложено сохранить данные в файл. Если параметр не указан, но в окне редактирования после выполнения метода Показать были произведены изменения (интерактивно или средствами встроенного языка), то при его закрытии на экран выводится стандартный вопрос о сохранении документа. Описание: Открывает окно с текстом для просмотра и редактирования. Если текстовый документ является реквизитом управляемой формы, то вызов метода Показать приводит к возникновению исключения. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Пример: ТекстДок.Показать(«Редактирование прайс-листа», «catalog.txt»);

а вообще бы типа скрин хоть посмотреть что в D:чектекст1.txt просто расширение txt подразумевает голый текст потому и было предложено и замечено в смотрим, думаем. что жеж всё-таки в файле-то ?

может вам и не нужно ничего из внешнего читать, а поместить в макет обработки или что у вас там

+ формат файла какой? что там имел ввиду в каком виде?

скажите на форум то за помощью пришли или где? почему все клещами надо вытаскивать выложите уже этот файл txt этого нефискального чека ЗЫ Если нужно текстовый файл вывести на печать то читаем его по строкам, выводим строки в макет (для ровности особенно таблиц моноширинный шрифт) в табдок и на печать

Чек № 44 от 27 июня 2016 г.                                ИП ***                          ИНН: ***             ================================================ Bond Red МРЦ 75(шт)                   Кассир:                                         ________________________________________________                    (подпись)

если честно, мне нужно вывести на термопринтер, который определяется, как обычный, чек. В УТ 10.3 чек формируется как текстовый документ, вот его и надо вывести на печать.

текст я и так могу прочитать, можно и не читать. как напечатать-то его автоматически??

тогда как текстовыйДокумент у него есть свойства вывод на печать

вот я не могу найти их!! уже пробую все перевести в табдок. в сп-то нет про печать текстового документа

подскажите, как отправить на принтер печататься ТекстовыйДокумент?

Например можно перевести его в табличный документ и напечатать оттуда ТекстДок = Новый ТекстовыйДокумент; ТекстДок.Прочитать(«D:чектекст1.txt»);

можно было Макет = ПолучитьМакет(ТвойТекстовыйФайл)

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Ошибка при чтении файла из эксель в табличный документ?

Я пытаюсь файл эксель прочитать в табличный документ. Файл с форматом «xlsx» читается без проблем, а файл формата «xls» выдает ошибку. В чём ошибка?5f900d0e5763a276099014.png


  • Вопрос задан

    более двух лет назад

  • 963 просмотра

1. подробнее какой код…
2. Описание:
Считывает табличный документ из файла.
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 — 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

Пригласить эксперта

Иногда под расширением .xls на самом деле файл записан в .xlsx


  • Показать ещё
    Загружается…

30 янв. 2023, в 12:59

15000 руб./за проект

30 янв. 2023, в 12:56

50000 руб./за проект

30 янв. 2023, в 12:52

5000 руб./за проект

Минуточку внимания

Ошибка при вызове метода контекста (Прочитать)

Ошибка при выполнении файловой операции при чтении xls файла методом прочитать объекта ТабличныйДокумент. 

Скрин сообщения

oshibka-pri-vypolnenii-fajlovoj-operatsii

Данный объект 1C умеет не только записывать в Excel, но возможна и обратная операция с ограничениями, свойственными табличному документу.

В чем плюсы такой методики чтения

  • Всё производится встроенными средствами;
  • достаточно быстро;
  • код в 2 строки
  • данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
  • возможно считывать значения ячеек как текст (без авто-преобразования),
  • доступно на сервере, где excel вообще нельзя установить (linux, OSx).

Причина ошибки

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

Если же документ открыт, то выходит ошибка при выполнении файловой операции чтения.

COM-Объекта Excel.Application в данном ситуации просто открывает еще один экземпляр, а также  в нём можно скрыть отображение сообшения о режиме «чтения».

Другой причиной может быть: отсутствие прав на чтение этого файла

Решение:

Закрыть открытую в Excel (или другой программе) книгу, проверить права на файл (возможность открытия в его в Excel, косвенный признак его наличия)

Восторженное отношение жены к работе мужа — лучшая реклама его деятельности.

Ошибка чтения ТабДок.Прочитать()

Я

  

МимохожийОднако

09.11.20 — 14:03

При открытии файла XLS через ТабДок.Прочитать()

Ошибка при выполнении файловой операции . Формат файла не поддерживается.

Если исходный файл открыть в Excel  и сохранить, ошибки нет.

Мне надо читать его программно. Кто-нибудь решал эту проблемку?

  

RomanYS

1 — 09.11.20 — 14:05

(0) попробуй переименовать в *.xlsx, экселю пофигу а 1С такую ошибку выдает если формат не соответствует расширению

  

alkorolev

2 — 09.11.20 — 14:18

(0) сколько листов в файле? примечания есть?

  

МимохожийОднако

3 — 09.11.20 — 14:20

(2) Лист один. Примечаний нет

(1) Расширение *.xls .  В свойствах тип файла Лист Microsoft Excel 97–2003 (.xls)

  

RomanYS

4 — 09.11.20 — 14:24

(3) у xls и xlsx внутренняя структура. Если файл с новым форматом сохранить с расширением xls, то эксель его откроет, а не 1С нет. Просто попробуй, нет — будешь искать варианты дальше

  

ДенисЧ

5 — 09.11.20 — 14:31

Откуда файл взялся? С интернета каким-нибудь пых-скриптом создан?

Такое в таких случаях бывает, это же опенсорц, там делают на ХХП…

  

yzimin

6 — 09.11.20 — 14:34

В 8.3.17.1549 пофиксили

  

МимохожийОднако

7 — 09.11.20 — 14:42

(5) Файл прислан по почте. Создается регламентом у контрагентов. Как-не знаю. Скорее всего ХХП

(6) 1С:Предприятие 8.3 (8.3.18.1128)

(4) Попробую.

  

vicof

8 — 09.11.20 — 14:45

(0) Через ком-объект прочитай.

  

МимохожийОднако

9 — 09.11.20 — 14:52

(8) Этот вариант я оттягиваю до последнего )

  

МимохожийОднако

10 — 09.11.20 — 15:04

(4) Переименование с другим расширением даёт тот же результат:»Формат не поддерживается»

  

mszsuz

11 — 09.11.20 — 15:06

Это формат Excel 95, неподдерживается.

  

RomanYS

12 — 09.11.20 — 15:06

(10) А файл то открывал, может там вообще csv внутри

  

RomanYS

13 — 09.11.20 — 15:07

(10) выложи файл, если не секретный

  

МимохожийОднако

14 — 09.11.20 — 15:11

(12) Экселем файл открывается без проблем. Сохраняю его без каких либо изменений. После этого он открывается из 1С без ошибок.

  

RomanYS

15 — 09.11.20 — 15:12

(14) открой блокнотом

  

МимохожийОднако

16 — 09.11.20 — 15:15

  

МимохожийОднако

17 — 09.11.20 — 15:16

(15) В блокноте с кракозябрами

  

УдавВПопугаях

18 — 09.11.20 — 15:16

была недавно эта проблема, файл формировали какой то приблудой, в свойствах файла должно быть название, какой то там xl

  

МимохожийОднако

19 — 09.11.20 — 15:16

(18) Как решили эту проблему?

  

УдавВПопугаях

20 — 09.11.20 — 15:18

тему поднимал «малоопытный» человек, наверно никак, но было ясно, что при формировании получаем файл не совсем той структуры, которая получается из самого экселя, типа как какого то оглавления не хватает или еще чего то подобного

  

УдавВПопугаях

21 — 09.11.20 — 15:22

  

УдавВПопугаях

22 — 09.11.20 — 15:23

проблема не совсем такая, но причина может быть аналогичная. Excelize во.

  

RomanYS

23 — 09.11.20 — 15:26

(16) Да, внутри похож на xls… похоже без экселя 1С его не съест.

(21) С таким тоже сталкивался, победить не смог.

  

УдавВПопугаях

24 — 09.11.20 — 15:28

(23) велосипед наверно только, как xml может или еще что

ну факт в том, что штатный механизм в таком случае не работает

  

УдавВПопугаях

25 — 09.11.20 — 15:34

эмммм… звиняйте за «малоопытного»)

ras27

  

RomanYS

26 — 09.11.20 — 15:40

(24) Так старый формат (xls) вроде не xml внутри и закрыт. И парсить xml это та ещё задача, ТС как раз ищет лёгких путей))). Здравой выглядит идея пересохранять файл экселем или сервисом каким, а потом читать штатно табличным документом

  

УдавВПопугаях

27 — 09.11.20 — 15:45

(26) кстати о сервисах) можно дать сервис поставщику файла и пусть льет напрямую

  

МимохожийОднако

28 — 13.11.20 — 07:56

Повторное сохранение файла через открытие файла в Excel позволяет привести его формат к виду, который читается из 1С.

Может быть, подскажете командную строку или набор команд, который делает это без участия пользователя?

Тогда можно будет запустить обработку, которая читает файл с некорректным для 1С форматом и сохраняет обратно в хранилище.

У меня эти файлы лежат до времени в хранилище значений в регистре сведений.

Ошибка чтения ТабДок.Прочитать()

Я

МимохожийОднако

09.11.20 — 14:03

При открытии файла XLS через ТабДок.Прочитать()

Ошибка при выполнении файловой операции . Формат файла не поддерживается.

Если исходный файл открыть в Excel  и сохранить, ошибки нет.

Мне надо читать его программно. Кто-нибудь решал эту проблемку?

RomanYS

1 — 09.11.20 — 14:05

(0) попробуй переименовать в *.xlsx, экселю пофигу а 1С такую ошибку выдает если формат не соответствует расширению

alkorolev

2 — 09.11.20 — 14:18

(0) сколько листов в файле? примечания есть?

МимохожийОднако

3 — 09.11.20 — 14:20

(2) Лист один. Примечаний нет

(1) Расширение *.xls .  В свойствах тип файла Лист Microsoft Excel 97–2003 (.xls)

RomanYS

4 — 09.11.20 — 14:24

(3) у xls и xlsx внутренняя структура. Если файл с новым форматом сохранить с расширением xls, то эксель его откроет, а не 1С нет. Просто попробуй, нет — будешь искать варианты дальше

ДенисЧ

5 — 09.11.20 — 14:31

Откуда файл взялся? С интернета каким-нибудь пых-скриптом создан?

Такое в таких случаях бывает, это же опенсорц, там делают на ХХП…

yzimin

6 — 09.11.20 — 14:34

В 8.3.17.1549 пофиксили

МимохожийОднако

7 — 09.11.20 — 14:42

(5) Файл прислан по почте. Создается регламентом у контрагентов. Как-не знаю. Скорее всего ХХП

(6) 1С:Предприятие 8.3 (8.3.18.1128)

(4) Попробую.

vicof

8 — 09.11.20 — 14:45

(0) Через ком-объект прочитай.

МимохожийОднако

9 — 09.11.20 — 14:52

(8) Этот вариант я оттягиваю до последнего )

МимохожийОднако

10 — 09.11.20 — 15:04

(4) Переименование с другим расширением даёт тот же результат:»Формат не поддерживается»

mszsuz

11 — 09.11.20 — 15:06

Это формат Excel 95, неподдерживается.

RomanYS

12 — 09.11.20 — 15:06

(10) А файл то открывал, может там вообще csv внутри

RomanYS

13 — 09.11.20 — 15:07

(10) выложи файл, если не секретный

МимохожийОднако

14 — 09.11.20 — 15:11

(12) Экселем файл открывается без проблем. Сохраняю его без каких либо изменений. После этого он открывается из 1С без ошибок.

RomanYS

15 — 09.11.20 — 15:12

(14) открой блокнотом

МимохожийОднако

16 — 09.11.20 — 15:15

МимохожийОднако

17 — 09.11.20 — 15:16

(15) В блокноте с кракозябрами

УдавВПопугаях

18 — 09.11.20 — 15:16

была недавно эта проблема, файл формировали какой то приблудой, в свойствах файла должно быть название, какой то там xl

МимохожийОднако

19 — 09.11.20 — 15:16

(18) Как решили эту проблему?

УдавВПопугаях

20 — 09.11.20 — 15:18

тему поднимал «малоопытный» человек, наверно никак, но было ясно, что при формировании получаем файл не совсем той структуры, которая получается из самого экселя, типа как какого то оглавления не хватает или еще чего то подобного

УдавВПопугаях

21 — 09.11.20 — 15:22

УдавВПопугаях

22 — 09.11.20 — 15:23

проблема не совсем такая, но причина может быть аналогичная. Excelize во.

RomanYS

23 — 09.11.20 — 15:26

(16) Да, внутри похож на xls… похоже без экселя 1С его не съест.

(21) С таким тоже сталкивался, победить не смог.

УдавВПопугаях

24 — 09.11.20 — 15:28

(23) велосипед наверно только, как xml может или еще что

ну факт в том, что штатный механизм в таком случае не работает

УдавВПопугаях

25 — 09.11.20 — 15:34

эмммм… звиняйте за «малоопытного»)

ras27

RomanYS

26 — 09.11.20 — 15:40

(24) Так старый формат (xls) вроде не xml внутри и закрыт. И парсить xml это та ещё задача, ТС как раз ищет лёгких путей))). Здравой выглядит идея пересохранять файл экселем или сервисом каким, а потом читать штатно табличным документом

УдавВПопугаях

27 — 09.11.20 — 15:45

(26) кстати о сервисах) можно дать сервис поставщику файла и пусть льет напрямую

  

МимохожийОднако

28 — 13.11.20 — 07:56

Повторное сохранение файла через открытие файла в Excel позволяет привести его формат к виду, который читается из 1С.

Может быть, подскажете командную строку или набор команд, который делает это без участия пользователя?

Тогда можно будет запустить обработку, которая читает файл с некорректным для 1С форматом и сохраняет обратно в хранилище.

У меня эти файлы лежат до времени в хранилище значений в регистре сведений.

Ошибка при вызове метода контекста (Прочитать)

Ошибка при выполнении файловой операции при чтении xls файла методом прочитать объекта ТабличныйДокумент. 

Скрин сообщения

oshibka-pri-vypolnenii-fajlovoj-operatsii

Данный объект 1C умеет не только записывать в Excel, но возможна и обратная операция с ограничениями, свойственными табличному документу.

В чем плюсы такой методики чтения

  • Всё производится встроенными средствами;
  • достаточно быстро;
  • код в 2 строки
  • данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
  • возможно считывать значения ячеек как текст (без авто-преобразования),
  • доступно на сервере, где excel вообще нельзя установить (linux, OSx).

Причина ошибки

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

Если же документ открыт, то выходит ошибка при выполнении файловой операции чтения.

COM-Объекта Excel.Application в данном ситуации просто открывает еще один экземпляр, а также  в нём можно скрыть отображение сообшения о режиме «чтения».

Другой причиной может быть: отсутствие прав на чтение этого файла

Решение:

Закрыть открытую в Excel (или другой программе) книгу, проверить права на файл (возможность открытия в его в Excel, косвенный признак его наличия)

Реклама — средство заставить людей нуждаться в том, о чем они раньше не слыхали.

Содержание:

1.       Об ошибке при выполнении файловой операции

2.       Устранение «Ошибки при выполнении файловой операции» в 1С 8.3   

1.    Об ошибке при выполнении файловой операции

Приветствую, коллеги! В данной статье будет описана ошибка «Ошибка при выполнении файловой операции», и подробно рассмотрены способы ее устранения.

Когда происходит обновление конфигураций в 1С 8, по завершении обновления, часто появляется ошибка, которая гласит «Ошибка при выполнении файловой операции – файл не содержит доступных обновлений».  

2.    Устранение «Ошибки при выполнении файловой операции» в 1С 8.3

Рассмотрим методы, при помощи которых, можно устранить ошибку при выполнении файловой операции в 1С.

Итак, первый способ – это попробовать сделать обновление при помощи файлов по обновлению вида «релиз 1с*.cfu». Если это не помогло, то можно попробовать обновить систему при помощи общего файла вида «полный релиз 1С*.cf».

Вторым способом будет проверка на соответствие общей версии системы 1С с минимальными требованиями версии конфигурации 1С, которую обновляем.

Третий способ устранения ошибки при выполнении файловой операции в 1С – более сложный, но действенный. Необходимо открыть в конфигурацию от поставщика в режиме Конфигуратора. Если ошибка всё так же появляется, то необходимо удалить конфигурацию поставщика, а затем опять установить. По сути, в данном варианте «вытягивается» последняя, рабочая версия данной конфигурации и обновление будет завершено без ошибок.

Рассмотрим подробнее третий способ. Пусть у нас уже есть некоторая конфигурация 1С KORG 1-ой версии, которая работает, но нужно поставить 2-ю версию, то есть обновить версию конфигурации 1С 8.3. Когда происходит обновление, всплывает ошибка «Ошибка при выполнении файловой конфигурации». Порядок действий в этом случае:

1.     скачать релиз 1С KORG с версией 1*.cf;

2.     копируем нашу базу данных;

3.     в конфигураторе, который соответствует обновляемой базе, переходим по пути: «Конфигурация → Поддержка → Настройки поддержки → Снять с поддержки». В случае, если кнопка для снятия с поддержки недоступна, необходимо сперва включить возможные изменения. После этого нужно дать согласие, если система 1С будет уточнять что-либо или подтверждать действия;

4.     Далее переходим по следующему пути: «Конфигурация → Сравнить и объединить с конфигурацией из файла…». Здесь необходимо выбрать файл «полный релиз 1С KORG версии 1*.cf»;

5.     Далее перед нами появится окно, в котором система 1С будет запрашивать постановление на учёт для поддержки, на это уведомление обязательно отвечаем согласием;

6.     В случае, если наша конфигурация является типовой, откроется окно по сравнению конфигураций. В нем обязательно убираем все «галочки». Далее последует объединение конфигураций;

7.     В новом окне кликаем на «Сохранить изменения»;

8.     Ещё раз сохраняем базу данных;

9.     Обновляем конфигурацию 1С стандартным способом.

Если всё сделать, согласно инструкции выше, то в вашей конфигурации 1С 8.3 «Ошибка при выполнении файловой операции» больше не возникнет. Спасибо за внимание!

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Ошибка при чтении файла из эксель в табличный документ?

Я пытаюсь файл эксель прочитать в табличный документ. Файл с форматом «xlsx» читается без проблем, а файл формата «xls» выдает ошибку. В чём ошибка?5f900d0e5763a276099014.png


  • Вопрос задан

    более двух лет назад

  • 963 просмотра

1. подробнее какой код…
2. Описание:
Считывает табличный документ из файла.
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 — 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

Пригласить эксперта

Иногда под расширением .xls на самом деле файл записан в .xlsx


  • Показать ещё
    Загружается…

30 янв. 2023, в 12:59

15000 руб./за проект

30 янв. 2023, в 12:56

50000 руб./за проект

30 янв. 2023, в 12:52

5000 руб./за проект

Минуточку внимания

Обновлено 15.10.2020

1с логотип

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов Рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали, что из себя  представляет файловая система raw, и как ее исправить, чтобы восстановить свои данные. Двигаемся дальше и поговорим сегодня на тему  капризности 1С, точнее на капризную работу в рамках Windows Server 2016. Я рассмотрю причину и устранение периодически повторяющейся ошибки на сервере 1С 8.3 «Ошибка при выполнении файловой операции«. Ее я стал встречать после обновления с Windows Server 2012 R2 д 2016. Думаю мой опыт сэкономит вам часик серфинга по интернету.

Описание проблемы

В моей компании заканчивается обновление операционных систем у виртуальных серверов, с Windows Server 2012 R2 на Windows Server 2016, я понимаю, что поддержка первых еще будет несколько лет, но хочется уже не делать это в последний момент, а слегка опережать, да и уже давно пора стремиться к Windows Server 2019. Сервера 1С не были исключением, обновление происходило по быстрому варианты. Тут подразумевается накатывание более новой версии ОС по верх старой, тут мы убивали двух зайцев:

  1. Получали свежую версию ОС
  2. Оставляли весь софт на сервере, и не требовалась его переустановка

В случае чего всегда можно было откатиться из снапшота на момент проведения работ, благо ESXI 6.5 это помогает делать в два клика. Все прекрасно обновилось и сервер зажил новой жизнью. В какой-то момент при запуске клиента 1С 8.3 на RDS ферме, стала появляться ошибка:

Ошибка при выполнении файловой операции

Ошибка при выполнении файловой операции в 1С 8.3

Устранение проблемы

Начав изучать данный вопрос мы не стали откатываться к бэкапу, так как данная проблема возникала не постоянно, а через некоторые промежутки и была вызвана явно не переходом на более новую версию операционной системы. Подняв исторические данные в системе заявок, я нашел похожую, где решением ошибки был перенос базы данных 1С на другой диск. Меня это заинтересовало и я стал прикидывать, что же могло быть в той ситуации. Через минут 20 я нашел одну закономерность, что на всех проблемных хостах был установлен компонент Windows дедупликации, как раз на тех дисках, где располагались базы данных 1С.

Я для тестирования отключил дедупликацию и вернул все в исходное состояние, и о чудо ошибка при выполнении файловой операции больше не появлялась. Все те же действия я произвел и на остальных серверах.

запуск сборки мусора на томе

Вывод: Windows Дедупликация и 1С просто не совместимы друг с другом, это нужно запомнить

Из дополнительных методов я могу вам посоветовать еще очистку кэша 1С. Еще в на умных сайтах советуют на серверах, где используется 1С отключать протокол IPv6 на сетевых интерфейсах, но лично я не понимаю этого прикола, так как сама Microsoft советует по возможности этого не делать, в виду того, что очень многие ее сервисы и компоненты Windows в приоритете используют именно его, меньше будет проблем с DNS и Active Directory.

Вообще если у вас виртуальные сервера лежат на системе хранения данных, то у нее должна быть своя функция дедупликации и использовать лучше и правильнее ее. Если у вас есть другие варианты решения данной проблемы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Автор magnifico61, 30 мая 2018, 22:18

0 Пользователей и 1 гость просматривают эту тему.


ФайлНовый = ПолучитьИмяВременногоФайла("xlsx");
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Open(Объект.Файл);
Книга.SaveAs(ФайлНовый);
Excel.Quit();
Excel = Неопределено;

Файл сохраняется, но при открытии ошибка формат или расширение файла является недопустимым.
Как мне сохранить файл в новый формат?


Цитата: magnifico61 от 30 мая 2018, 22:18
Файл сохраняется, но при открытии ошибка формат или расширение файла является недопустимым.
Как мне сохранить файл в новый формат?

Сохранить сначала в xls-формате, открыть файл в Excel, поддерживающем xlsx и сохранить его в нужном.

Что за конфигурация у Вас, почему возникла потребность в программировании?


УТ 11. Excel поддерживает xlsx.

Руками каждый раз пересохранять файл нет возможности, так как постоянно грузится большое количество данных с разных файлов Excel.
Это необходимо чтобы облегчить работу пользователю.


А сама УТ 11 не поддерживает выгрузку в xlsx-формате?
А если  .xlsx выгруженного файла изменить на  .xls, открываться будет?
Excel новых версий поддерживает оба формата, так зачем эти «городушки»?

На какой платформе работаете?


в xls не пробовал сохранить.
платформа 8.3.10.2580


Пользовался таким, чтобы пересохранить наоборот, xlsx в xls. Остальные варианты не пробовал но, думаю, всё будет работать.

Функция ПересохранитьЭксельФайл(ПутьКФайлу,ПутьНового=Неопределено,пФорматФайла=51)

Попытка
ExcelЗапущен = Ложь;

//Проверка на существование файла
мФайл = Новый Файл(ПутьКФайлу);
Если НЕ мФайл.Существует() Тогда
ТекстИскл = "[Файл: " + ПутьКФайлу + " не найден.]";
ВызватьИсключение ТекстИскл;
КонецЕсли;

СоответствиеРасширений = Новый Соответствие;

СоответствиеРасширений.Вставить(45, ".mht");
СоответствиеРасширений.Вставить(46, ".xml");
СоответствиеРасширений.Вставить(23, ".csv");
СоответствиеРасширений.Вставить(9,  ".dif");
СоответствиеРасширений.Вставить(8,  ".dbf");
//работает только в 2007
СоответствиеРасширений.Вставить(51, ".xlsx");
СоответствиеРасширений.Вставить(47, ".xml");
СоответствиеРасширений.Вставить(57, ".pdf");
СоответствиеРасширений.Вставить(60, ".ods");
//

СоответствиеВерсий = Новый Соответствие;

СоответствиеВерсий.Вставить(45, "11.0");
СоответствиеВерсий.Вставить(46, "11.0");
СоответствиеВерсий.Вставить(23, "11.0");
СоответствиеВерсий.Вставить(9,  "11.0");
СоответствиеВерсий.Вставить(8,  "11.0");
//работает только в 2007
СоответствиеВерсий.Вставить(51, "12.0");
СоответствиеВерсий.Вставить(47, "12.0");
СоответствиеВерсий.Вставить(57, "12.0");
СоответствиеВерсий.Вставить(60, "12.0");
//

Расширение = СоответствиеРасширений.Получить(пФорматФайла);
Если Расширение=Неопределено Тогда
ВызватьИсключение "[Неверно указан параметр ""Формат файла"".]";
КонецЕсли;

Если ПутьНового=Неопределено Тогда
ПутьНового=ПолучитьИмяВременногоФайла(Расширение);
КонецЕсли;

Попытка
Excel = Новый COMОбъект("Excel.Application");
ExcelЗапущен = Истина;
Исключение
ВызватьИсключение "[Не удалось запустить Excel.]" + Символы.ПС + ОписаниеОшибки();
КонецПопытки;

//проверка возможности сохранения в выбранный формат
Если Excel.Version < СоответствиеВерсий.Получить(пФорматФайла) Тогда
ВызватьИсключение "[В текущей версии Excel выбранный формат файла ("+Расширение+") не поддерживается.]";
КонецЕсли;

Excel.Visible       = Ложь;
Excel.DisplayAlerts = Ложь;

КнигаExcel = Excel.WorkBooks.Open(ПутьКФайлу);
КнигаExcel.SaveAs(ПутьНового, пФорматФайла);

КнигаExcel.Close();
Excel.DisplayAlerts = Истина;
Excel.Quit();
Excel = Неопределено;

Возврат ПутьНового;

Исключение
Если ExcelЗапущен Тогда
Excel.Quit();
КонецЕсли;
КнигаExcel = Неопределено;
Excel      = Неопределено;
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;

КонецФункции


Если  Число(Excel.version) < 12 Тогда
// Excel это ComОбъект(«Excel.application»)

   FileFormatNum = -4143// ага, загадочное число

Иначе
   FileFormatNum = 56// ну что мешало сделать форматы стандартными?

КонецЕсли;
БольшойОтчет.SaveAs(ИмяОтчета,FileFormatNum);

отсюда:
https://www.mista.ru/topic.php?id=637830

Банальные мелочи при сохранении в Excel. Боян, но мож кому надо.

При составлении из 1С сложных многостраничных книг в Excel наткнулся на нижеприведенные проблемы, и тк решил их, выкладываю тут. Может кому пригодится )

Если админы посчитают ненужным — сносите смело.

1. «Кривая» расцветка. Цвета абсолютно не те какие закладывались изначально.
Проблема возникает при сборке различных страниц Excel выгруженных из 1С в одну книгу. Тк сборка обычно происходит на основе существующей либо новой книги Excel то палитра книги отличается от палитры сохраняемых из 1С листов. Решение — стандартизировать палитру, подгоняя ее под палитру используемую 1С. Если сборка идет на основе некого шаблона, то надо предварительно на этапе его разработки скопировать туда палитру из «1Сного» листа Excel. Если сборка идет в пустой файл — то просто скопировать палитру (благо это очень просто).

БольшойОтчет.Colors = СтраницаИз1С.Colors;

2. Стандартная сетка Excel зачастую раздражает и мешается. Лучше ее отключать. Например так.

БольшойОтчет.Application.Activewindow.DisplayGridLines = 0;

3. По умолчанию желательно открывать некий определенный лист книги. Делаем:

БольшойОтчет.WorkSheets(Х).Activate(); // где Х — номер листа

4. Вечно один из пользователей отчетов не имеет 2007 хотя бы Excel. Логично что приходится сохранять в xls а не xlsx. Это легко иделать из 1С, а вот используя хз какую версию Excel на компьютере пользователя (которую переодически меняют админы по своему усмотрению) сложнее (тк он для новых книг сам выбирает формат по умолчанию). Приходится анализировать версию:

Если Число(Excel.version) < 12 Тогда
// Excel это ComОбъект(«Excel.application»)
FileFormatNum = -4143 // ага, загадочное число
Иначе
FileFormatNum = 56 // ну что мешало сделать форматы стандартными?
КонецЕсли;
БольшойОтчет.SaveAs(ИмяОтчета,FileFormatNum);

Собственно все. Удачи.

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают


Цитата: wise от 31 мая 2018, 13:19
Иначе
   FileFormatNum = 56

:o lol , в моей функции как раз формат «56», т.е. xls отсутствует. Видимо я именно в xlsx и сохранял, а про xls забыл. Спасибо за подсказку.

Т.е. нужно добавить в мою функцию

СоответствиеРасширений.Вставить(56,  ".xls");
СоответствиеВерсий.Вставить(56,  "11.0");



Добрый день. Не перестаю умиляться 1С-ом… Лирику прочь…
Довольный как слон, что справился с задачей… расслабился…

1C
1
2
3
4
5
// сие есть реквизит формы, обозначенный инспектором как ТабличныйДокумент
&НаКлиенте
Процедура .....
ТаблицаЭксель.Прочитать(ДиалогВыбораФайла.ПолноеИмяФайла,СпособЧтенияЗначенийТабличногоДокумента.Текст);
....

Ведь дома на бэкапе (как выяснилось, на «толстом» клиенте) работало.
В «облачной» базе… поясняю для точности: «облако» — виртуальная машина, подключение к которой идет внешней программой по RDP. Так вот в штатной «облачной» базе получаю «Метод недоступен на тонком клиенте».
Не беда, академиев не заканчивали..

1C
1
2
3
4
5
6
7
8
9
&НаСервере
Процедура ПрочитатьФайлТабДоком(ИмяФайла)
    ТаблицаЭксель.Прочитать(ИмяФайла,СпособЧтенияЗначенийТабличногоДокумента.Текст);
КонецПроцедуры
 
&НаКлиенте
Процедура .....
ПрочитатьФайлТабДоком(ДиалогВыбораФайла.ПолноеИмяФайла);
....

Теперь новая проблема — «Неправильное имя файла tsclientDXXXXXXXXXXимяфайла.xlsx».
Принципиально не хочу просить настроить подключение к «облачной» базе «толстым» клиентом, хочу, чтобы работало всегда.
Что делать с последней ошибкой? Сам думаю, что косяк у провайдера.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Дорабатывал обработку загрузки прихода из Excel. Обработка изначально была не моя, все хорошо работало, но внезапно клиент в облаке переехал с файловой базы на SQL, потому что файловая тормозила.

И тут 1С начала писать, что файл не обнаружен. Оказывается, код загрузки из Excel был написан только под толстого клиента. Пришлось дорабатывать стандартным образом:

//На клиенте
ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);//На сервере
ПолноеИмяФайла = ПолучитьИмяВременногоФайла(«XLS»);
ДД.Записать(ПолноеИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);

Доработал и забыл. Как вдруг новая напасть — попросили доработать обработку, начинаю ее отлаживать, а она не считывает данные из XLSX файла.

Причем выдает ошибку доступа к временному файлу:

Я попробовал записывать во временный каталог, но это не принесло результата:

ТекКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ТекКаталог);
ПолноеИмяФайла = ТекКаталог + «» + Новый УникальныйИдентификатор() + ТипФайла; //ПолучитьИмяВременногоФайла(«XLS»);ДД.Записать(ПолноеИмяФайла);Ф = Новый Файл(ПолноеИмяФайла);
Сообщить(ПолноеИмяФайла » Существует: » + Ф.Существует());ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст); //, ТипФайлаТабличногоДокумента.ODS);

Причем 1С писала, что файл существует:

Тогда почему же она не может его считать? Задачу нужно было решить срочно, причем прикладную логику я уже сделал, а споткнулся на мелочи. Я уже было хотел перейти на локальный компьютер для разработки (тем более что на сервере из соображений быстродействия отключена отладка). Но тут мне пришла мысль впервые попробовать использовать не временные файлы, а потоки:

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

Увы, при этом выдавалась все та же ошибка доступа. Кроме того, в документации я посмотрел, что из памяти можно считывать не все форматы, а только MXL и ODS. Бред, конечно, но такова 1С.

И тут до меня дошло попробовать поменять расширение на XLSX:

//на клиенте
ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
Ф = Новый Файл(ПолноеИмяФайла);
ТипФайла = Ф.Расширение);//на сервере
ТекКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ТекКаталог);
ПолноеИмяФайла = ТекКаталог + «» + Новый УникальныйИдентификатор() + ТипФайла;
ДД.Записать(ПолноеИмяФайла);ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);

И всё заработало. У 1С, как обычно, беда с диагностикой ошибок. Она пишет совсем не ту ошибку, которая вызывает проблему. Доступ к файлу есть, просто формат файла 1С определяет по расширению, а не содержимому файла.

Время факт: 0,5 час. На поиски решения проблемы.

Ошибка при вызове метода контекста (Прочитать)

Ошибка при выполнении файловой операции при чтении xls файла методом прочитать объекта ТабличныйДокумент. 

Скрин сообщения

oshibka-pri-vypolnenii-fajlovoj-operatsii

Данный объект 1C умеет не только записывать в Excel, но возможна и обратная операция с ограничениями, свойственными табличному документу.

В чем плюсы такой методики чтения

  • Всё производится встроенными средствами;
  • достаточно быстро;
  • код в 2 строки
  • данные не требуется преобразовывать, обычно всё считывается достаточно корректно, их можно проверить средствами 1С.
  • возможно считывать значения ячеек как текст (без авто-преобразования),
  • доступно на сервере, где excel вообще нельзя установить (linux, OSx).

Причина ошибки

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

Если же документ открыт, то выходит ошибка при выполнении файловой операции чтения.

COM-Объекта Excel.Application в данном ситуации просто открывает еще один экземпляр, а также  в нём можно скрыть отображение сообшения о режиме «чтения».

Другой причиной может быть: отсутствие прав на чтение этого файла

Решение:

Закрыть открытую в Excel (или другой программе) книгу, проверить права на файл (возможность открытия в его в Excel, косвенный признак его наличия)

Изобилие товаров устраняет дефицит, широкой рекламой устраняется психическая неустойчивость.

Автор magnifico61, 30 мая 2018, 22:18

0 Пользователей и 1 гость просматривают эту тему.


ФайлНовый = ПолучитьИмяВременногоФайла("xlsx");
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.WorkBooks.Open(Объект.Файл);
Книга.SaveAs(ФайлНовый);
Excel.Quit();
Excel = Неопределено;

Файл сохраняется, но при открытии ошибка формат или расширение файла является недопустимым.
Как мне сохранить файл в новый формат?


Цитата: magnifico61 от 30 мая 2018, 22:18
Файл сохраняется, но при открытии ошибка формат или расширение файла является недопустимым.
Как мне сохранить файл в новый формат?

Сохранить сначала в xls-формате, открыть файл в Excel, поддерживающем xlsx и сохранить его в нужном.

Что за конфигурация у Вас, почему возникла потребность в программировании?


УТ 11. Excel поддерживает xlsx.

Руками каждый раз пересохранять файл нет возможности, так как постоянно грузится большое количество данных с разных файлов Excel.
Это необходимо чтобы облегчить работу пользователю.


А сама УТ 11 не поддерживает выгрузку в xlsx-формате?
А если  .xlsx выгруженного файла изменить на  .xls, открываться будет?
Excel новых версий поддерживает оба формата, так зачем эти «городушки»?

На какой платформе работаете?


в xls не пробовал сохранить.
платформа 8.3.10.2580


Пользовался таким, чтобы пересохранить наоборот, xlsx в xls. Остальные варианты не пробовал но, думаю, всё будет работать.

Функция ПересохранитьЭксельФайл(ПутьКФайлу,ПутьНового=Неопределено,пФорматФайла=51)

Попытка
ExcelЗапущен = Ложь;

//Проверка на существование файла
мФайл = Новый Файл(ПутьКФайлу);
Если НЕ мФайл.Существует() Тогда
ТекстИскл = "[Файл: " + ПутьКФайлу + " не найден.]";
ВызватьИсключение ТекстИскл;
КонецЕсли;

СоответствиеРасширений = Новый Соответствие;

СоответствиеРасширений.Вставить(45, ".mht");
СоответствиеРасширений.Вставить(46, ".xml");
СоответствиеРасширений.Вставить(23, ".csv");
СоответствиеРасширений.Вставить(9,  ".dif");
СоответствиеРасширений.Вставить(8,  ".dbf");
//работает только в 2007
СоответствиеРасширений.Вставить(51, ".xlsx");
СоответствиеРасширений.Вставить(47, ".xml");
СоответствиеРасширений.Вставить(57, ".pdf");
СоответствиеРасширений.Вставить(60, ".ods");
//

СоответствиеВерсий = Новый Соответствие;

СоответствиеВерсий.Вставить(45, "11.0");
СоответствиеВерсий.Вставить(46, "11.0");
СоответствиеВерсий.Вставить(23, "11.0");
СоответствиеВерсий.Вставить(9,  "11.0");
СоответствиеВерсий.Вставить(8,  "11.0");
//работает только в 2007
СоответствиеВерсий.Вставить(51, "12.0");
СоответствиеВерсий.Вставить(47, "12.0");
СоответствиеВерсий.Вставить(57, "12.0");
СоответствиеВерсий.Вставить(60, "12.0");
//

Расширение = СоответствиеРасширений.Получить(пФорматФайла);
Если Расширение=Неопределено Тогда
ВызватьИсключение "[Неверно указан параметр ""Формат файла"".]";
КонецЕсли;

Если ПутьНового=Неопределено Тогда
ПутьНового=ПолучитьИмяВременногоФайла(Расширение);
КонецЕсли;

Попытка
Excel = Новый COMОбъект("Excel.Application");
ExcelЗапущен = Истина;
Исключение
ВызватьИсключение "[Не удалось запустить Excel.]" + Символы.ПС + ОписаниеОшибки();
КонецПопытки;

//проверка возможности сохранения в выбранный формат
Если Excel.Version < СоответствиеВерсий.Получить(пФорматФайла) Тогда
ВызватьИсключение "[В текущей версии Excel выбранный формат файла ("+Расширение+") не поддерживается.]";
КонецЕсли;

Excel.Visible       = Ложь;
Excel.DisplayAlerts = Ложь;

КнигаExcel = Excel.WorkBooks.Open(ПутьКФайлу);
КнигаExcel.SaveAs(ПутьНового, пФорматФайла);

КнигаExcel.Close();
Excel.DisplayAlerts = Истина;
Excel.Quit();
Excel = Неопределено;

Возврат ПутьНового;

Исключение
Если ExcelЗапущен Тогда
Excel.Quit();
КонецЕсли;
КнигаExcel = Неопределено;
Excel      = Неопределено;
ВызватьИсключение ОписаниеОшибки();
КонецПопытки;

КонецФункции


Если  Число(Excel.version) < 12 Тогда
// Excel это ComОбъект(«Excel.application»)

   FileFormatNum = -4143// ага, загадочное число

Иначе
   FileFormatNum = 56// ну что мешало сделать форматы стандартными?

КонецЕсли;
БольшойОтчет.SaveAs(ИмяОтчета,FileFormatNum);

отсюда:
https://www.mista.ru/topic.php?id=637830

Банальные мелочи при сохранении в Excel. Боян, но мож кому надо.

При составлении из 1С сложных многостраничных книг в Excel наткнулся на нижеприведенные проблемы, и тк решил их, выкладываю тут. Может кому пригодится )

Если админы посчитают ненужным — сносите смело.

1. «Кривая» расцветка. Цвета абсолютно не те какие закладывались изначально.
Проблема возникает при сборке различных страниц Excel выгруженных из 1С в одну книгу. Тк сборка обычно происходит на основе существующей либо новой книги Excel то палитра книги отличается от палитры сохраняемых из 1С листов. Решение — стандартизировать палитру, подгоняя ее под палитру используемую 1С. Если сборка идет на основе некого шаблона, то надо предварительно на этапе его разработки скопировать туда палитру из «1Сного» листа Excel. Если сборка идет в пустой файл — то просто скопировать палитру (благо это очень просто).

БольшойОтчет.Colors = СтраницаИз1С.Colors;

2. Стандартная сетка Excel зачастую раздражает и мешается. Лучше ее отключать. Например так.

БольшойОтчет.Application.Activewindow.DisplayGridLines = 0;

3. По умолчанию желательно открывать некий определенный лист книги. Делаем:

БольшойОтчет.WorkSheets(Х).Activate(); // где Х — номер листа

4. Вечно один из пользователей отчетов не имеет 2007 хотя бы Excel. Логично что приходится сохранять в xls а не xlsx. Это легко иделать из 1С, а вот используя хз какую версию Excel на компьютере пользователя (которую переодически меняют админы по своему усмотрению) сложнее (тк он для новых книг сам выбирает формат по умолчанию). Приходится анализировать версию:

Если Число(Excel.version) < 12 Тогда
// Excel это ComОбъект(«Excel.application»)
FileFormatNum = -4143 // ага, загадочное число
Иначе
FileFormatNum = 56 // ну что мешало сделать форматы стандартными?
КонецЕсли;
БольшойОтчет.SaveAs(ИмяОтчета,FileFormatNum);

Собственно все. Удачи.

Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают


Цитата: wise от 31 мая 2018, 13:19
Иначе
   FileFormatNum = 56

:o lol , в моей функции как раз формат «56», т.е. xls отсутствует. Видимо я именно в xlsx и сохранял, а про xls забыл. Спасибо за подсказку.

Т.е. нужно добавить в мою функцию

СоответствиеРасширений.Вставить(56,  ".xls");
СоответствиеВерсий.Вставить(56,  "11.0");



Для наиболее точного ответа на вопрос необходимо указывать полную версию платформы 1С:Предприятие и, желательно, указать программный код в котором возникли проблемы.

Ваша задача обычно решается таким кодом:

&НаКлиенте
Процедура ВыбратьФайл(Команда)

    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения(
        "ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));

КонецПроцедуры // ВыбратьФайл()

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, 
    ДополнительныеПараметры) Экспорт

    Если Подключено Тогда

        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Заголовок = НСтр("ru='Выберите файл загрузки в формате (*.xls, *.xlsx, *.xml, *.csv, *.txt)'");
        Диалог.ПолноеИмяФайла = "";
        Диалог.МножественныйВыбор = Ложь;
        Диалог.ПредварительныйПросмотр = Истина;
        Диалог.Фильтр = "Формат (*.xls;*.xlsx;*.xml;*.csv;*.txt)|*.xls;*.xlsx;*.xml;*.csv;*.txt|"; 
        Диалог.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));

    Иначе

        // Сообщить что не удалось подключить расширение

    КонецЕсли;

КонецПроцедуры // ОповещениеПодключенияРасширенияРаботыСФайлами()

&НаКлиенте
Процедура ОповещениеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Если ВыбранныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;    

    Если ВыбранныеФайлы.Количество() = 1 Тогда

        НачатьПомещениеФайла(Новый ОписаниеОповещения("ОповещениеВыборФайлаНаСервере", ЭтотОбъект), 
            , // Можно указать строковой реквизит тогда адрес будет так же в этом реквизите 
            ВыбранныеФайлы[0], 
            Ложь, 
            УникальныйИдентификатор);

    Иначе
        // Сообщить что можно выбрать только один файл
    КонецЕсли;

КонецПроцедуры // ОповещениеВыборФайла() 

&НаСервере
Процедура ОповещениеВыборФайлаНаСервере(Результат, Адрес, ВыбранноеИмяФайла, 
    ДополнительныеПараметры) Экспорт

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

    ТекстовыйДокумент = Новый ТекстовыйДокумент();
    ТекстовыйДокумент.Прочитать(ПутьКФайлу);
    Содержимое = ТекстовыйДокумент.ПолучитьТекст();

    УдалитьФайлы(ПутьКФайлу);

КонецПроцедуры // ОповещениеВыборФайлаНаСервере() 

P.S. Прикрепил ссылку на пример обработки.

Ошибка при чтении файла из эксель в табличный документ?

Я пытаюсь файл эксель прочитать в табличный документ. Файл с форматом «xlsx» читается без проблем, а файл формата «xls» выдает ошибку. В чём ошибка?5f900d0e5763a276099014.png


  • Вопрос задан

    более двух лет назад

  • 1173 просмотра

1. подробнее какой код…
2. Описание:
Считывает табличный документ из файла.
Позволяет считывать табличный документ из файла табличного документа Microsoft Excel 97 — 2010 ( *.xls и *.xlsx) или электронной таблицы OpenOffice Calc ( *.ods).

Пригласить эксперта

Иногда под расширением .xls на самом деле файл записан в .xlsx


  • Показать ещё
    Загружается…

25 июн. 2023, в 03:49

15000 руб./за проект

25 июн. 2023, в 03:19

4500 руб./за проект

25 июн. 2023, в 02:28

10000 руб./за проект

Минуточку внимания

  • Ошибка при вызове метода контекста прочитать файл не обнаружен файл
  • Ошибка при вызове метода контекста получитьпоследнее
  • Ошибка при вызове метода контекста скомпоноватьрезультат невозможно осуществить вывод результата
  • Ошибка при вызове метода контекста прочитать ошибка разбора xml
  • Ошибка при вызове метода контекста получитьобщиймакет