Nikoly |
|
||
---|---|---|---|
При работе на сервере, регламентного задания, обработка открывает через Excel = Новый COMОбъект(«Excel.Application»); Excel.Application.Workbooks.Open(ИмяФайла) документ, мне выдается ошибка:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1СНовыйДокумент.xls’. Это может быть вызвано одной из следующих причин. • Имени файла или пути не существует. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги. Если запускаю обработку не в регламентном задании, то все выполняется без ошибок. Подскажите что это за ошибка и как мне читать данные из Excel в регламентном задании? Изменено 16.07.11 15:32:46 по причине: Другая категория |
Yandex |
|
||
---|---|---|---|
Nikoly |
|
||
---|---|---|---|
http://forum.mista.ru/topic.php?id=522217 |
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему. |
23.12.14 — 13:09
Добрый день!
Прошу помощи. 1С в серверном исполнении не может прочитать excel.
Запускаю под клиентом (на сервере 1С) код работает, на сервере нет.
Что делал:
1. Права на DCOM (раньше при создании ком-объекта ругался)
2. Создал папки Desctop (права выдал)
Есть ещё идеи?
1 — 23.12.14 — 13:12
офис на сервере стоит?
2 — 23.12.14 — 13:12
путь тоже сетевой указываешь? ))
3 — 23.12.14 — 13:12
(0) Excel то сам на сервере есть?
4 — 23.12.14 — 13:12
Excel — стоит
5 — 23.12.14 — 13:13
Клиент на серверной машине запускаю, всё работает…
6 — 23.12.14 — 13:17
путь до открываемого файла какой?
7 — 23.12.14 — 13:22
C:exchange1CzpTemp
8 — 23.12.14 — 13:23
(7) Этот диск Цэ наверно на сервере должен быть? И в нем папка обмена. Так?
И еще — сервер 1С в кластере из одной машины или нескольких? Если несколько то на каждой машине создать папку с таким же именем.
9 — 23.12.14 — 13:24
Может ли быть такое, то сервер 1Сна линуксовой машине?
10 — 23.12.14 — 13:24
у сервера свой диск C:
11 — 23.12.14 — 13:25
(10) Не факт. Он может быть и D: и вообще любой другой буквой в винде.
12 — 23.12.14 — 13:27
(9) на линухе «C:» ? )
(11) мимо
13 — 23.12.14 — 13:28
Клиента прямо на сервере открываю, он отрабатывает.
С путями все верно.
Сервер не находится в кластере, работает по Win64.
14 — 23.12.14 — 13:29
Другие файлы читаются (не exсel)
15 — 23.12.14 — 13:29
Более того, происходит копирование файлов (excel) тоже работает.
16 — 23.12.14 — 13:30
(13) То ты открываешь клиента, а «серверная» часть работает на машине, на которой стоит «сервер 1С». Вот на этой машине и надо проверить, существует ли папка c:exchange…
17 — 23.12.14 — 13:31
18 — 23.12.14 — 13:32
Я клиента открываю на той машине, где стоит сервер 1С.
19 — 23.12.14 — 13:33
(16) блин, вот почему вы не читаете — автор же пишет — КЛИЕНТ запущен на той же машине что и СЕРВЕР
20 — 23.12.14 — 13:35
(19) Сервер 1С, сервер SQL, сервер терминальный? Какой?
21 — 23.12.14 — 13:35
значит права на файл
22 — 23.12.14 — 13:37
(17) Спасибо, но читал. До того как создать тему. Продвинулся на одну строчку. С создания Com объекта до открытия.
(21) Права на файл есть, программа сначала копирует файл, потом читает.
23 — 23.12.14 — 13:38
(20) все в одном — все на одной машине, чего не понятного
и сервер SQL как в таком случае может влиять?
и при чем тут терминальный сервер?
24 — 23.12.14 — 13:39
(22) код покажи — что значит копирует, а потом читает?
25 — 23.12.14 — 13:41
КопироватьФайл(Файл.ПолноеИмя, Файл.Путь + «temp» + мИмяКопииФайла);
Период = Дата(Параметры.Год, Параметры.Месяц, 1);
мАС = мзИмпорт.ПолучитьАС();
КОМ = Новый COMОбъект(«excel.application»);
РК=КОМ.Workbooks.Open(Файл.Путь + «temp» + ИмяКопииФайла);
26 — 23.12.14 — 13:42
Сейчас падает на 5 строке, раньше на 4.
Стоит Excel 2010 x64 — может другой Excel нужно?
27 — 23.12.14 — 13:42
(0) Так папку Desctop или Desktop создал?
28 — 23.12.14 — 13:43
КопироватьФайл(Файл.ПолноеИмя, Файл.Путь + «temp» + мИмяКопииФайла);
Период = Дата(Параметры.Год, Параметры.Месяц, 1);
мАС = мзИмпорт.ПолучитьАС();
РК=ПолучитьCOMОбъект(Файл.Путь + «temp» + ИмяКопииФайла);
29 — 23.12.14 — 13:43
мИмяКопииФайла и ИмяКопииФайла чем отличаются?
30 — 23.12.14 — 13:43
C:WindowsSysWOW64configsystemprofileDesktop
31 — 23.12.14 — 13:43
Такую
32 — 23.12.14 — 13:44
(0) Какую пишет ошибку?
33 — 23.12.14 — 13:44
http://bytes.com/topic/c-sharp/answers/819740-c-service-excel-application-workbooks-open-fails-when-called-service
To resolve this issue follow these steps
1. Login to the server as a administrator.
2. Go to «Start» -> «Run» and enter «taskmgr»
3. Go to the process tab in task manager and check «Show Processes from all users»
4. If there are any «Excel.exe» entries on the list, right click on the entry and select «End Process»
5. Close task manager.
6. Go to «Start» -> «Run» and enter «services.msc»
7. Stop the service automating Excel if it is running.
8. Go to «Start» -> «Run» and enter «dcomcnfg»
9. This will bring up the component services window, expand out «Console Root» -> «Computers» -> «DCOM Config»
10. Find «Microsoft Excel Application» in the list of components.
11. Right click on the entry and select «Properties»
12. Go to the «Identity» tab on the properties dialog.
13. Select «The interactive user.»
14. Click the «OK» button.
15. Switch to the services console
16. Start the service automating Excel
17. Test you application again.
точно сделал?
34 — 23.12.14 — 13:45
Там: РК=КОМ.Workbooks.Open(Файл.Путь + «temp» + мИмяКопииФайла); — когда код копировал букву в сообщении удалил
35 — 23.12.14 — 13:48
(30) почти диагноз
36 — 23.12.14 — 13:50
(33) — Служба automating Excel — не вижу такой…
37 — 23.12.14 — 13:51
(33) COM+ есть — оно?
38 — 23.12.14 — 14:27
По ходу вопрос снят. Установил Excel 2010 x32 — и работает…
39 — 23.12.14 — 15:32
(23) О трехзвенной структуре слышал?
А у меня трехзвенка — сервер SQL, сервер кластеров 1С и сервер терминалов разные машины.
40 — 23.12.14 — 15:39
(38) сервер 1С x32 ?
41 — 23.12.14 — 15:44
(38) Значит при переустановке заново прописался ком-объект эксель.
42 — 23.12.14 — 15:45
нужен файловый доступ к файлам шаблонов и темпов екселя
43 — 24.12.14 — 06:08
(39) — конечно, но у нас 1С и SQL на одном
44 — 24.12.14 — 06:09
(42) Не подскажешь где эти каталоги?
45 — 24.12.14 — 06:19
(23) даже если так, то выполнение происходит на сервере 1С
46 — 24.12.14 — 06:28
И всё-таки 32 excel помог…
47 — 24.12.14 — 06:45
(42) — этап создания com объекта был пройден до этого. После установки прав на excel.application
my_espe
48 — 24.12.14 — 06:45
* (41)
Добрый день! Дайте права пользователю 1cv83 на Microsoft Excel Application в Службах компонент.
Нажмите на “Пуск/Start”-> “Панель управления/Control Panel”
Далее “АдминистрированиеAdministrative Tools”-> “Службы компонентов/Component Services”
Откройте папку “Службы компонентов/ Component Services” и выберите “Настройка DCOM/DCOM Config”
Среди служб выберите “Microsoft Excel Application” и откройте его свойсва, вкладку “Безопасность/Security” и в разделе “Разрешения на запуск и активацию/Launch and Activation Permissions” настроить разрешения – выбрать “Настроить/Customize” и нажать “Изменить/Edit”.
Добавьте пользователя 1cv83 и нажмите “Применить/Apply” в свойствах безопасности компоненты.
Заключительным этапам будет создание папки с соответствующими правами пользователю 1cv83
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2010
C:WindowsSysWOW64configsystemprofileDesktop – для Microsoft Office 2007 (windows server x64)
C:WindowsSystem32configsystemprofileDesktop – для Microsoft Office 2007 (windows server x86)
Желаем удачи и скорейшего решения проблемы!
Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.WorkBooks.Open("D:DstOrder.xls");
Можем попасть на ошибку открытия, а лечится это так:
на сервере убиваем excel (taskkill /im excel.exe /f)
открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
Готово
Или еще создаем каталог в системной папке:
Please make this folder.
C:WindowsSysWOW64configsystemprofileDesktop
-
Доброе время суток.
Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (open)» там и там база файловая.Переделал все что нашел в инете
— создал папку C:WindowsSysWOW64configsystemprofileDesktop ;
— Настройки DCOM добавил пользователя;
— И проделал «А решается это так:
на сервере убиваем excel (taskkill /im excel.exe /f)
открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем «Текущий пользователь», ОК.
Готово»
И все равно выскакиваю по ошибке.
Есть у кого то предложение что можно сделать еще. -
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.889
- Симпатии:
- 1.029
- Баллы:
- 204
покпжите текст ошибки полностью.
из всего там нужно только последнее действие.что будет, если интерактивно запустить эксель и открыть этот же файл?
-
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Open)
КНИГА = Excel.WorkBooks.Open(ИмяФайла);
по причине:
Неизвестная ошибка -
Запустил интерактивно и все равно ошибка
Опечатки нет пере набрал Open раз 10 -
Online
nomad_irk
Гуру в 1С- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.889
- Симпатии:
- 1.029
- Баллы:
- 204
при интерактивном открытии файла, что говорит?
-
Доброго,
Клиент какой запускается на RDP, 32/64 бит ? -
Добрый день.При интерактивном открытии ничего не пишет.
RDP клиент запускается 64 и офис 64 -
Похожая проблема вылечилась использованием 32 битного клиента (мы можем это себе позволить),
еще, как вариант, я делал через формирование файла на сервере и передачу его на клиента
С.П.- : «ПоместитьВоВременноеХранилище», «ПолучитьФайлы», «ОписаниеПередаваемогоФайла»
1.На сервере получаю макет, передаю его на клиента через «ПоместитьВоВременноеХранилище»/»ПолучитьФайлы»
2. На клиенте формируется документ через COM : «Новый COMОбъект(«Word.Application»)»
3. На клиенте заполняется макет, тем или иным способом -
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 -
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
одинаковая ситуация с тонким и толстым клиентом
-
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 -
Offline
ExtreMe
Опытный в 1С- Регистрация:
- 13 сен 2014
- Сообщения:
- 89
- Симпатии:
- 8
- Баллы:
- 29
Последнее редактирование: 20 янв 2019 -
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