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

Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.

Найденные решения:

Полная формулировка ошибки:

{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

1C 8 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу .xlsx

1С 8 работа с Excel Ошибка при вызове метода контекста (Open)

При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.

Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.

1C 8

Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»

1C 8.2 8.3 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.

1C 8 Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

23-09-2020

Журавлев А.С.
(Сайт azhur-c.ru)

Загрузка падает с ошибкой

Я
   Beduin

07.05.15 — 18:58

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.ОткрытьФайл(ИмяФайла, «UTF-8»);

{Обработка.ВыгрузкаЗагрузкаДанныхXML.МодульОбъекта(64)}: Ошибка при вызове метода контекста (ОткрытьФайл)

            ЗаписьXML.ОткрытьФайл(ИмяФайла, «UTF-8»);

по причине:

Ошибка доступа к файлу ‘C:UsersAdmin1cDesktopФайл выгрузки.xml’

Режим тонкий клиент. Бухгалтерия КОРП 3.0

В чем причина?

   Beduin

1 — 07.05.15 — 19:00

При чем, если просто открыть файл как текстовый, то все хорошо.

   mehfk

2 — 07.05.15 — 19:03

Нет доступа на запись. Пнуть сисадмина.

   Beduin

3 — 07.05.15 — 19:05

(2) Средствами 1С создал файл и записал его в это папку.

Права есть.

   Beduin

4 — 07.05.15 — 19:13

Это может из-за того что аккаунт от службы сервера не входит в группу администраторов?

   mehfk

5 — 07.05.15 — 19:17

Какое из 4-х слов в первом предложении не понятно?

  

Beduin

6 — 07.05.15 — 20:00

(5) Угу . дело было в этом. Спасибо.

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  1. 20.12.2016, 13:59

    #1

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию COM-объект и Excel

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?


  2. 20.12.2016, 15:25

    #2

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?

    Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?


  3. 20.12.2016, 15:55

    #3

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все очень просто.
    Файловая база.
    Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
    Никакого клиент-серверного режима нет.


  4. 20.12.2016, 16:31

    #4

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    А попробуй «завернуть» в Попытку

    Что выдаст?

    Попытка
    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.WorkBooks.Open(ИмяФайла);
    Состояние(«Обработка файла Microsoft Excel…»);
    Исключение
    Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;


  5. 20.12.2016, 17:04

    #5

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка
    ОписаниеОшибки()=»»


  6. 20.12.2016, 17:25

    #6

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    [QUOTE=lilyapo;469920]Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка

    похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.


  7. Пользователь сказал cпасибо:


  8. 20.12.2016, 17:41

    #7

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все получилось!
    Спасибо огромное, фантастика!:dance:


  9. 13.09.2018, 12:20

    #8

    KrisLis вне форума


    Гость форума


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Все получилось!
    Спасибо огромное, фантастика!:dance:

    Пожалуйста. расскажите, как решили проблему.
    Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.


  10. 13.09.2018, 13:10

    #9

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
    Так я справилась с проблемой


Nikoly
16.07.2011 15:31 Прочитано: 21616

При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1СНовыйДокумент.xls’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
Если запускаю обработку не в регламентном задании, то все выполняется без ошибок. Подскажите что это за ошибка и как мне читать данные из Excel в регламентном задании?


Изменено 16.07.11 15:32:46 по причине: Другая категория

Yandex
Возможно, вас также заинтересует

Реклама на портале

Nikoly
19.07.2011 18:27 Ответ № 1

http://forum.mista.ru/topic.php?id=522217
Создать папку C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)

Подсказка: Для выделения Кода используйте (в редакторе).

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

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

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

oshibka-pri-vypolnenii-fajlovoj-operatsii

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

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

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

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

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

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

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

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

Решение:

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

Реклама — величайшее искусство XX века.

  1. Доброе время суток.
    Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (open)» там и там база файловая.Переделал все что нашел в инете
    — создал папку C:WindowsSysWOW64configsystemprofileDesktop ;
    — Настройки DCOM добавил пользователя;
    — И проделал «А решается это так:
    на сервере убиваем excel (taskkill /im excel.exe /f)
    открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
    в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
    справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
    Готово»
    И все равно выскакиваю по ошибке.
    Есть у кого то предложение что можно сделать еще.

  2. Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    покпжите текст ошибки полностью.
    из всего там нужно только последнее действие.

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

  3. {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Open)
    КНИГА = Excel.WorkBooks.Open(ИмяФайла);
    по причине:
    Неизвестная ошибка

  4. Запустил интерактивно и все равно ошибка
    Опечатки нет пере набрал Open раз 10

  5. Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    при интерактивном открытии файла, что говорит?

  6. Доброго,
    Клиент какой запускается на RDP, 32/64 бит ?

  7. Добрый день.При интерактивном открытии ничего не пишет.
    RDP клиент запускается 64 и офис 64

  8. Похожая проблема вылечилась использованием 32 битного клиента (мы можем это себе позволить),
    еще, как вариант, я делал через формирование файла на сервере и передачу его на клиента
    С.П.- : «ПоместитьВоВременноеХранилище», «ПолучитьФайлы», «ОписаниеПередаваемогоФайла»
    1.На сервере получаю макет, передаю его на клиента через «ПоместитьВоВременноеХранилище»/»ПолучитьФайлы»
    2. На клиенте формируется документ через COM : «Новый COMОбъект(«Word.Application»)»
    3. На клиенте заполняется макет, тем или иным способом

  9. Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    мой набор: win8.1 64x, Excel 2016 64х, 1c 8.3.13.1513 64х и текст обработки

        Путь    = Объект.ИмяФайла; // тип Строка
    
        Попытка
            ОбъектExcel = Новый COMОбъект("Excel.Application");
        Исключение
            Возврат "Ошибка открытия MS Excel";
        КонецПопытки;
    
        Попытка
            ОбъектExcel.WorkBooks.Open(Путь);
        Исключение
            ОбъектExcel.DisplayAlerts = 0;
            ОбъектExcel.Quit();
            ОбъектExcel.DisplayAlerts = 1;
            ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
            Возврат ОписаниеОшибки;
        КонецПопытки;
    

    проверил Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Удостоверение
    Выбран «Текущий пользователь»

    Создал папку Desktop по обоим путям C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop

    И хренасдва. всё равно выдаёт ошибку на стройке ОбъектExcel.WorkBooks.Open(Путь); и уходит в исключение :(

    {ВнешняяОбработка.ЗагрузкаИзExcel.Форма.Форма.Форма(53)}: Ошибка при вызове метода контекста (Open)
            ОбъектExcel.WorkBooks.Open(Путь);
    по причине:
    Неизвестная ошибка
    

    — Объединение сообщений, 17 янв 2019

    попробовал под 1c 8.3.13.1513 86х, то же самое
    после каждого запуска обработки в диспетчере остаётся висеть процесс Excel’я, я его каждый раз завершаю

    Последнее редактирование: 17 янв 2019

  10. Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    одинаковая ситуация с тонким и толстым клиентом

  11. Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    пока решение нашёл в таком варианте:
    открыть файл Excel
    сделать поправки в коде

        Путь    = Объект.ИмяФайла; 
       
        Попытка
            //ОбъектExcel = Новый COMОбъект("Excel.Application");
            ОбъектExcel = ПолучитьCOMОбъект(, "Excel.Application");
        Исключение
            ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
            Возврат ОписаниеОшибки;
        КонецПопытки;
       
        //Попытка
        //    ОбъектExcel.WorkBooks.Open(Путь);
        //Исключение
        //    ОбъектExcel.DisplayAlerts = 0; 
        //    ОбъектExcel.Quit();
        //    ОбъектExcel.DisplayAlerts = 1;
        //    ОписаниеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
        //    Возврат ОписаниеОшибки;
        //КонецПопытки;
    

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

    — Объединение сообщений, 17 янв 2019

    не совсем понял настройки безопасности
    Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM->Microsoft Excel Application->Свойства->Безопасность
    добавляя там пользователя, у меня то проходило чтение то нет
    стабильной работы обработки при первом варианте кода не дало

    Последнее редактирование: 17 янв 2019

  12. Offline

    ExtreMe
    Опытный в 1С

    Регистрация:
    13 сен 2014
    Сообщения:
    89
    Симпатии:
    8
    Баллы:
    29

    Последнее редактирование: 20 янв 2019

  13. Offline

    evgkup

    Регистрация:
    9 авг 2019
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    Была аналогичная проблема на сервере
    Помогло следующее (отображение открывающегося приложения excel)
    Попытка
    лпИмяФайла = «c:tmp1.xls»;
    лпExcel = Новый COMОбъект(«Excel.Application»);
    лпExcel.Visible = 1;
    лпExcel.DisplayAlerts = 0;
    лпExcel.WorkBooks.Open(лпИмяФайла);
    Исключение
    лпExcel.Quit();
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    …набор действий

    Последнее редактирование: 9 авг 2019

Открытие файла пдф на сервере

Я
   Eskeych

03.10.22 — 13:34

Хочу сделать открытие пдф документа и подпись ецп в http запросе. для этого мне нужно выполнить код

ЗаписьПДФ = Новый ЗаписьPDF();

ЗаписьПдф.Открыть(АдресКФайлуНаПК)

ну и дальше выполняется код

тут вылезла ошибка: «ошибка вызова метода контекста открыть()»

в синтакс-помощнике доступность стоит веб-сервис, сервис, тонкий клиент

   Eskeych

1 — 03.10.22 — 13:38

ЗаписьPDF (PDFWriter)

Открыть (Open)

Вариант синтаксиса: Открыть файл

Синтаксис:

Открыть(<ИмяФайла>)

Параметры:

<ИмяФайла> (необязательный)

Тип: Строка.

Имя файла для записи PDF-документа.

Вариант синтаксиса: Установить поток

Синтаксис:

Открыть(<Поток>)

Параметры:

<Поток> (необязательный)

Тип: Поток, ПотокВПамяти, ФайловыйПоток.

Поток для записи PDF-файла.

Описание:

Открывает PDF-документ для записи.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.

См. также:

ЗаписьPDF, метод ОткрытьАсинх

ЗаписьPDF, метод НачатьОткрытие

Использование в версии:

Доступен, начиная с версии 8.3.16.

Описание изменено в версии 8.3.18.

Воть :)

   Мультук

