Ошибка при вызове метода контекста open произошла исключительная ситуация microsoft excel

Ошибка работы 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)

   Алгоритм

11.12.10 — 23:15

Вот код:

&НаСервере

Процедура ОткрытьФайлЭксель()

   
   ИмяФайла = «D:backupОбмен1.xls»;

   Эксель= Новый COMОбъект(«Excel.Application»);

   Книга= Эксель.Workbooks.Open(ИмяФайла);

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

Вот ошибка:

{Форма.Форма.Форма(6)}: Ошибка при вызове метода контекста (Open)

   Книга= Эксель.Workbooks.Open(ИмяФайла);

по причине:

Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘D:backupОбмен1.xls’. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.

• Файл используется другой программой.

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

Если выполниять &НаКлиенте то все хорошо, если &НаСервере то ошибка.

Клиент и служба сервера запущены под одним пользователем.

   Topol-M

1 — 11.12.10 — 23:16

А вы файлик на сервер на D:backupОбмен перенесите

   Алгоритм

2 — 11.12.10 — 23:18

(1) Не все так просто, я на серваке выполняю код

   Topol-M

3 — 11.12.10 — 23:19

Ну тогда вчитайтесь в сообщение об ошибке

   Алгоритм

4 — 11.12.10 — 23:19

Клиент и сервер — это один и тот же компьютер

   Алгоритм

5 — 11.12.10 — 23:20

(3) Права проверил, все в порядке, сеанс и служба запущена под одним юзером

   Алгоритм

6 — 11.12.10 — 23:21

Возможно 8.2 не позволяет вообще такой код выполнять на стороне сервера?

   Алгоритм

7 — 11.12.10 — 23:23

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

   smaharbA

8 — 11.12.10 — 23:26

на шары забей

   Topol-M

9 — 11.12.10 — 23:26

Код рабочий сейчас проверил.

   Алгоритм

10 — 11.12.10 — 23:31

(8) На шару положил файл, пофигу та же ошибка
Блин мозг сломал уже.

   smaharbA

11 — 11.12.10 — 23:32

(10) о том, что если д: это шара, работать не будет
(а так я в восьмерке как кот в помидорах)

   Алгоритм

12 — 11.12.10 — 23:50

Сделал вот так:

&НаСервере
Процедура ОткрытьФайлЭксель()
ИмяФайла = «\SERVER-1CPublicDocuments1.xls»;
Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);
КонецПроцедуры

Один черт, та же ошибка

   Fragster

13 — 12.12.10 — 00:01

у пользователя usrv1srv (или как там его) нет прав на доступ к папке

   Topol-M

14 — 12.12.10 — 00:02

Может он у тебя уже открыт тока окна не видно? в процессах эксель не висит?

   Fragster

15 — 12.12.10 — 00:02

короче у того, под которым сервант 1с крутится

   smaharbA

16 — 12.12.10 — 00:11

(12) еще раз, если это шара, под любым соусом работать не будет

   Алгоритм

17 — 12.12.10 — 00:32

(16) Та хоть шара хоть не шара не работает

   Алгоритм

18 — 12.12.10 — 00:40

Думаю не в правах на файл дело, так как отрабатывает вот этот код, который копирует файл в другое место:

&НаСервере
Процедура ОткрытьФайлЭксель()

ИмяФайлаИзХранилища= «\SERVER-1CPublicDocuments1.xls»;
ИмяФайла = «D:1.xls»;
КопироватьФайл(ИмяФайлаИзХранилища,ИмяФайла);

//а потом делаю вот так и получаю ошибку ту же:

Эксель= Новый COMОбъект(«Excel.Application»);
Книга= Эксель.Workbooks.Open(ИмяФайла);

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

   Алгоритм

19 — 12.12.10 — 00:50

Файлик копируется нормально в D:1.xls, значит права есть на файл

   Torquader

20 — 12.12.10 — 00:59

А кто сказал, что пользователь «сервер1С» может вообще открывать приложение Excel ?
Он вообще в какой группе пользователей живёт ?
(У меня такая же проблема была, когда я 1С7.7 из сервиса запускал — она работала, а вот OLE у неё не работало — есть подозрение, что под «органиченным» рабочим столом сервисного процесса не создаётся полноправная подсистема запуска OLE)
На другой машине — была фигня в том, что DCOM-сервис не мог создать приложение, тогда перед строчкой создания COM-объекта пришлось вставлять строку запуска OLE-сервера
в вашем случае надо ЗапуститьПриложение(«Excel.exe -embedded») и потом создавать объект.

   Алгоритм

21 — 12.12.10 — 01:11

В 8.2 на сервере не запускается код:

ЗапуститьПриложение(«Excel.exe -embedded»)

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

   Topol-M

22 — 12.12.10 — 01:16

ЗапуститьПриложение()
на сервере не доступно

   IKSparrow

23 — 12.12.10 — 01:53

А на сервере стоит Excel? :)

   Алгоритм

24 — 12.12.10 — 02:00

(23) Обязательно, на сервере и 1С запускаю

   Алгоритм

25 — 12.12.10 — 10:31

проблема не решилась

   Torquader

26 — 12.12.10 — 12:23

(21) А попробуй под этим «пользователем» запустить Excel, а потом написать на VBS запуск Excel через создание объекта и добиться, чтобы это работало и открывало Excel — только после успеха на таком этапе можно переходить к «насилию» над 1С.

   Алгоритм

27 — 12.12.10 — 13:34

Еле отрыл решение, ларчик оказывается просто открывался!

Создать папку C:WindowsSysWOW64configsystemprofileDesktop или C:WindowsSystem32configsystemprofileDesktop (в зависимости от разрядности вашей системы)

  

Torquader

28 — 12.12.10 — 13:53

(27) Если так, то проще было правильно директорию TEMP выбрать.
Таки у вас сервер 1С под системной учётной записью работает — по идее там должен быть свой пользователь.

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

Я

  

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)

Здравствуйте!

Ситуация следующая. Имели MS Server 2008 R2, MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит. В 1С создали регламентное задание которое с ftp загружало в 1С файлы. Все замечательно
работало без ошибок.

Перешли на MS Server 2012. Также перенес  MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит.  Режим расширенного рабочего стола отключен.  Также добавил служебного пользователя
1с от которого запускаются серверные процессы  usr1cv82 в группу Пользователи DCOM . Регламентные задания стали выполняться с ошибкой.

В ошибках MS увидел:

1) Параметры разрешений application-specific не дают разрешения Local Activation для приложения COM-сервера с CLSID 
{D63B10C5-BB46-4990-A94F-E40B9D520160}
и APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
пользователю NT AUTHORITYSYSTEM с ИД безопасности (S-1-5-18) и адресом LocalHost (Using LRPC), выполняемого в контейнере приложения Unavailable с ИД безопасности (Unavailable). Это разрешение безопасности можно изменить с помощью
средства администрирования служб компонентов.

2)  Не удалось установить связь DCOM с компьютером BUH2-PC через какой-либо из настроенных протоколов; запрос от PID 16c3c (C:WindowsSYSTEM32rundll32.exe).

В ошибках 1с увидел:

1) Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:base_1ЗаявкиОтработанные19_03_2013_Литвинова.xls’. Это может быть вызвано одной из следующих причин.

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

На форумах нашел как можно исправить http://help1c.com/help/view/3921.html

Создать папку C:WindowsSysWOW64configsystemprofileDesktop

Создал, текст ошибки в логах 1с поменялся на

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

Помогите решить данные проблемы

Встала задача. По электронной почте приходят письма с вложениями таблиц Excel. Получение почты производится встроенным клиентом 1С фоновым заданием. Необходимо было по расписанию несколько раз в день извлекать из новых писем вложения и загружать из них данные. Тут я столкнулся с проблемой — работать с Excel в фоновом задании ни через COM, ни через ADO не удавалось. Вываливалась ошибка. Нигде в сети четкого решения проблемы я не обнаружил. В итоге, собирая информацию по крупицам из разных источников (порой и вовсе не связанных с 1с) и нескольких дней мучений все же я решил данную проблему. Ниже я опишу свое решение, чтобы помочь таким же, как я )

Начну свой рассказ.

Попытка подключиться к Excel через COM объект

ExcelApp = Новый COMОбъект("Excel.Application");

приводило к ошибке «Интерфейс не поддерживается».

Если использовать ADO

CтрокаСоединения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
ИмяФайла + ";Extended Properties=""Excel 8.0;HDR=NО;IMEX=1""";

СоединениеADO = Новый COMОбъект("ADODB.Connection");
СоединениеADO.ConnectionString = СтрокаСоединения;
СоединениеADO.Open();

то возникала ошибка «указанный поставщик не найден».

Сразу оговорюсь, что Microsoft Office на сервере был установлен и при обычном запуске обработки (не в фоновом задании) все проходило на ура.

Так как фоновые задания выполняются от имени пользователя, под которым работает сервер 1С:Предприятие (обычно это USR1CV82), то возникло логичное предположение, то у этого пользователя не достаточно прав. Для эксперимента этому пользователю были выданы права администратора и фоновое задание завершилось успешно. Однако, это был не вариант. Требовались минимально возможные права и я окунулся в мир поиска информации в глобальной сети.

Итак. Первое что удалось выяснить, это то, что пользователю USR1CV82 необходимо дать права на запуск DCOM Microsoft Excel Application (прошу прошения, могу путаться в понятиях, но смысл, что делать,  думаю, будет понятен).

Для этого необходимо:

1. Нажать кнопку Пуск и выбрать Панель управления.

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

3. В левой панели окна «Службы компонентов» дважды щелкнуть пункт Службы компонентов, дважды щелкнуть пункт Компьютеры и выбрать Мой компьютер.

4. Выбрать папку Настройка DCOM.

5. В окне сведений найти объект Microsoft Excel Application, щелкнуть его правой кнопкой и выбрать пункт Свойства (здесь есть подводный камень, с которым я довольно долго промучался — если сервер 64-х разрядный, то и выпуск Office так же должен быть х64, иначе объекта Microsoft Excel Application не будет в списке и права для него мне так и не удалось настроить пока не переустановил Office).

6. Открыть вкладку Безопасность.

7. В разделе Разрешения на запуск выбрать пункт Настроить и нажать кнопку Изменить.

8. Добавить пользователя USR1CV82.

Источник: http://technet.microsoft.com/ru-ru/library/cc778126(WS.10).aspx

Ниже поясняющие скриншоты.

Однако, после произведенных описанных выше настроек фоновое задание так и не заработало.

При работе с COM объектом экземляр Excel успешно создавался, но открыть файл не получалось

ExcelApp = Новый COMОбъект("Excel.Application");
ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла); // ОШИБКА!

выводилось сообщение об ошибке

Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «C:xls_test est.xls». Это может быть вызвано одной из следующих причин.

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

Попытки подключиться через ADO выдавало все тоже сообщение об отсутствии поставщика.

Поиски в просторах сети были продолжены и решение таки было найдено:

Необходимо создать папку

  • для Windows Server x64

    C:WindowsSysWOW64configsystemprofileDesktop
     

  • для Windows Server x86

    C:WindowsSystem32configsystemprofileDesktop

Данное расположение папок указано для Office 2007. Для Office 2010 не зависимо от разрядности платформы необходимо создавать папку C:WindowsSystem32configsystemprofileDesktop (данный факт так же потратил не мало моего времени). В общем, если создали папку, а ошибки не исчезли, создайте вторую. Так же необходимо дать права на созданную папку пользователю USR1CV82. Практика показала, что достаточно прав, выдаваемых системой по умолчанию.

Источник: http://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64

После проделанных всех настроек на тестовом сервере фоновое задание наконец то прошло успешно.

Однако на рабочем сервере при подключение к Excel через COM меня ждало фиаско — задание просто зависало и завершить его можно было только перезапуском сервера 1С:Предприятия. Зависало в момент открытия файла (ФайлExcel = ExcelApp.Workbooks.Open(ИмяФайла);). Я так предполагаю, что при открытии Excel открывает какое-нибудь окно и ждет ответа пользователя. Но проверить не удалось, так как доступа к рабочему серверу у меня не было и все настройки по моей просьбе на нем производил админ.

В итоге все взелетело с использованием ADO и успешно работает.

Надеюсь, данная статья поможет кому-нибудь съэкономить время при реализации подобных задач.

p.s. Ну и забыл упомянуть, что у пользователя USR1CV82, естественно, должны быть права на обрабатываемые файлы Excel.

  • Ошибка при вызове метода контекста open произошла исключительная ситуация adodb connection
  • Ошибка при вызове метода контекста open неизвестная ошибка excel
  • Ошибка при вызове метода контекста open sql
  • Ошибка при вызове метода контекста loadaddin
  • Ошибка при вызове метода контекста initialize