14.02.19 — 18:22
При открытии (сохранении) отчета, сформированного в Альфа-Авто, в Excel 2010 стала появляться Неизвестная ошибка:
{ОбщаяФорма.Отчет.Форма(962)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
по причине:
Неизвестная ошибка
Вроде на форуме 1С-Рарус нашел решение подобной проблемы https://rarus.ru/forum/messages/forum7/topic10978/message62444/#message62444, но замена расширения у файла tmpxls.xls на xlsx мне не помогла:
Произошла исключительная ситуация (Microsoft Excel): Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми. Убедитесь, что файл не поврежден и расширение его имени соответствует его формату
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xlsx»); //+МВ 14.02.2019 xls дает Неизвестная ошибка
по причине:
Произошла исключительная ситуация (Microsoft Excel): Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми. Убедитесь, что файл не поврежден и расширение его имени соответствует его формату
А настройках безопасности Excel затрудняюсь… Дело в том, что КаталогВременныхФайлов(), в который пишется tmpxls.xls, находится D:UsersmvAppDataLocalTemp3. Не знаю, как его назначает система? А пытаюсь добавить его в Надежное расположение, и не дает, говорит не является допустимым!? https://jpegshare.net/e7/32/e7329ffaad896b0109bb8f5689f1e368.jpg.html
Как побороть проблему?
1 — 14.02.19 — 18:27
Так измени код, где он там путь выбирает.
2 — 14.02.19 — 18:27
вместо КаталогВременныхФайлов() подставь свое
3 — 14.02.19 — 19:32
(2) Подставил в Надежное расположение D:1с-tempmv, прописал в коде: КаталогВременныхФайловExcel = «D:1с-tempmv»; вместо КаталогВременныхФайлов(). Теперь:
{ОбщаяФорма.Отчет.Форма(962)}: Ошибка при вызове метода контекста (Записать)
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайловExcel + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
по причине:
Ошибка при выполнении файловой операции ‘D:1с-tempmvtmpxls.xls’. -2147287037(0x80030003): Путь %1 не найден.
4 — 14.02.19 — 19:48
Присвой путь какой-нибудь переменной и убедись, что значение из отладчика является реальным и доступным
5 — 14.02.19 — 19:52
>стала появляться Неизвестная ошибка
Признавайтесь что меняли что стала ошибка появляться? Одмины с правами на сервере не игрались?
6 — 14.02.19 — 20:21
(5) Говорят ничего, только обновления ставились.
7 — 14.02.19 — 20:25
(6) бздят
8 — 15.02.19 — 06:51
(2) > не поленился и проверил, что проблема именно в данной настройке — в коде жестко поменял КаталогВременныхФайлов() на тестовую «D:Temp» + прописал ее в доверенные (Excel дал добавить)
Такое решение проблемы возможно для сетевых пользователей, работающих каждый на своем компьютере (под ХР или 2003). А у меня Альфа-Авто на сервере-терминале 2008R2, где каждому пользователю назначаются свои папки, в т.ч. временные. Мне назначена D:UsersmvAppDataLocalTemp, причем mv — Mikhail Volkov. Наверняка в системе, где назначаются эти папки (не нашел где?) прописывается %UserName%. Мне сисамин написал: Чтоб не создавать под каждого пользователя его подкаталог используй примерно такую конструкцию:
set up=d:1C-Temp
set un=%UserName%
set ud=%UserDnsDomain%
set КаталогВременныхФайловExcel=»%up%%un%.%ud%»
if not exist %КаталогВременныхФайловExcel% md %КаталогВременныхФайловExcel%
Как ее прописать в 1С?
9 — 15.02.19 — 07:06
(8) Ты понимаешь что сервер 1С запускается от другого юзера не от того что клиент 1С ?
Или у вас там файловая база?
10 — 15.02.19 — 08:03
(9) Рабочая база SQL, а отлаживаю в файловой копии — одна и та же ошибка:
{ОбщаяФорма.Отчет.Форма(963)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайловExcel);
по причине:
Неизвестная ошибка
и для расширения xls, и для xlsx.
Где в системе назначается КаталогВременныхФайлов()? Хочу ее поменять, хотя бы под собой для проверки.
11 — 15.02.19 — 10:27
К https://jpegshare.net/e7/32/e7329ffaad896b0109bb8f5689f1e368.jpg.html
Каталог D:UsersmvAppDataLocalTemp3 и D:UsersmvAppDataLocalTemp не дает сохранить в Надежное расположение. А папку D:UsersmvAppDataLocal дало с галочкой «Также доверять всем вложенным папкам». Но Неизвестная ошибка осталась. Видимо добавить КаталогВременныхФайлов() в Надежное расположение расположение мало… что-то еще. А что?
12 — 16.02.19 — 05:22
Сисадмины удалили все обновления после 13.02.2019. К сожалению не помогло, Неизвестная ошибка осталась.
13 — 16.02.19 — 06:40
(10) попробуй тогда
Excel.Workbooks.Open(КаталогВременныхФайловExcel + «tmpxls.xlsx»);
или
Excel.Workbooks.Open(КаталогВременныхФайловExcel + «tmpxls.xlsx»);
14 — 16.02.19 — 06:41
Используй ПолучитьИмяВременногоФайла()
Потом переименовывай куда удобно
15 — 16.02.19 — 10:43
(13) Пробовал — ошибка в (0): «Не удается открыть файл «tmpxls.xlsx», так как формат или расширение этого файла являются недопустимыми…» из-за того, что в команде: ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS); заменил только одно расширение. А оба заменил на xlsx, то как прежде «Неизвестная ошибка».
16 — 16.02.19 — 22:13
Может таки покажешь полный код, а не будешь кусочки вываливать?
17 — 17.02.19 — 07:14
(16) Одна из функций (самая короткая) без каких либо изменений (всего их 4):
// Открыть отчет в формате Excel
Процедура ОткрытьВExcelТабличныйДокумент(Excel, ДокументРезультат) Экспорт
ДокументРезультат.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.HTML);
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
КонецПроцедуры
18 — 17.02.19 — 07:32
(17) почему тип html?
19 — 17.02.19 — 08:47
(18) Другая, чуть подлиннее:
// Процедура открывает в MS Excel табличный документ или сводную таблицу
Процедура ДействияФормыОткрытьВExcel(Кнопка)
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«ОШИБКА! Приложение MS Excel отсутствует или недостаточно прав доступа!
| — » + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
// Откроем табличный документ
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Copy(КнигаExcel.WorkSheets(1));
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
//tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
//ЛистExcel.Name=ЭтаФорма.ОбъектПредставление;
Если ЭлементыФормы.ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет Тогда
ЛистExcel.PageSetup.Orientation = 1;
Иначе
ЛистExcel.PageSetup.Orientation = 2;
КонецЕсли;
ПолеСлева=ЭлементыФормы.ТабличныйДокумент.ПолеСлева/25.4;
ПолеСправа=ЭлементыФормы.ТабличныйДокумент.ПолеСправа/25.4;
ПолеСверху=ЭлементыФормы.ТабличныйДокумент.ПолеСверху/25.4;
ПолеСнизу=ЭлементыФормы.ТабличныйДокумент.ПолеСнизу/25.4;
ЛистExcel.PageSetup.LeftMargin = Excel.Application.InchesToPoints(ПолеСлева);
ЛистExcel.PageSetup.RightMargin = Excel.Application.InchesToPoints(ПолеСправа);
ЛистExcel.PageSetup.TopMargin = Excel.Application.InchesToPoints(ПолеСверху);
ЛистExcel.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
Excel = «»;
КонецПроцедуры // ДействияФормыОткрытьВExcel()
20 — 17.02.19 — 09:50
(17) здесь уберите HTML
ДокументРезультат.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.HTML);
давайте эти эксперименты на потом.
21 — 18.02.19 — 06:14
А типовых конфигурациях: УПП, КА1, КА2 есть подобные функции открытия в MS Excel табличного документа или отчета (не использую)? Чтобы понять: эта проблема чисто Альфа-Авто, или безопасности MS Excel 2010…
22 — 18.02.19 — 16:55
Внес изменения в (19):
// Процедура открывает в MS Excel табличный документ или сводную таблицу
Процедура ДействияФормыОткрытьВExcel(Кнопка)
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«ОШИБКА! Приложение MS Excel отсутствует или недостаточно прав доступа!
| — » + ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Возврат;
КонецПопытки;
// Откроем табличный документ
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
ОшибкаОткрытия = Ложь; //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
КнигаExcel = Excel.Workbooks.Add();
КнигаExcel.Colors = tmpBook.Colors;
tmpBook.Sheets(1).Copy(КнигаExcel.WorkSheets(1));
ЛистExcel = КнигаExcel.WorkSheets.Item(1);
//tmpBook.Sheets(1).Cells.Copy(ЛистExcel.Cells);
tmpBook.Close();
//ЛистExcel.Name=ЭтаФорма.ОбъектПредставление;
Если ЭлементыФормы.ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Портрет Тогда
ЛистExcel.PageSetup.Orientation = 1;
Иначе
ЛистExcel.PageSetup.Orientation = 2;
КонецЕсли;
ПолеСлева=ЭлементыФормы.ТабличныйДокумент.ПолеСлева/25.4;
ПолеСправа=ЭлементыФормы.ТабличныйДокумент.ПолеСправа/25.4;
ПолеСверху=ЭлементыФормы.ТабличныйДокумент.ПолеСверху/25.4;
ПолеСнизу=ЭлементыФормы.ТабличныйДокумент.ПолеСнизу/25.4;
ЛистExcel.PageSetup.LeftMargin = Excel.Application.InchesToPoints(ПолеСлева);
ЛистExcel.PageSetup.RightMargin = Excel.Application.InchesToPoints(ПолеСправа);
ЛистExcel.PageSetup.TopMargin = Excel.Application.InchesToPoints(ПолеСверху);
ЛистExcel.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);
КнигаExcel.Activate();
ЛистExcel.Activate();
Excel.Visible = 1;
Если ОшибкаОткрытия Тогда //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
КонецЕсли; //-МВ
Excel = «»;
КонецПроцедуры // ДействияФормыОткрытьВExcel()
Теперь открываются 2 Excel одинаковых файла: Книга1 и tmpxls [Режим совместимости]! При этом 1 ошибка: Ошибка открытия Excel файла: D:UsersmvAppDataLocalTemp2tmpxls.xls
— {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(46)}: Ошибка при вызове метода контекста (Open): Неизвестная ошибка
Получается, что при 1-й попытке файл tmpxls не готов к открытию (исполнению Excel.Workbooks.Open)? Когда его можно открывать, после какой команды?
23 — 18.02.19 — 17:23
Он у вас должен в исключение попасть.
24 — 18.02.19 — 17:23
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
если это не работает, тогда в исключение
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
25 — 18.02.19 — 17:25
Первый раз не получилось открыть, ну и пусть. Откроем второй раз. Зачем?
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
………………..
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
26 — 18.02.19 — 17:27
ОшибкаОткрытия = Ложь; //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Исключение
Сообщить(«Ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
Excel = Неопределено;
Возврат;//ОшибкаОткрытия = Истина;
КонецПопытки; //-МВ
И ещё надо глянуть запущены ли процессы Эксель на сервере. Возможно оин заняли ваш файл «tmpxls»
27 — 18.02.19 — 18:17
(24) При повторном открытии можно без попытки, открывается без проблем.
(25) Как зачем: при первой попытке tmpxls.xls еще не готов к открытию (я так понимаю). Открываем в конце функции… может можно раньше, но где?
(26) Открываю другой отчет, возникает ошибка: {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(43)}: Ошибка при вызове метода контекста (Записать)
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
по причине:
Ошибка совместного доступа к файлу ‘D:UsersmvAppDataLocalTemp2tmpxls.xls’. -2147287008(0x80030020): Ресурс занят.
Раньше такого не было, по несколько отчетов в Excel открывал. Не помню как назывались, может: Книга1, Книга2, Книга3… а не tmpxls.xls? Если tmpxls.xls с 1-м отчетом закрыть, то нет этой ошибки, открывается tmpxls.xls [Режим совместимости] и Книга2 со 2-м отчетом.
28 — 19.02.19 — 07:37
2 открытых файла: tmpxls.xls [Режим совместимости] и Книга1 не нужны. Нужен только Книга1. После ее создания следует команда: tmpBook.Close(); но она в моем случае не действует, поскольку команда Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»); в первой попытке не сработала. Решил ее вставить во 2-ю попытку:
Если ОшибкаОткрытия Тогда //+МВ 18.02.2019
Попытка
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
tmpBook.Close(); // Закрывает объект
Исключение
Сообщить(«Повторная ошибка открытия Excel файла: » + КаталогВременныхФайлов() + «tmpxls.xls
| — » + ОписаниеОшибки(), СтатусСообщения.Внимание);
ЗапуститьПриложение(«explorer » + КаталогВременныхФайлов());
КонецПопытки;
КонецЕсли; //-МВ
Дало ошибку: Повторная ошибка открытия Excel файла: D:UsersmvAppDataLocalTemp2tmpxls.xls
— {ОбщаяФорма.ПечатнаяФормаДокументов.Форма(87)}: Ошибка при вызове метода контекста (Close): Неизвестная ошибка
Как мне открыть Книга1 (не записана в файл) без файла tmpxls.xls?
29 — 19.02.19 — 11:31
(21) Перенес функцию (19) из Альфа-Авто в УПП/КА1, та же самая ошибка:
{ОбщийМодуль.УправлениеОтчетами.Модуль(1753)}: Ошибка при вызове метода контекста (Open)
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
по причине:
Неизвестная ошибка
Функция кривая или дело в Excel?
30 — 19.02.19 — 19:03
Функция кривая: после записи файла tmpxls.xls, и перед его открытием, нужно включать видимость:
ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + «tmpxls.xls», ТипФайлаТабличногоДокумента.XLS);
Excel.Visible = 1; //+dvs 19.02.2019 д.б. в этом месте, иначе не работает.
Excel.Workbooks.Open(КаталогВременныхФайлов() + «tmpxls.xls»);
Mikhail Volkov
31 — 04.03.19 — 15:17
Озадачили меня: хотят Excel и весь Microsoft Office заменить бесплатным Libre Office 6.4.1.1. Возможно, как к примеру будет выглядеть процедура ОткрытьВExcelТабличныйДокумент() в (17)?
-
20.12.2016, 13:59
#1

Иногда оказывает помощь
COM-объект и Excel
Создаю COM-объект и пытаюсь открыть файл Excel:
ex=Новый ComОбъект(«Excel.Application»);
ex.WorkBooks.Open(Файл);
Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:Ошибка при вызове метода контекста (Open)
ex.WorkBooks.Open(Файл);
по причине:
Неизвестная ошибкаСталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
Если что-то с Excel, то что?
-
20.12.2016, 15:25
#2

Гордость форума 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-х разрядного сервера)?
-
20.12.2016, 15:55
#3

Иногда оказывает помощь
Re: COM-объект и Excel
Все очень просто.
Файловая база.
Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
Никакого клиент-серверного режима нет.
-
20.12.2016, 16:31
#4

Гордость форума PRO
Re: COM-объект и Excel
А попробуй «завернуть» в Попытку
Что выдаст?
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
Excel.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel…»);
Исключение
Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;
-
20.12.2016, 17:04
#5

Иногда оказывает помощь
Re: COM-объект и Excel
Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибка
ОписаниеОшибки()=»»
-
20.12.2016, 17:25
#6

Гордость форума PRO
Re: COM-объект и Excel
[QUOTE=lilyapo;469920]Все то же самое.
Ошибка при вызове метода контекста (Open): Неизвестная ошибкапохоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
-
Пользователь сказал cпасибо:
-
20.12.2016, 17:41
#7

Иногда оказывает помощь
Re: COM-объект и Excel
Все получилось!
Спасибо огромное, фантастика!:dance:
-
13.09.2018, 12:20
#8

Гость форума
Re: COM-объект и Excel
Сообщение от lilyapo
Все получилось!
Спасибо огромное, фантастика!:dance:Пожалуйста. расскажите, как решили проблему.
Такая же ситуация на одном из компьютеров. Перепробовали все рекомендации из интернета. Ничего не помогает.
-
13.09.2018, 13:10
#9

Иногда оказывает помощь
Re: COM-объект и Excel
Попробуй подключиться к открытому «ручками» экселю
Как подключиться к запущенному Excel-евскому файлу в реальном времени, изменить его и даже не сохранять, а просто переключить окно на 1С и сразу же выгружать данные в табличную часть, лишь переключив окна
Excel = ПолучитьCOMОбъект(, «Excel.Application»);
При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
Так я справилась с проблемой
-
Доброе время суток.
Проблема заключается в следующем внешняя обработка загрузки из Эксель на личном компьютере работает нормально, но на РДП выдает ошибку «ошибка при вызове метода контекста (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
Решение данной проблемы. Дело действительно оказалось в настройках безопасности Excel.
Файл->Параметры->Центр управления безопасностью->Параметры центра упраления безопасностью. Выбираете пункт «Надежные расположения» и добавляете папку, куда 1с-кой пишутся темповские файлы экселя (в конфигураторе; КаталогВременныхФайлов() -> «C:Temp»).
Однако тут возникла 2-я проблема. Данную папку Excel ни в какую не захотел добавлять в доверенные (не поленился и проверил, что проблема именно в данной настройке — в коде жестко поменял КаталогВременныхФайлов() на тестовую «D:Temp» + прописал ее в доверенные (Excel дал добавить); сформированный Excel файл без ошибок вывелся в АА5 (~4500 строк)).
2-я проблема оказалась более серьезной. Как я понял, Excel считает темповские файлы в принципе не «заслуживающими» доверия (на системном уровне). Лечится это правками соответствующих веток реестра. Но при большом количестве пользователей (100 и более) — не наш вариант.
В итоге пришел к решению проблемы корректировкой кода, причем есть 2 варианта:
изменить папку выгрузки (см. вышеописанное)
| Код |
|---|
// --> //ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS); //Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls"); КаталогВременныхФайлов = "D:Temp"; ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS); Excel.Workbooks.Open(КаталогВременныхФайлов + "tmpxls.xls"); // <-- |
или формат формируемых файлов (с «новыми» расширениями проблема не возникает)
| Код |
|---|
// --> //ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов() + "tmpxls.xls", ТипФайлаТабличногоДокумента.XLS); //Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls"); ЭлементыФормы.ТабличныйДокумент.Записать(КаталогВременныхФайлов + "tmpxls.xlsx", ТипФайлаТабличногоДокумента.XLSX); Excel.Workbooks.Open(КаталогВременныхФайлов + "tmpxls.xlsx"); // <-- |
P.S. Считаю данную проблему достаточной для обращения к разработчикам и внесения ими доработок, т.к. ПП эволюционируют (2003, 2007, 2010, 2013, 2016) и раз предусмотрена интеграция, должно быть и предусмотрена работа с различными версиями ПП (например анализ ПП и формирования расширения файла в зависимости от этого).
P.S.S. Тем более на форуме поддержки Microsoft, касательно данной проблемы, посоветовали обращаться к разработчикам сторонних ПП, чтобы они учитывали все эти нюансы (т.е. опять возвращаемся к разработчикам АА).
Изменено: Алексей Коломыйченко — 11.03.2016 17:46:35
0
— 14.02.2019 — 09:24
Не думал, что возникнет такая проблема. Файлов Excel перечитал уже несметное количество. У клиента из УТ11 моей обработкой закачивается прайс, все работало уже пару лет и вот после нового выдает ошибку при открытии файла. Пишет, что «неизвестная ошибка»
Какие отличия от того года:
1.Обновил платформу на 8.3.12.1685(в ней появились косяки с функционированием горячих клавиш и правой кнопки мыши. На 8.3.13.1690 приложение вообще периодически вылетало). Пока вернулись к 8.3.12.1685
2. Обновили УТ до 11.4.6.188
3. Excel 2010 при открытии руками выдавал сообщение про сбой активации. Говорит, что устранил, сегодня я еще не проверял.
Прайс не закачивается, ошибка не ушла
У меня на компе этот же файл прекрасно обрабатывается, но у меня стоит старый, добрый Excel 2007
1
— 14.02.2019 — 09:51
Как читаешь то? ТабДок.Прочитать()?
2
— 14.02.2019 — 09:59
(1)до чтения не доходит, файл перестал открываться
Попытка
Excel = Новый COMОбъект(«Excel.Application»);
WB = Excel.Workbooks.Open(ПутьКФайлу);
3
— 14.02.2019 — 10:31
Попробуй зарегистрировать comcntr.dll из 8.3.12.1685.
4
— 14.02.2019 — 10:34
(3)попробую вечером, но я ранее никогда такого не делал,
без этого работало. Вот для обмена ЗУП И БП, действительно требуется регистрация
5
— 14.02.2019 — 10:38
Цитата:
Сообщение от USSR
Пока вернулись к 8.3.12.1685
Если это означает изменение настроек запуска — то работаешь из 8.3.12.1685 а comcntr.dll из 8.3.13.1690
6
— 14.02.2019 — 10:39
C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll
7
— 14.02.2019 — 10:54
2-USSR > куда не доходит? 1С умеет читать эксель без всяких комобъектов
8
— 14.02.2019 — 11:07
Цитата:
Сообщение от USSR
3. Excel 2010 при открытии руками выдавал сообщение про сбой активации.
Ну дык от этого и плясать.
мс офис просто так от нечего делать такие сообщения не станет выдавать.
Цитата:
Сообщение от USSR
Говорит, что устранил,
типа крякнул повторно еще раз :)))
В идеале снести офис, слегка подчистить реестр (типа RegCleaner), перезагрузить и поставить офис заново.
9
— 14.02.2019 — 11:23
(7)я знаю, но все работало и переделывать не хочется
(4)я это знаю, я же написал, попробую, но по моему не в этом дело
(8)готов со всем согласиться. я не знаю как и кто там крякал ))
10
— 14.02.2019 — 12:02
Цитата:
Сообщение от USSR
до чтения не доходит, файл перестал открываться
А может быть проблема в том, что данный файл на тот момент уже открыт?
Доводилось сталкиваться с ситуацией, что открытый экселовский файл никак визуально не отображается.
Приходилось открывать какой-нибудь другой экселовский файл, чтобы увидеть ранее открытый файл. После чего этот файл вручную закрывал. А дальше — все работало, как положено.
11
— 14.02.2019 — 12:15
(10)в диспетчере задач Excel процесса не было
12
— 14.02.2019 — 12:35
11-USSR > Через диспетчер задач возникшую у меня проблему не рассматривал…
Хохмы ради, можно открыть какой-нибудь другой экселовский файл. Если проблемный файл никак не проявит себя, то это другой случай.
13
— 15.02.2019 — 04:26
C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll — регистрация ожидаемо не помогла
Установил 8.3.14, переустановил Excel, с удалением предыдущего, но без рекомендуемой уважаемыми БШ и самим Excel (не было возможности удаленно это сделать без потери связи), пока ничего не помогло.
На моем компе все работает, даже на другой конфигурации. Но в реестре старый офис остался и еще кое где, начисто он не удалился
14
— 15.02.2019 — 17:41
Цитата:
Сообщение от USSR
регистрация ожидаемо не помогла
Что значит ожидаемо. Если все случилось после манипуляций с платформой то comcntr.dll первый в рядах подозреваемых. К то же начинать надо с самого простого. Дальше попробуй написать ПолучитьCOMОбъект(, «Excel.Application»). Первый параметр пустой. Если ошибка — то проблема не с файлом. Попробуй создать другие ком объекты (тот же word или 1С). Что бы уже точно понимать где ошибка.
15
— 15.02.2019 — 20:37
(14)Ожидаемо — это то, что COM объект создается, но файд не открывается, я об этом сразу написал. И я никогда не регистрировал эту компоненту для целей чтения из Excel. Вот например для связи разных баз по COM — это да
16
— 16.02.2019 — 08:38
Короче, не выходит каменный цветок. С помощью MicrosoftProgram_Install_and_Uninstall вроде бы вычистил Office 2010. Снес Оffice 2007. Снова поставил. Интерактивно файлы открываются мгновенно и без проблем. Скопировал базу к себе на комп. Все работает, причем для обоих установленных у меня офисов (2003,2007). При создании COM объекта указывал и Excel.Application и Excel.Application.11 и Excel.Application.12.
У проблемного человека так и не работает. При открытии файла «Неизвестная ошибка». И у него и у меня Windows 7 msx. Пока единственное отличие нашел в том, что у него есть служба Office Software Protection Control. Я ее и останавливали запускал, никакого эффекта. Надо вечером попробовать открыть файл Word. Какая то засада. В инете эта тема встречается, но она мусолится вокруг клиент-серверной 1с, у меня файловая. В службах компонентов DCOM Excel не нашел, ни по имени, ни по идентификатору продукта. У меня на компе тоже не нашел.
17
— 17.02.2019 — 10:07
Сделал вариант на ADO. Визуально кажется несколько медленнее. Но причину бунта Excel.Application надо найти
18
— 17.02.2019 — 10:27
Ты пробовал ПолучитьCOMОбъект(, «Excel.Application») (При включенном Excel) и ПолучитьCOMОбъект(«», «Excel.Application») ?
19
— 17.02.2019 — 10:56
(18)Нет, я так не пробовал. Посмотрю на досуге. Но вариант не очень, читать из уже открытого файла. Тем более в моей обработке возможна обработка сразу с двух файлов, есть там некоторые особенности ценообразования.
Хотелось бы все-таки выбрать имена файлов и просто нажать кнопочку «Заполнить», как было раньше ) Как и у меня на компе, пробовал и на другой тачке на WIN 2008 Server.
20
— 17.02.2019 — 11:31
(18)Попробовал. Заполнение из открытого файла с помощью ПолучитьCOMОбъект(, «Excel.Application») работает
21
— 17.02.2019 — 11:38
(18)а так тоже не работает:
Excel = ПолучитьCOMОбъект(«», «Excel.Application»);
WB = Excel.Workbooks.Open(ПолноеИмяФайла);
22
— 19.02.2019 — 14:17
Цитата:
Сообщение от Uho
2-USSR > куда не доходит? 1С умеет читать эксель без всяких комобъектов
Цитата:
Сообщение от USSR
(7)я знаю, но все работало и переделывать не хочется
Цитата:
Сообщение от USSR
Сделал вариант на ADO. Визуально кажется несколько медленнее.
?????
23
— 19.02.2019 — 14:44
(22) ну что непонятно, время идёт, а прайсы не заканчиваются. Пришлось переделать. Но это не путь к успеху. Причина так и не выяснена
24
— 19.02.2019 — 15:23
23-USSR > если переделывать, почему не средствами 1С?
25
— 19.02.2019 — 16:42
(24)Тоже средствами 1с, но без Excel.Application
Connection = Новый COMОбъект(«ADODB.Connection»);
и тд.)
26
— 19.02.2019 — 18:43
ADODB — средство 1С? ну-ну
ЗЫ. Раз уж переписывал, переписал бы по-нормальному
27
— 19.02.2019 — 19:49
(27)это вопрос терминологический. 1с под виндой позволяет мне создать этот объект, значит можно считать что средствами 1с) а как по нормальному?) Если честно, то мне больше всего нравится именно excel.applicstion, попадались прайсы, которые без него мне не обработать.
28
— 19.02.2019 — 21:42
ТабличныйДокумент.Прочитать() пару лет с 8.3.8 вроде бы точно юзаем
29
— 19.02.2019 — 22:12
(28)Этот пробел в знаниях обязательно закрою, но Excel.Application все равно бывает нужен ) И на чтение, и на запись. На 7.7 много чего с ним. Правда и обсуждаемый казус тоже впервые, может никогда и не повторится.
30
— 20.02.2019 — 09:02
Недавно наткнулся что Табличный документ 1с 8.3.12 не прочитало, а COM Excell Application прочитал — под расширением xls была сохранена страница html. Excell ругнулся, что формат не его, но все же открыл. А так многие выгрузки переделал, в разы ж быстрее читает.
31
— 01.03.2019 — 16:49
23-USSR > Как вариант, может быть проблема заполнения шапки документа.
Тоже наблюдал случай, когда Excel не мог начать чтение документа. По подозрению проблемы в шапке — очистил шапку и подменил на шапку из читаемого файла — чтение прошло нормально. — Вероятно, при формировании шапки документа, в шапку прошли недокументированные символы.
32
— 01.03.2019 — 17:13
Цитата:
Сообщение от perpetum
Тоже наблюдал случай, когда Excel не мог начать чтение документа
Даже пустой файл создать не может. Там проблема с разрешениями (ИМХО). Решается большим бубном.
33
— 01.03.2019 — 18:36
(31)Про какую шапку Вы говорите ? я не понял. Файл вообще не открывается. Причем пробовал этот же файл читать еще на 4 компах, 3 в терминале. Все работает. Интерактивно и на проблемном компе открывается и даже читается по COM.Но только предварительно открытый