2 — 03.10.22 — 13:39

(0)

1) Сервер и клиент физически разные компьютеры?

2) АдресКФайлуНаПК = «c:123.pdf»; //Лежит на локальном компьютере

или

   АдресКФайлуНаПК = «\servermydoc123.pdf»; //Лежит в сети, доступен учетке от которой крутится 1с на сервере

   Garykom

3 — 03.10.22 — 13:44

(0) Вот ты и столкнулся что PDF не подходящий для подписи…

   Eskeych

4 — 03.10.22 — 13:46

(3) яы его интерактивно выбирал и подписывал. Но в http запросе не хочет открывать.

   Eskeych

5 — 03.10.22 — 13:47

(2) на локальном компе лежит. я имер ввиду на сервере &НаСервере вот это)

   Garykom

6 — 03.10.22 — 13:48

(4) Под http запросом подразумеваешь http-сервис?

А он от чьего имени работает?

   Eskeych

7 — 03.10.22 — 13:49

(2) на апаче развернул сервер, и на этом же пк хочу подписать. 2) АдресКФайлуНаПК = «c:123.pdf»; //Лежит на локальном компьютере вот этот вариант

   Eskeych

8 — 03.10.22 — 13:50

(6) да, http-сервис. Вызываю с браузера) В каком смысле от чьего имени вызываю?)

   Garykom

9 — 03.10.22 — 13:50

(7) А апач на попытку получить этот «c:123.pdf» что скажет?

   Garykom

10 — 03.10.22 — 13:51

