Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.
Особенности
Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.
Убедиться в причине ошибки возможно, если посмотреть логи системы.
Устранение:
- на сервере убиваем excel (taskkill /im excel.exe /f)
- открываем оснастку “Службы компонентов” (Пуск->Администрирование->Службы компонентов)
- в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
- справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.
Может оказаться, что “Microsoft Excel Application” отсутствует в списке, в данном случае
- Запускаем REGEDIT
- Открываем ветку Computer\HKEY_CLASSES_ROOT\AppID\EXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
- Выполняем команду “mmc comexp.msc /32”, которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
- После этого в Component Services должен появиться “Microsoft Excel Application”
Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.
Для правки использовалась оснастка Локальные пользователи и группы (lusrmgr.msc) — это инструмент, предназначенный для управления локальными пользователями и группами. Локальный пользователь или группа — это учетная запись, которой могут быть предоставлены разрешения и права на вашем компьютере.
Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.
Так что нельзя однозначно сказать, что же решило проблему.
Заключение
В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.
В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.
Бывает такое: вы прописываете для компонента пользователя и пароль.
Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка “Интерфейс не поддерживается”. Следует просто вбить новый пароль.
Люди глупо доверчивы… Вся реклама мира основана на трех принципах: “Хорошо, много и даром”. Поэтому можно давать скверно, мало и дорого.
3 комментария.
Проверить наличие системных папок:
Папка “C:\Windows\SysWOW64\config\systemprofile\Desktop\”
Проверяем наличие папки , если нет -то создаем.
Заходим в свойства этой папки.
Закладка Security
Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
Добавляем право “Read” и “Write”
Папка “C:\Windows\System32\config\systemprofile\Desktop\”
Проверяем наличие папки , если нет -то создаем.
Заходим в свойства этой папки.
Закладка Security
Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
Добавляем право “Read” и “Write”
Эти же настройки необходимо также использовать для пользователей, которые работают не под полными правами (например, на сервере терминалов)
Даже при настроенном Dcom, при сохранении в директорию, на которую нет права доступа на запись, возможно зависание 1С с полной загрузкой ядра процессора, без сообщений ошибок.