Настройка COM Объекта «Excel.Application» на сервере 1С, настройка поможет обработать большие файлы Excel на сервере 1C, в том числе через фоновые задания.
Та же данная настройка может решить проблему с ошибкой 1С:
ошибка -2147467262(0x80004002): Интерфейс не поддерживается
- Заходим на сервер приложений 1С под локальным админом или администратором домена
- Запускаем DCOMCNFG (Консоль настроек «Службы компонентов»)
- Открываем ветку Корень консоли -> Службы компонентов -> Компьютеры -> Мой компьютер -> Настройка DCOM
- Ищем «Microsoft Excel Application»
- Если запись существует, то переходим к пункту 4
- Закрываем «Службы компонентов»
- Настройка реестра
- Запускаем REGEDIT
- Открываем ветку Компьютер\HKEY_CLASSES_ROOT\AppID\EXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
- Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты
- После этого в Component Services должен появиться «Microsoft Excel Application»
- Настраиваем свойства DCOM компонента «Microsoft Excel Application»
- Заходим в «Свойства», закладка «Безопасность»
- «Разрешения на запуск и активацию» — Настроить — Изменить
- Добавляем пользователя, под которым запускается агент сервера 1С
- Назначаем ему только следующие права (Разрешить):
- Локальный запуск
- Локальная активация
- «Разрешения на доступ» -Настроить — Изменить
- Добавляем пользователя, под которым запускается агент сервера 1С
- Назначаем ему только следующие права (Разрешить):
- Локальный доступ
- «Разрешения на запуск и активацию» — Настроить — Изменить
- Переходим на вкладку «Удостоверение»
- Выбираем «Запускающий пользователь»
- Заходим в «Свойства», закладка «Безопасность»
- Настройка системных папок
- Папка «C:\Windows\SysWOW64\config\systemprofile\Desktop\»
- Проверяем наличие папки , если нет -то создаем
- Заходим в «Свойства» этой папки, закладка «Безопасность»
- Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
- Добавляем права «Чтение» и «Запись»
- Папка «C:\Windows\System32\config\systemprofile\Desktop\»
- Проверяем наличие папки , если нет -то создаем.
- Заходим в «Свойства» этой папки, закладка «Безопасность»
- Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
- Добавляем права «Чтение» и «Запись»
- Папка «C:\Windows\SysWOW64\config\systemprofile\Desktop\»
Hi,
if you have already created a script and within you do some things with Excel by DCOM Excel.Application the script runs well as a user logged to the Desktop but not within a schedule task started by the same user.
The root cause are some missing folders and permissions in the systemprofile folder and missing DCOM Permissions to launch Excel.
Start a command shell cmd.exe with Administrator permissions and create the following folders if it not exists:
mkdir C:\Windows\SysWOW64\config\systemprofile\AppData mkdir C:\Windows\SysWOW64\config\systemprofile\Desktop mkdir C:\Windows\System32\config\systemprofile\AppData mkdir C:\Windows\System32\config\systemprofile\Desktop
Then set Modify permissions for the user who should start excel
icacls C:\Windows\SysWOW64\config\systemprofile\AppData /grant myDomain\myUser:(OI)(CI)(R)(RX)(M) icacls C:\Windows\SysWOW64\config\systemprofile\Desktop /grant myDomain\myUser:(OI)(CI)(R)(RX)(M) icacls C:\Windows\System32\config\systemprofile\AppData /grant myDomain\myUser:(OI)(CI)(R)(RX)(M) icacls C:\Windows\System32\config\systemprofile\Desktop /grant myDomain\myUser:(OI)(CI)(R)(RX)(M)
Open DCOM Configuration. Depending of our Office Version (x86 or x64). For a 32Bit Office
mmc.exe comexp.msc /32
and for System default
mmc.exe comexp.msc
Set permissions
Set the Launch and Activation permissions
and finally set the Access permissions
Michael
My Knowledgebase for things about Linux, Windows, VMware, Electronic and so on…
This website uses cookies to improve your experience and to serv personalized advertising by google adsense. By using this website, you consent to the use of cookies for personalized content and advertising. For more information about cookies, please see our Privacy Policy, but you can opt-out if you wish. Accept Reject Read More
При создании книги Excel ругается «не удается открыть или сохранить документы из-за нехва»
☑
0
Birmingem
07.09.17
✎
18:58
Имеется:
Windows Server 2012 х64
На нем Office 2013 x64
На нем 1С Сервер х64
Пытаюсь выгружать в файл Ексель.
Excel = Новый COMОбъект(«Excel.Application»);
Excel.Displayalerts = 0;
Книга = Excel.WorkBooks.Add();
И вот на этой строке вылезает сообщение:
Ошибка при вызове метода контекста (Add)
Книга = Excel.WorkBooks.Add();
по причине:
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается открыть или сохранить документы из-за нехватки памяти или места на диске.
• Чтобы освободить память, закройте ненужные книги или программы.
• Чтобы освободить место на диске, удалите с этого диска ненужные файлы.
Для эксперимента попробовал открыть существующий файл:
Excel.Workbooks.Open(«D:\Temp\111»);
Открывает…
Подозреваю что при попытке создания нового файла, Excel обращается куда то, куда доступа у юзера USR1CV8 (под которым работает 1С) нет.
Подскажите что делать?
1
Birmingem
07.09.17
✎
19:00
Второй день бьюсь, весь инет перерыл …
2
Fedor-1971
07.09.17
✎
19:21
(0) на msdn — проверь есть ли параметры у Workbooks.Add(), может нужен параметр, что создаём?
3
Birmingem
07.09.17
✎
19:25
(2) В файловой базе этот код полностью работает. Так что проблема именно с доступами из 1С:Сервер в Ексель.
4
Fedor-1971
07.09.17
✎
19:38
(3) скорее в TEMP, проверь права доступа на ту папку, которая прописана в общей системной переменной
5
Fedor-1971
07.09.17
✎
19:46
4+ или залогинься в винду с USR1CV8
6
Birmingem
07.09.17
✎
19:48
В «Настройка DCOM» в свойствах Excel прописал «Разрешения на запуск и активацию» пользователя USR1CV8.
А вот на вкладке «Удостоверение» прописать этого пользователя не дает. Ругается «код ошибки 80070569 выбранный режим входа для для данного пользователя не предусмотрен».
Какие еще права надо дать USR1CV8? В какую группу его засунуть?
7
Birmingem
07.09.17
✎
19:50
(5)Пробовал. Дал ему «Пользователи удаленного рабочего стола» и зашел удаленно под USR1CV8. Вручную запустил Ексель, создал книгу, нормально создалось. Запустил 1С, попробовал выгрузить в Ексель, результат тот же.
8
lubitelxml
07.09.17
✎
19:52
(7) на tmp дал права то?
9
Cyberhawk
07.09.17
✎
19:53
(6) Интерактивный вход в систему в групповых политиках вроде
10
Cyberhawk
07.09.17
✎
19:54
Ну и проверить, что служба сервера 1С работает не из-под «локал систем»
11
Birmingem
07.09.17
✎
20:09
Попробовал так. Дал USR1CV8 еще и права Администратор.
Зашел под ним. В «Настройка DCOM» в свойствах Excel на вкладке «Удостоверение» поставил «Текущий пользователь».
И заработало …
Получается, надо в «Удостоверение» прописать USR1CV8.
12
Birmingem
07.09.17
✎
20:14
(9) Забрал у USR1CV8 права Администратор.
Зашел в «Локальная политика безопасности — Локальные политики — Назначение прав пользователя». Правильно?
В списке нашел «Запретить локальный вход» и там был USR1CV8. Убрал. Все равно не дает прописать его в «Удостоверение».
Что еще нехватает?
13
Birmingem
07.09.17
✎
20:19
(10)служба сервера 1С работает под USR1CV8
14
Birmingem
07.09.17
✎
20:20
(8)Какую именно tmp надо проверить?
15
VS-1976
07.09.17
✎
20:36
Под пользователем USR1CV8 создай новую книгу в excel руками, скорее всего тебе предложит какой нибудь диалог типа создавать конкретно под этим пользователем.
16
Cyberhawk
07.09.17
✎
20:55
17
Birmingem
08.09.17
✎
07:20
(15)Пробовал. Зашел под USR1CV8, создал книгу, сохранил. Закрыл Ексель. Снова открыл. Никаких вопросов не задает. Открыл книгу, изменил, сохранил. Все нормально.
(16)Спасибо! Я уже нарыл в инете эту информацию, только по частям. Теперь заново, пошагово все проделал.
В результате COMОбъект(«Excel.Application») создается. Но потом, при создании книги Книга = Excel.WorkBooks.Add(); выдает:
Ошибка при вызове метода контекста (Add) Книга=Excel.WorkBooks.Add();
по причине:
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается открыть или сохранить документы из-за нехватки памяти или места на диске.
• Чтобы освободить память, закройте ненужные книги или программы.
• Чтобы освободить место на диске, удалите с этого диска ненужные файлы.
18
VS-1976
08.09.17
✎
14:25
Попробуй создать каталоги, может поможет, но не факт
Папки
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
19
Масянька
08.09.17
✎
14:49
(17) Documents and Settings — смотрел?
20
Cyberhawk
09.09.17
✎
09:37
Может квоты установлены для пользователя ОС службы агента
21
Birmingem
13.09.17
✎
10:39
В общем, так и не победил эту проблему.
Отказался от формирования Ексель файла на сервере (по рекомендации микрософта ).
Теперь на сервере собираю данные, складываю в несколько массивов и передаю на клиента.
И файл Ексель создаю на клиенте.
Sharing a TIP on Scheduling a script that contains excel code.
One of my Script that uses excel was running fine when I was launching it interactively but if scheduled thru
Task scheduler it wasn’t working & threw below errors:
Microsoft Excel cannot access the file
There are several possible reasons:
The file name or path does not exist.
The file is being used by another program.
The workbook you are trying to save has the same name as a currently open
workbook.
On researching there found a simple fix , Just create a directory with name Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop -(64 Bit OS)
C:\Windows\System32\config\systemprofile\Desktop -(32 bit OS)
After doing this my script started running fine, hope this TIP will assist you if you are in same situation.
Thanks for reading
Sukhija Vikas
http://SysCloudPro.com
Related posts
In my last article ‘’, I have explained why we choose to use Excel Application object for excel automation and its disposing mechanism. But, while testing we were getting following exception:
Microsoft Excel cannot access the file ‘<file path>’. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.: at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
But, file exists at that location.
After spending hours, I am able to find solution for this weird issue.
Basically solution is to create ‘Desktop’ folder under following paths on your machine:
If your machine is 64-bit then
— C:\Windows\SysWOW64\config\systemprofile
If your machine is 32-bit then
— C:\Windows\System32\config\systemprofile
My machine is 64-bit and I was already having ‘Desktop’ folder under ‘C:\Windows\SysWOW64\config\systemprofile’, but still it was not working.
Just to try out I created ‘Desktop’ folder under ‘C:\Windows\System32\config\systemprofile’ (which was not exist) on my machine.
And Bingo! Problem is solved. Exception went away and it is updating excel file correctly.
Really strange but it worked!
Looks like it creates some temporary file under ‘Desktop’ folder. But not too sure. Also it has something to do with under which user credentials it runs the windows service and excel application object.
Note: Paths may vary on your machine depending on where ‘windows’ folder reside.
I got idea for this solution from following 2 articles:
http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required
Another solution: (but this requires registry changes – which is not preferred to do it on production machine)
http://social.technet.microsoft.com/Forums/en-US/office2007deploymentcompatibility/thread/334c9f30-4e27-4904-9e71-abfc65975e23
Happy Programming!