Ошибка при вызове метода контекста add 1c excel
COM-объект и Excel
Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка
Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?
Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибка
Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?
Ты открываешь Апликайшон - а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?
Все очень просто.
Файловая база.
Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
Никакого клиент-серверного режима нет.
А попробуй "завернуть" в Попытку
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel. ");
Исключение
Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка
похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?
Попробуй подключиться к открытому "ручками" экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, "Excel.Application");
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Сразу скажу - на файловой базе в Windows 7 этот код работает корректно. Итак, есть: W2016Server + сервер приложений 8.3.10.2580 + самописный документ, в котором есть строчка ДокументВорд = ОбъектВорд.Documents.Add(ИмяФайлаПаспортаЗаявки); Сразу говорю - файл я проверял вот так: Тест = Новый Файл("c: emp_pm est.docx"); Если Тест.Существует Тогда - он существует, и сервер его может прочитать. С правами доступа к папкам всё ОК. На сервере установлен Office 2013 (причем я ставил и 32-битный, и 64-битный), COM-компонент ручками зарегистрировал, поэтому строчка ОбъектВорд = Новый COMОбъект("Word.Application"); теперь выполняется без ошибок. В отладчике объект виден. Так вот, спотыкаемся на строчке ДокументВорд = ОбъектВорд.Documents.Add(ИмяФайлаПаспортаЗаявки); Если файл имеет расширение DOC - ошибка такая: <Документ.дкЗаявкаНаПроект.МодульОбъекта>: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Word): Ошибка в Word. Если файл имеет расширение DOCХ - ошибка чуть другая: <Документ.дкЗаявкаНаПроект.МодульОбъекта>: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Word): Приложению Word не удалось прочитать документ. Возможно, он поврежден. Попробуйте выполнить следующие действия: * Откройте файл с помощью команды ''Открыть и восстановить''. * Откройте файл с помощью конвертера резервных копий. Я уже в отчаянии, целый день мучаюсь. Сборки Офиса 2013 - от Кролика, с самыми последними обновлениями, сами понимаете, это бренд, здесь всё пучком. (На Win7 с файловой базой, где всё работает - такая же). Майкрософту я доверяю меньше, но завтра-таки попробую поставить c оригинального образа RTM. Интуиция подсказывает, что не взлетит. Подскажите, что ещё можно попробовать проверить?Документ.дкЗаявкаНаПроект.МодульОбъекта>
А если попробовать зайти на сервер и вручную открыть данный файл? Открывается нормально и содержимое отображает?
[Сборки Офиса 2013 - от Кролика, с самыми последними обновлениями, сами понимаете, это бренд, здесь всё пучком. (На Win7 с файловой базой, где всё работает - такая же). Майкрософту я доверяю меньше, но завтра-таки попробую поставить c оригинального образа RTM] Достаточно спорное утверждение. Я бы больше доверял оригинальному дистрибутиву, чем какой-то сборке, из которой вполне могли повыкидывать "ненужные" вещи.
конечно, открывает и отображает :) Я же не первый день замужем. И даже ЗапуститьПриложение(ИмяФайла), я уверен, будет работать. и папка эта - не первая, до неё я использовал подкаталог во временной папке (пробовал разные). Разумеется, права доступа - всем на всё. Ещё раз повторю, что на локальном компьютере с W7 при такой же структуре папок и том же дистрибутиве Офиса (только без сервера приложений) всё работает. Мне кажется, подвох в Windows 2016. Другой вариант - в сервере приложений. Третьего не дано.
нафиг вам этот офис вообще уперся. распаковал, засунул в xml чо хочешь, запаковал и все дела. быстро, дешево и сердито.
Курить "профиль безопасности" в программе "Администрирование серверов 1С Предприятия". По умолчанию использование COM на сервере 1С запрещено. Не советую работать с вордом екселем и тд. на сервере. Зависнет ворд вместе с ним 1с сеанс, что будете делать?
попробуйте написать сценарий и из него управлять вордлм,а уже этот сценарий запустите из 1ц,если что-то пойдет не так можно убить сценарий и ворд из самой 1с а сервер,кстати,обычно 64-битный
Подвохов там масса. Начиная от того под кем выполняется. Если ушло на сервер значит выполняется под серверным userV8 значит у него должен быть доступ к dcom объекту. Лезешь в dcom офиса и выдаешь ему там все права. Но лучше сделать по другому. docx это упакованные в zip xml. на просторах интернета есть уже готовый код. Также реализацию и можно посмотреть в 1С Договорчики. Фактически docx распаковывается, в нужном xml правится, пакуется обратно. Сам понимаешь никаких проблем с COM и офис не нужен.
изначально офис был 32-битный и была ошибка при создании ком-объекта: ОбъектВорд = Новый COMОбъект("Word.Application"); Но я вручную создал коннектор (по инструкции), и ошибка исчезла. Более того, как сказано в , я снес 32-битный Офис и поставил 64-битный - это ничего не изменило. а ссылку? У меня 15 файлов, часть в DOCX, часть в HTML, надо все их упихать в один. Я делаю это с помощью метода InsertFile. Благодарю, сейчас почитаю про эти профили. Похоже, собака зарыта именно здесь. пользователю usr1cv8 уже выданы везде все права, в том числе в COM+. Насчет XML и ZIP - это интересно, но на будущее. Я уже написал код, который быстро работает на файловой базе. Теперь задача - заставить его выполняться на сервере.
Здравстуйте. Перестало работать: Ексель = Новый COMОбъект("Excel.Application"); по причине: -2147221005(0x800401F3): Недопустимая строка с указанием класса Куда смотреть? Спасибо.
Про то. Тогда - странно очень. Может, обработку правили - и буковку не из того алфавита поставили? Или .
Работало везде "еще вчера" Обработку не правили уже полгода (тем более в этой строке). Ексель не переустанавливали, т.к. см. выше
Значит только костылями. Заказчику покажи это: Вопросы серверной автоматизации Office Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
1С-ный по любому переставляли. Для 8.3 есть еще вариант, что включили в профилях безопасности ограничение на COM-объекты.
Пока все нормально (глянь на всякий случай профили безопасности). Терминальный сервер и сервер 1С на одной машине работают?
Явно автор не раскрыл когда у него перестало работать. Я боюсь, что после пытания паяльником выяснится, что был установлен Windows 2008 x 64 сервер. Установлен сервер 1с предприятия х 64. Обновлена версия 1с предприятия с 8.2 на 8.3. Запуск сервера 1с предприятия раньше запускался от имени System, а сейчас запускается от имени Usr1c8. Раньше 1с работала в режиме толстого клиента, а сейчас на управляемых формах. И вот после этого НЕОЖИДАННО перестал работать Exell в режиме ОЛЕ. Я почему-то не очень сильно удивляюсь :)
Что нужно изменить в коде чтобы работала конструкция Новый COMОбъект("Excel.Application"); Все указанные изменения имеют место быть. Обработка сделана под управляемые формы
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.
Помогла переустановка офиса на сервере. Теперь не хочет открывать шаблон: Ошибка при вызове метода контекста (Add) Ексель.WorkBooks.Add("\. Templateayvka.xlt"); Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу ". Templateayvka.xlt". Это может быть вызвано одной из следующих причин. • Указан несуществующий файл или путь. • Файл используется другой программой. • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент. Файл существует. Никем не открыт. Имя не с чем не совпадает
Только в пункте 13. Select "The interactive user." вместо interactive user надо указать конкретного пользователя под котороым запускается сервер 1С-Предприятие.
Обычно такое перестает работать после обновления Форточек. У нас как то было, при обновлении рабочей станции, т.е. обычного ПК. Но офис там был 2007-ой, обновление на него так подействовало :)
По все проделано. "Microsoft Excel Application" такой ветки в настройках нет. В тех что есть стоит "Запускающий пользователь" ("The interactive user"? ).
У нас разделение труда. Офис устанавливает другая служба. Не могу сказать. Есть "Office Licensing COM Server 14"
ну, поменяйте в строке запуска сервера 1с системную запись на другого пользователя. Зачем вы системную туда вбухали? Можно было оставить пользователя, который там по умолчанию был: Usr1cv8
Как его туда запихнуть? Не вручную же. На других серверах тоже нет. Есть например "Книга Microsoft Office Excel 2007"
При разработке в 1С, при попытке выполнить открытие COM-объекта Microsoft Excel на серверной базе данных 1С появляется ошибка «Произошла исключительная ситуация (Microsoft Office Excel): Невозможно получить свойство Open класса Workbooks».
Запуск обработки, вызвавшей данную ошибку, производится на серверной операционной системе Microsoft Windows 2012. Также возможна при запуске на ОС Windows 2008 Server. Права пользователя полные. Причем, запуск на операционной системе не относящейся к семейству серверных происходит без возникновения исключительной ситуации.
Возникновение ошибки происходит на предпоследней строке кода.
Решение для устранения исключительной ситуации:
Для нормальной работы MS Office, папка «Desktop» должна находиться в каталоге «systemprofile» системного каталога ОС. Причем, Windows 2003 имеет в своем составе такие папки.
Поэтому необходимо их создать в каталоге «Windows» операционной системы.
— для Windows 2008 Server x64:
— для Windows 2008 Server x86:
Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Заходите в «Одноклассники»!
Регистрируйтесь в «Вконтакте»!
Темы форума
1С на Линукс. advanter, 17.11
Аренда сервера.. за границей. advanter, 03.10
удаление чека. zvar, 11.09
1c 8.3 бухучет 8.2 сотрудники. zvar, 11.09
Корректировка расходной накладной. zvar, 11.09
Декретные. skameykin22, 30.07
обмен данными. taba88, 12.06
Списання малоцінки. advanter, 12.06
Допоможіть новачку. ). advanter, 12.06
Ошибка потока 1с 8.2 Предприятие после обновления SOS. advanter, 07.06
Изменить название основания на печатной форме. advanter, 16.05
Движение денежных средств за период по ответственным. advanter, 25.04
Рубрики
Это интересно:
Ответы на вопросы:
Полное или частичное копирование материалов сайта разрешается при наличии в тексте прямой индексируемой ссылки на сайт
Исправляем ситуацию
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.3 Синтакс-помощник
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Читайте также: