Следующий код работает на клиенте, но не работает на сервере.

```1c
    ExcelПриложение = Новый COMОбъект("Excel.Application");
    ExcelПриложение.WorkBooks.Open(ИмяФайла);
```

Ошибка проявляется только в клиент-серверном варианте базы (в файловом всё норм).
Тестировал на платформах - "8.3.5.1517" и "8.2.19.121".
Заходил на сервер, там запускал базу - ситуация аналогичная - код отрабатывает на клиенте, на сервере падает. Из этого следует, что Эксель на серваке стоит и из 1С нормально создаётся и запускает файл (который в свою очередь существует и никакими процессами не занят).
Текст ошибки:{Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Open)
 ExcelПриложение.WorkBooks.Open(ИмяФайла);
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу '\\Sd\test\KPI.xls'. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.
---
Xershi, (8) spezc, ПРОБЛЕМА РЕШЕНА.
Сначала сделал через ADO, потом нашёл ответ на первоначальный вопрос здесь Обсуждалось не раз уже.
Создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы)
Эксель не предназначен для работы на сервере, ищет папку "Desktop" при её отсутствии падает. У нас даже такая была, поскольку проблема давняя и известная, но по каким-то причинам, сейчас её не было - после создания, действительно, всё заработало.
---
Совет помог, спасибо! Но - выбор папки не в зависимости от разрядности операционной системы, а от разрядности приложения. ОС - 64 разрядная, но помогло создание папки C:\Windows\System32\config\systemprofile\Desktop
---
Патриот, у вас путь указан сетевой. Явно юзер запускающий агентсервера 1с не имеет туда доступа. Поменять юзера или переместить файл на сервер.
---
Xershi, доступ к пути у 1С-ного юзера есть, а путь я просто не тот выложил, под которым тестил (просто много всяких тестов делал).
---
А у меня даже не понятно какая причина:

Excel.Workbooks.Open(Файл) {(1)}: Ошибка при вызове метода контекста (Open)
---
А у меня даже не понятно какая причина:

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

У меня сейчас Агент сервера запускается с Системной учетной записью. Может изменить на свою, как администратора с полными правами?
---
Нужно либо не использовать Excel (платформа позволяет)

либо

Помогло следующее. В службах компонентов DCOMCNFG: найти Excel Application
1. На вкладке Безопасность добавить права для пользователя от которого запускается Excel
в Разрешения на запуск и активацию и в Разрешения на доступ.
2. На вкладке Удостоверение поставить Текущий пользователь. Или конкретного пользователя под кем запущен сервер 1С и его пароль.
---
Помогло
---
Помогло следующее. В службах компонентов DCOMCNFG: найти Excel Application
1. На вкладке Безопасность добавить права для пользователя от которого запускается Excel
в Разрешения на запуск и активацию и в Разрешения на доступ.
2. На вкладке Удостоверение поставить Текущий пользователь. Или конкретного пользователя под кем запущен сервер 1С и его пароль.

У нас вообще нету Microsoft Excel App
---
Варианты, предлагаемые в тексте ошибки разобраны и не подходят. Т.е. файл существует, не занят другими процессами и другие файлы эксель на этот момент не открыты.
---
пользователь, под которым работает сервер 1С - не имеет прав доступа
---
spezc, было такое предположение, но непонятно каких прав. "ЧтениеТекста" и метод "Прочитать()", выполненные на сервере нормально прочитали файл, лежащий в той же папке на сервере.
---
Здесь обработка с формой, на которой выведены две кнопки "ОткрытьНаКлиенте", "ОткрытьНаСервере" и реквизит "ИмяФайла". Код модуля формы ниже:

```1c
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ИмяФайла = "\\Sd\test\KPI.xls";
    КонецПроцедуры

    &НаКлиенте
    Процедура ОткрытьНаКлиенте(Команда)
    ОткрытьФайлЭксель(ИмяФайла);
    КонецПроцедуры

    &НаКлиенте
    Процедура ОткрытьНаСервере(Команда)
    ОткрытьНаСервере_Сервер();
    КонецПроцедуры

    &НаСервере
    Процедура ОткрытьНаСервере_Сервер()
    ////Чтение текста, например, работает
    //ИмяФайла = "\\Sd\test\АПолтава\KPI.txt";
    //ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла);
    //й = ЧтениеТекста.Прочитать();

    ОткрытьФайлЭксель(ИмяФайла);// при попытке выполнения метода "Open" выдаёт ошибку
    //{Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Open)
    // ExcelПриложение.WorkBooks.Open(ИмяФайла);
    //по причине:
    //Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу '\\Sd\test\KPI.xls'. Это может быть вызвано одной из следующих причин.

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

    &НаКлиентеНаСервереБезКонтекста
    Процедура ОткрытьФайлЭксель(ИмяФайла)
    ExcelПриложение = Новый COMОбъект("Excel.Application");
    ExcelПриложение.WorkBooks.Open(ИмяФайла);
    КонецПроцедуры
```
---
ЛЮДИ ДОБРЫЕ! МОЖЕТ КТО-НИБУДЬ ПОПРОБОВАТЬ ПРОВЕРИТЬ У СЕБЯ ОБРАБОТКУ ИЗ КОММЕНТА (4) (в клиент серверном варианте нажать на две кнопки)
---
дайте пользователю на время полные права, чтобы исключить эту проблему. если дело в правах - копать дальше.
---
spezc, пользователь от имени которого работает сервер находится в группе локальных админов и у него, соответственно полные права на каталог.
---
Патриот, локальный админ имеет доступ в сеть домена?

Положи файл на сервер и напиши результат.

Я когда через ком запускал 1с7, то пришлось увеличить память "кучи", она по умолчанию 768 стояло из 48 мегабайт.

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

А зачем эксель на сервере открывать?

Это операция нужна только в интерактивном режиме работы юзеров, но не сервера!
---
Xershi, (8) spezc, ПРОБЛЕМА РЕШЕНА.
Сначала сделал через ADO, потом нашёл ответ на первоначальный вопрос здесь Обсуждалось не раз уже.
Создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop или C:\Windows\System32\config\systemprofile\Desktop (в зависимости от разрядности вашей системы)
Эксель не предназначен для работы на сервере, ищет папку "Desktop" при её отсутствии падает. У нас даже такая была, поскольку проблема давняя и известная, но по каким-то причинам, сейчас её не было - после создания, действительно, всё заработало.
---
Патриот, у вас какой юзер запускает агентсервера 1с?
Если этот юзер не логинился ни разу, то естественно нужно рабочий стол создать.
Значит стандартной памяти "кучи" вам хватило. Эксель не такой прожорливый к окнам оказывается.
---
Да, это именно то решение!
---
рад, что эта инструкция помогает людям и по сей день)
---
Даже по сегодняшний день! Нашел свой комментарий, проблема устранилась. Но не могу даже вспомнить что я эту проблему уже когда то решал, и что она у меня вообще уже была...
---
Спасибо Патриот, реально выручил этим постом! От себя хочу добавить что папку необходимо создавать в соответствии с версией используемой платформы, например если у вас сервер 1С x64, а клиент x32, то и папка вам понадобится C:\Windows\System32\config\systemprofile\Desktop если же клиент x64 то создавайте C:\Windows\SysWOW64\config\systemprofile\Desktop
---
Спасибо за уточнение, добрый человек!
---
C:\Windows\System32\config\systemprofile\Desktop
Я бы так сказал - создайте Desktop везде, где можно и в C:\Windows\System32\config\systemprofile\Desktop и в C:\Windows\SysWOW64\config\systemprofile\Desktop. У нас все на 64, но пока не создали Desktop в 32 битном - ничего не работало
---
Работает метод!
Советую прислушаться
---
Спасибо, решение помогло, единственное пришлось создать обе папки да 32 и 64 разрядов
---
Совет помог, спасибо! Но - выбор папки не в зависимости от разрядности операционной системы, а от разрядности приложения. ОС - 64 разрядная, но помогло создание папки C:\Windows\System32\config\systemprofile\Desktop
---
а если вы в облаке или веб сервер, то не поможет..
---
можнопроверить наличие этой папки в серверной процедуре и если ее нет, попробовать создать, но вероятно прав на создание не будет у контекста 1С
---
если вы в облаке или веб серверТо вам еще придется потребовать, чтобы туда вообще Excel поставили, перед тем, как он работать не будет.
---
моя ситуация. дал на папку десктоп на веб сервере доступ на запись пользователю IUSR, сработало
---
Мне помогло, спасибо.
---
От себя ещё добавлю, что открытых процессов Excel на сервере ни одного не запущено, ни под каким пользователем.
Файл, к которому идёт обращение, можно безболезненно переименовать или переместить, что как бы намекает что никакой процесс его не держит.
---
бог с ней с сетью домена, неудачный пример. На самом деле при работе через локальный путь (каталог временных файлов) та же ошибка.
Недостатка памяти? рабочий процесс занимает 1.2Гб. Файлик -- крошечный на пять строк.
Про открытие файла на сервере -- я всегда был против, но клиента не переубедишь.
---
http://www.forum.mista.ru/topic.php?id=683597
---
Создал папки выходит всё равно таже ошибка "Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Система Office обнаружила проблему с этим файлом. Чтобы обеспечить защиту компьютера, этот файл не будет открыт"
---
sumixam, у вас что агент сервера запускает юзер без рабочего стола?
---
http://1c.mista.ru/topic.php?id=764424
---
У меня такая ошибка возникала у пользователя у которого установлен был office 2013, но слетела активация. После активации все встало на свои места
---
Обновите платформу и откажитесь от COM для работы с Эксель. Зачем выдумывать себе проблемы и героически их решать?
---
Вы бы отметили ответ с решением, проблема то до сих пор есть такая. За решение спасибо.

:\Windows\System32\config\systemprofile\Desktop если же клиент x64 то создавайте C:\Windows\SysWOW64\config\systemprofile\Desktop
---
Помогло
COMОбъект = Новый COMОбъект("Excel.Application");

COMОбъект.FileValidation = 1;

Workbook = COMОбъект.Workbooks.Open(Объект.ПутьКФайлу, , 1);
---
Проблема возникла когда слетела активация Office2013. Повторная активация все исправила.
---
Спасибо помогло Server 2016 x64
---
Помогло, спасибо!!!

Была ошибка: Ошибка открытия листа Microsoft Excel.
{Обработка.ЗагрузкаИзExcel.Форма.Форма.Форма(1962)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Unable to get the Open property of the Workbooks class
---
Спасибо, помогло, создал
 C:\Windows\SysWOW64\config\systemprofile\Desktop и C:\Windows\System32\config\systemprofile\Desktop
Заработало.
---
Еще одна рекомендация:

Если возникает ошибка Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): Интерфейс не поддерживается , то нужно сходить в dcomcnfg принудительно вставить туда пользователя сервера 1с с его паролем, при этом если оснастка не дает этого сделать т.к. "Администратор ограничил вход в систему" или что-то в этом роде - нужно идти в gpedit.msc - Конфигурация Компьютера - Конфигурация Windows - Параметры безопасности - Локальные политики - Назначение прав пользователей - Отказать в доступе к этому компьютеру из сети - удалить USR1CV8, прописать его в DCOM и добавить в его в запретную политику обратно. gpupdate /force при этом можно не делать.

Эта ошибка у меня упорно возникает на Новый COMОбъект("Word.Application") при идентичных настройках с Excel на котором указано Удостоверение - Запускающий пользователь, и при этом работает.
---
Галя, отмена, все опять сломалось.