(9)+ Точнее апач дергает 1С от какого юзера, с какими правами и видимостью/доступом?

   Eskeych

11 — 03.10.22 — 13:53

(9) это намек на то что бы прописать сетевой пусть к файлику?

(10) это демка БП с полными правами

   Eskeych

12 — 03.10.22 — 13:53

файловая, дальше все будет в грм

   Eskeych

13 — 03.10.22 — 13:57

Кстати, я думал передать файлик во временное хранилище и оттуда его запульнуть в записьPDF.Открыть(адресВремХран), по сути тогда 1с уже будет видеть этот файл. Взлетит или нет?)

   Kassern

14 — 03.10.22 — 13:58

(13) Это проверить меньше минуты, дольше наверное пост сюда написать)

   Eskeych

15 — 03.10.22 — 14:03

(14) не, ругается)

   Eskeych

16 — 03.10.22 — 14:25

ап)

   Сергиус

17 — 03.10.22 — 15:08

(15)Какой путь в АдресКФайлуНаПК?

   Eskeych

18 — 03.10.22 — 15:29

(17) на раб столе C:UsersNewDesktopcovd.pdf

   Eskeych

19 — 03.10.22 — 15:32

может быть у апача нет доступа к файлу? и нужно его как-нибудь дать?)

   Kassern

20 — 03.10.22 — 15:37

(19) пробовали создать общую папку доступную всем?

   Kassern

21 — 03.10.22 — 15:38

И покажите как вы через хранилище пробовали, скиньте кусок кода, как вы передавали с директивами и получали ДД.

   mikecool

22 — 03.10.22 — 15:40

(15) значит тебе нельзя ((

   Ногаминебить

23 — 03.10.22 — 15:42

(15) записьPDF.Открыть(адресВремХран)

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

   Kassern

24 — 03.10.22 — 15:43

(23) я потому и просил, чтобы он кусок кода скинул. Может он из тех, кто на переменных экономит))

   Eskeych

25 — 03.10.22 — 15:43

(21) та его уже затер, много попыток. Хочу попробовать вот так сделать:  

ИмяВременногоФайла = КаталогВременныхФайлов() + «.pdf»;

ДвоичныйФайл = СтрокаНабора.Файл.Получить();

ДвоичныйФайл.Записать(ИмяВременногоФайла);

   Eskeych

26 — 03.10.22 — 15:43

это на инфостарте нашел

   Eskeych

27 — 03.10.22 — 15:44

(23) пробовал прописывать файл C:UsersNewDesktopcovd.pdf вот так прям не видит и все. Пишет что {ФормированиеТестовыхДанных HTTPСервис.Customers.Модуль(84)}: Ошибка при вызове метода контекста (Открыть)

   Kassern

28 — 03.10.22 — 15:48

В общем код должен быть примерно таким

&НаКлиенте

Процедура ПрочитатьФайлНаКлиенте()

Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    Диалог.Заголовок = «Выберите файл PDF»;

    Диалог.ПолноеИмяФайла = «»;

    Диалог.ПредварительныйПросмотр = Истина;

    //Диалог.Фильтр=»» — тут свой формат pdf можете прописать

    ВыбранФайл=Диалог.Выбрать();

    Если ВыбранФайл Тогда

        Файл=Новый Файл(Диалог.ПолноеИмяФайла);

        ДД=Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла);

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

        ЗагрузитьФайлНаСервере(Адрес);

    КонецЕсли;

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

&НаСервере

Процедура ЗагрузитьФайлНаСервере(Адрес)

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

    Поток=ДД.ОткрытьПотокДляЧтения();

    ЗаписьПДФ = Новый ЗаписьPDF();

        ЗаписьПдф.Открыть(Поток);

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

   Eskeych

29 — 03.10.22 — 15:53

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

писал так ДД = Новый ДвоичныеДанные(«C:UsersNewDesktopcovd.pdf»);

   Eskeych

30 — 03.10.22 — 15:54

(29) или меня уже плавит?

   Kassern

31 — 03.10.22 — 15:55

