Недостаточно прав на создание com объекта
Ребят, есть проблема, хочу открыть Excel файл посредством COM на сервере, пишу такой код:
Разумеется до этого файл получил на клиенте, обработал и передал (т.е. файл в папке по нужному пути появляется), но на строке
ФайлЗагрузки = Новый COMОбъект("Excel.Application");
Вылетает с ошибкой, что недостаточно прав, скрины во вложении.
По обертке - конфа тррехзвенка (MSSQL), Ecxel 64 битный, сервер-приложение и платформа тоже (платформа 8.3.16.1030, пользователь заведен стандартный (USR1CV8), этому пользователю разрешил все в службах компонентов (папка DCOM, Microsoft Excel Application), папки C:\Windows\SysWOW64\config\systemprofile\Desktop\ и C:\Windows\System32\config\systemprofile\Desktop\ созданы, права на них полные, дал еще полные права на папку C:\Windows\System32\config\systemprofile\AppData. Все это для пользователя USR1CV8. Комп перезагружал, службу 1с и MSSQL тоже перезагружал, вроде все сделал, а прав как не было, так и нет, что нужно еще сделать? Разумеется, что на клиенте или в файловом варианте работы такой проблемы нет.
&НаСервере
Процедура ПродолжитьЗагрузкуНаСервере (СтруктураПараметровФайла, ДополнтиельныеПараметры)
ФайлЗагрузки = ПолучитьИзВременногоХранилища(СтруктураПараметровФайла.Адрес);
ПутьДляФайла = ПолучитьИмяВременногоФайла(СтруктураПараметровФайла.Расширение);
ФайлЗагрузки.Записать(ПутьДляФайла);
ФайлЗагрузки = Новый COMОбъект("Excel.Application");
Книга = ФайлЗагрузки.WorkBooks.Open(ПутьДляФайла);
ЧислоЛистов = Книга.Sheets.Count;
Счетчик = 0;
Элементы.Лист.СписокВыбора.Очистить();
Пока Счетчик <= ЧислоЛистов - 1 Цикл
ЛистExcel = Книга.WorkSheets(Счетчик + 1);
Элементы.Лист.СписокВыбора.Вставить(Счетчик, ЛистExcel.Name, ЛистExcel.Name);
Счетчик = Счетчик + 1;
КонецЦикла;
Если Элементы.Лист.СписокВыбора.Количество() > 0 Тогда
Лист = Элементы.Лист.СписокВыбора[0].Значение;
КонецЕсли;
КонецПроцедуры
ПоказатьРазумеется до этого файл получил на клиенте, обработал и передал (т.е. файл в папке по нужному пути появляется), но на строке
ФайлЗагрузки = Новый COMОбъект("Excel.Application");
Вылетает с ошибкой, что недостаточно прав, скрины во вложении.
По обертке - конфа тррехзвенка (MSSQL), Ecxel 64 битный, сервер-приложение и платформа тоже (платформа 8.3.16.1030, пользователь заведен стандартный (USR1CV8), этому пользователю разрешил все в службах компонентов (папка DCOM, Microsoft Excel Application), папки C:\Windows\SysWOW64\config\systemprofile\Desktop\ и C:\Windows\System32\config\systemprofile\Desktop\ созданы, права на них полные, дал еще полные права на папку C:\Windows\System32\config\systemprofile\AppData. Все это для пользователя USR1CV8. Комп перезагружал, службу 1с и MSSQL тоже перезагружал, вроде все сделал, а прав как не было, так и нет, что нужно еще сделать? Разумеется, что на клиенте или в файловом варианте работы такой проблемы нет.
Прикрепленные файлы:
По теме из базы знаний
- ОбменComXML
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Синхронизация хранилища 1С и git-репозитория с применением OneScript и Gitsync. Методика и пошаговая инструкция для создания скрипта и его регулярного запуска
- Полный перевод кода УНФ 1.6 на английский язык с помощью обучаемой системы машинного перевода
- Перевод зарплатного и кадрового учета из системы «Галактика ERP» в 1С:ЗУП КОРП в региональном аэропорту
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – вводим имя «V83.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)
Убедитесь что подставляете нужную версию и розрядность
2. В появившейся ветке V83COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll
Обязательно!
3. Правой кнопкой по ветке V83COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»
Убедитесь что подставляете нужную версию и розрядность
2. В появившейся ветке V83COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll
Обязательно!
3. Правой кнопкой по ветке V83COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»
В версии 1с старше 8.3.10 уже не нужно использовать Excel для чтения многостраничных файлов
См. пример:
См. пример:
(3) Да, я знаю, спасибо, в этом случае я загружаю только список листов, для того, чтобы пользователь смог выбрать нужный ему лист.
Если использовать "ТабличныйДокумент.Прочитать(...)", то листы либо склеятся, либо загрузится только один (а его нужно передать по имени).
Если использовать "ТабличныйДокумент.Прочитать(...)", то листы либо склеятся, либо загрузится только один (а его нужно передать по имени).
Попробуйте для начала положить файл под ноги, то есть в папку 1С. Тогда вы точно отсечете все возможных блокировки доступа, 1с точно увидит файл у себя под ногами. Прямо в папку bin запихните, а потом уже будете играться с правами на рабочем столе, с правами созданными для каталога или унаследованными или вообще замените владельца всех папок. Это будет уже в будущем.
(6)Он уже и так под ногами лежит (Функция ПолучитьИмяВременногоФайла гарантирует, что к возвращемому пути будет доступ и что после окончания сеанса будет очищен файл). Да и с файлом самим нет проблемы хотя бы потому что валится на этой строчке ФайлЗагрузки = Новый COMОбъект("Excel.Application"); а эта строка никак не связана с файлом. Если я просто возьму кнопку и повешаю на сервере обработчик ее нажатия такой же, то тоже будет ошибка (без какого либо файла)
Для V83COMConnector создания, пока нет повода, возможно конечно это поможет, но вероятнее всего проблема проще. Где то у вас действительно не хватает доступа, вероятнее всего на уровне файловой системы. До V83COMConnector создания, нужно все проверить как следует.
Если говорить серьезно о V83COMConnector. То для меня исчерпывающей была эта статья из всех выше приведенных.
Тут описано все досконально, по ней и настраивал Com-соединение. Но если честно, то давно уже такие настройки нигде не требуются.
Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой. Данная статья позволяет снять проблему. НО - до переустановки платформы.
Тут описано все досконально, по ней и настраивал Com-соединение. Но если честно, то давно уже такие настройки нигде не требуются.
Если вам кто-то на данных момент предложит настройку V83COMConnector. Значит, скорее всего в фирме очень мало денег и работают плохие администраторы, которые "грамотными" действиями вставляют палки в колеса программистам. Либо компьютеры настолько слабые, что не может фирма избавиться от старых версий Windows Сервер, в которых с трудом работал V83COMConnector. Но зачастую в современных реалиях достаточно сделать следующее
Еще я бы обратился напрямую к статье microsoft
Использование средства Regsvr32 и устранение неполадок, связанных с выводимыми им сообщениями об ошибках
Тоже очень удобная связка статей, позволяет трезво взглянуть на создание собственного V83COMConnector. Нужен ли он вообще
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