(29) Вы код целиком покажите, вы этот кусок где запускали, на клиенте, или на сервере?

   Ногаминебить

32 — 03.10.22 — 15:55

Патамушта тогда надо ИмяВременногоФайла = КаталогВременныхФайлов() + «КакоетоКлевоеИмя.pdf»; И его уже туда, где щас юзерслалала

   Eskeych

33 — 03.10.22 — 15:58

(31) это все http запрос. выполняется все на сервере, как я понял.

Функция GetcustomersListGetCustomersList(Запрос)  

    ПутьКФайлыПодписанный = «\192.168.50.104обменcontract_offer-29-51 — копия.pdf»; //пробовал закинуть в общую папку  

    //ДД = Новый ДвоичныеДанные(«C:/Users/New/Desktop/contract.pdf»); // это получаю с пк

    //КопироватьФайл(«C:/Users/New/Desktop/contract_offer-29-51.pdf», ПутьКФайлыПодписанный);

    Адрес = ПоместитьВоВременноеХранилище(ПутьКФайлыПодписанный);

    ДанныеСертификата = ДанныеСертификата();

    Штамп = Штамп(ДанныеСертификата.Наименование, ДанныеСертификата.ДанныеСертификата);

    ПутьКаталога = КаталогВременныхФайлов() + «.pdf»;

    //ДД.Записать(ПутьКаталога);

    
    МенеджерКриптографии = Новый МенеджерКриптографии(ДанныеСертификата.ИмяПрограммы, «», ДанныеСертификата.ТипПрограммы);

    МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = «145236»;

    
    ПодписьPDF = Новый ОписаниеПодписиPDF;

    ПодписьPDF.Имя = «ПодписьДоговора»;    

    ПодписьPDF.Сертификат = Новый СертификатКриптографии(ДанныеСертификата.ДанныеСертификата);

    ПодписьPDF.ТипПодписи = ТипПодписиPDF.Сертифицирующая;

    ПодписьPDF.БлокировкаДокумента = Истина;

    ПодписьPDF.Верх = 5;

    ПодписьPDF.Лево = 70;  

    ПодписьPDF.НомерСтраницы = 1;

    
    ЗаписьPDF = Новый ЗаписьPDF();

    ЗаписьPDF.Открыть(ПутьКаталога);

    //

    //ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);

    //ЗаписьPDF.Закрыть();

    
    Массив = Новый Массив;

    Массив.Добавить(«ываываыв»);

    
    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Массив);

    СтрокаДляОтвета = ЗаписьJSON.Закрыть();

    
    Ответ = Новый HTTPСервисОтвет(200);

    Ответ.Заголовки.Вставить(«Content-type», «application/JSON;  charset=utf-8»);

    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Возврат Ответ;            

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

   Eskeych

34 — 03.10.22 — 16:00

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

   Kassern

35 — 03.10.22 — 16:01

(33) Сделайте простенькую проверку.

Файл = Новый файл(ПутьДоФайла);

Файл.Существует() — что выдает?

   Kassern

36 — 03.10.22 — 16:02

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

   Eskeych

37 — 03.10.22 — 16:03

(35) пробовал создавать, ругается на Новый Файл

   Eskeych

38 — 03.10.22 — 16:03

Сейчас скину точную ошибку

   Eskeych

39 — 03.10.22 — 16:04

Ошибка при вызове конструктора (ФАйл) вот что пишет

   Eskeych

40 — 03.10.22 — 16:06

(36) апач запущен кстати от имени системы, а не юзера

   Kassern

41 — 03.10.22 — 16:08

(40) попробуйте от админа запустить и протестить

   Eskeych

42 — 03.10.22 — 16:16

и апач и 1с запущены от имени админа

   Ivan_495

43 — 03.10.22 — 16:22

путь пропиши d:имя.pdf

   Eskeych

44 — 03.10.22 — 16:32

(43) не не работает, даже в папках с общим доступом.

   Ivan_495

45 — 03.10.22 — 16:35

с клиента попробуй

   Kassern

46 — 03.10.22 — 16:38

(44) можете в base64 передать данный pdf файл и тогда http сервис его без проблем скушает и обработает)

   Eskeych

47 — 03.10.22 — 16:44

(46) сейчас пилю регистр в котором буду хранить двоичные данные файлов. и из них формировать док и отправлять. Отпишусь если получится)

   Eskeych

48 — 03.10.22 — 17:15

В общем на каталог временных фалов тоже ругается.

    НаборЗаписей = РегистрыСведений.БК_РегистрСведений1.СоздатьНаборЗаписей();

    НаборЗаписей.Прочитать();

    ИмяВремХранилища = КаталогВременныхФайлов() + «namefile.pdf»;

    Строка = НаборЗаписей[0];

    ДвочиныйФайл = Строка.Файл.Получить();

    
    Если ДвочиныйФайл <> Неопределено Тогда

        
        ДвочиныйФайл.Записать(ИмяВремХранилища);

        
    КонецЕсли;

   Eskeych

49 — 03.10.22 — 17:16

видимо что-то реально с доступом к папкам

   Kassern

50 — 03.10.22 — 17:27

(48) зачем что-то записывать, когда есть поток?

   Eskeych

51 — 03.10.22 — 17:34

Попытка записи в поток не поддерживающий запись — ответ

   Garykom

52 — 03.10.22 — 19:05

(18) >на раб столе C:UsersNewDesktopcovd.pdf

Ты в курсе что рабочий стол одного юзера недоступен другому без админских прав?

   Eskeych

53 — 04.10.22 — 09:07

(52) все было запущено от админа и 1с и апач. Кстати указал каталог временных файлов при публикации. ПДФ вроде как открыл, но не хочет писать подпись

   Garykom

54 — 04.10.22 — 09:41

   Fram

55 — 04.10.22 — 11:15

Интересно все что тс пишет происходит и делается в пределах одной системы. А то все обсуждение можно затирать если это не так )

   Eskeych

56 — 04.10.22 — 11:42

(54) в общем сделал и то и то, не пашет. Текущий код:

    НаборЗаписей = РегистрыСведений.БК_РегистрСведений1.СоздатьНаборЗаписей();

    НаборЗаписей.Прочитать();

    
    ИмяВремХранилища = КаталогВременныхФайлов() + «namefile.pdf»;

    Строка = НаборЗаписей[0];

    ДвочиныйФайл = Строка.Файл.Получить();

        
    Каталог = КаталогВременныхФайлов();

    ИмяФайла = Строка(Новый УникальныйИдентификатор) + «.pdf»;

    ИмяПромеж = Каталог + ИмяФайла;

    ДвочиныйФайл.Записать(ИмяПромеж);

    ДанныеСертификата = ДанныеСертификата();

    Штамп = Штамп(ДанныеСертификата.Наименование, ДанныеСертификата.ДанныеСертификата);

        
    МенеджерКриптографии = Новый МенеджерКриптографии(«Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider», «», 80);

    МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = «145»;  

        
    ПодписьPDF = Новый ОписаниеПодписиPDF;

    ПодписьPDF.Имя = «ПодписьДоговора»;    

    ПодписьPDF.Сертификат = Новый СертификатКриптографии(ДанныеСертификата.ДанныеСертификата);

    ПодписьPDF.ТипПодписи = ТипПодписиPDF.Сертифицирующая;  

    //ПодписьPDF.БлокировкаДокумента = Истина;

    //ПодписьPDF.Верх = 5;

    //ПодписьPDF.Лево = 70;  

    //ПодписьPDF.НомерСтраницы = 1;

    
    ЗаписьPDF = Новый ЗаписьPDF();

    ЗаписьPDF.Открыть(ИмяПромеж);    

    ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);

    ЗаписьPDF.Закрыть();

    
    Массив = Новый Массив;

    Массив.Добавить(«ываываыв»);

    
    ЗаписьJSON = Новый ЗаписьJSON;

    ЗаписьJSON.УстановитьСтроку();

    ЗаписатьJSON(ЗаписьJSON, Массив);

    СтрокаДляОтвета = ЗаписьJSON.Закрыть();

    
    Ответ = Новый HTTPСервисОтвет(200);

    Ответ.Заголовки.Вставить(«Content-type», «application/JSON;  charset=utf-8»);

    Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Возврат Ответ;

из ДД собираю док. Уже ОТКРЫВАЕТ но, не хочет записывать, права на папку и файлы я дал.

Вылетает при выполнении кодманды «ЗаписьPDF.ЗаписатьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);»

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

если это все подписывать обработкой то все норм. Кстати, после того как http сервис вываливает с этой ошибкой «Ошибка при вызове метода контекста (ЗаписатьПодпись)» . Нужно чистить кеш иначе даже обработка выдает ошибку 0х00000000 тип оне находит контейнер сетрификата.

   Eskeych

57 — 04.10.22 — 11:44

Ошибка при получении свойства сертификата (0x00000000) вот ошибка. Решается если добавить заново базу в список estart

  

Garykom

58 — 04.10.22 — 13:56

(56) Ты понимаешь что фоновое подписание «на сервере» это не тривиальная задача?

пиши микросервис на Go как я делал в свое время https://github.com/Garykom/mdlp

Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.

Найденные решения:

Полная формулировка ошибки:

{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

1C 8 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу .xlsx

1С 8 работа с Excel Ошибка при вызове метода контекста (Open)

При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.

Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.

1C 8

Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»

1C 8.2 8.3 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.

1C 8 Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

23-09-2020

Журавлев А.С.
(Сайт azhur-c.ru)

  1. 20.12.2016, 13:59


    #1

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию COM-объект и Excel

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?


  2. 20.12.2016, 15:25


    #2

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?

    Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?


  3. 20.12.2016, 15:55


    #3

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все очень просто.
    Файловая база.
    Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
    Никакого клиент-серверного режима нет.


  4. 20.12.2016, 16:31


    #4

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    А попробуй «завернуть» в Попытку

    Что выдаст?

    Попытка
    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.WorkBooks.Open(ИмяФайла);
    Состояние(«Обработка файла Microsoft Excel…»);
    Исключение
    Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;


  5. 20.12.2016, 17:04


    #5

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка
    ОписаниеОшибки()=»»


  6. 20.12.2016, 17:25


    #6

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    [QUOTE=lilyapo;469920]Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка

    похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.


  7. Пользователь сказал cпасибо:


  8. 20.12.2016, 17:41


    #7

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все получилось!
    Спасибо огромное, фантастика!:dance:


  9. 13.09.2018, 12:20


    #8

    KrisLis вне форума


    Гость форума


    По умолчанию Re: COM-объект и Excel

    Цитата Сообщение от lilyapo
    Посмотреть сообщение

    Все получилось!
    Спасибо огромное, фантастика!:dance:

    Пожалуйста. расскажите, как решили проблему.
    Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.


  10. 13.09.2018, 13:10


    #9

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
    Так я справилась с проблемой


Nikoly
16.07.2011 15:31 Прочитано: 22034

При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1СНовыйДокумент.xls’. Это может быть вызвано одной из следующих причин.
• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
Если запускаю обработку не в регламентном задании, то все выполняется без ошибок. Подскажите что это за ошибка и как мне читать данные из Excel в регламентном задании?


Изменено 16.07.11 15:32:46 по причине: Другая категория

Yandex
Возможно, вас также заинтересует

Реклама на портале

Nikoly
19.07.2011 18:27 Ответ № 1

http://forum.mista.ru/topic.php?id=522217
Создать папку C:WindowsSysWOW64configsystemprofileDesktop и C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)

Подсказка: Вы можете добавить любую страничку в Избранное щелкнув по значку

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста остатки
  • Ошибка при вызове метода контекста ожидатьзавершения
  • Ошибка при вызове метода контекста объект недоступен для изменения
  • Ошибка при вызове метода контекста обработчик ожидания
  • Ошибка при вызове метода контекста найти строки