Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Проблема со вставкой картинки в Excel

Проблема со вставкой картинки в Excel
Я
   Access granted
 
12.06.18 - 10:06
Добрый день!
Имеется простейший код:

ExcelDoc = Новый COMОбъект("Excel.Application");
ExcelDoc.Visible = Ложь;
    
РабочаяКнига = ExcelDoc.WorkBooks.Open("C:\1.xls");
        
ExcelDoc.ActiveSheet.Shapes.AddPicture("C:\1.jpg", Истина, Истина, 100, 100, 70, 70).Select();

Я зашел на сервер 1С и выполняю его через инструменты разработчика. На клиенте все работает (картинка вставляется), а в режиме "на сервере" не работает, выдает "Ошибка при вызове метода контекста (AddPicture): Неизвестная ошибка". Уже не знаю, куда копать. Дал USR1CV8 полные права, не помогло.
 
 
   hhhh
 
1 - 12.06.18 - 10:12
(0) файл C:\1.jpg  точно есть на сервере? может он у вас на клиентском компе расположен?
   Access granted
 
2 - 12.06.18 - 10:14
+(0) Посмотрел через диспетчер задач, что различаются пользователи, от имени которых запускается процесс Excel.exe. С клиента это админ, а с сервера это usr1cv8. Через dcomcnfg поставил для Microsoft Excel application запуск от имени админа, а он все равно продолжает от имени usr1cv8 открываться.
   Access granted
 
3 - 12.06.18 - 10:14
(1) Я прямо на сервер зашел, т.е. в данном случае компьютер клиента = компьютер сервера. Просто код выполняется по-разному (клиент/сервер)
   Access granted
 
4 - 12.06.18 - 10:16
(1) Права я тоже проверил - дал права на xls и jpg админу и usr1cv8 полные.
   Остап Сулейманович
 
5 - 12.06.18 - 10:50
(0) За ActiveSheet и прочие активы  нужно гнать из професии.
Вы уверены что оно есть в неинтерактивном режиме? Конечно что-то есть. Но тот ли это актившит, который вам нужен? Вы в него мышкой тыкали, чтобы он стал Актив?
   Access granted
 
6 - 12.06.18 - 10:56
(5) ExcelDoc.Sheets(1).Shapes.AddPicture("C:\1.jpg", Истина, Истина, 100, 100, 70, 70).Select();

Ничего не меняется.
   shuhard
 
7 - 12.06.18 - 11:03
(0)[Я зашел на сервер 1С и выполняю его через инструменты разработчика]
что за инструменты разработчика
   Access granted
 
8 - 12.06.18 - 11:08
(7) Подсистема с набором внешних обработок. Считайте, что через консоль кода выполняю.
   Access granted
 
9 - 12.06.18 - 11:10
Возможно, причина в том, что сервер 1С 64 бит, а excel 32 бит?
   Остап Сулейманович
 
10 - 12.06.18 - 11:11
(6) Почему "ExcelDoc.Sheets(1)"? Разве у вас лист расположен в ExcelDoc? Судя по вашему же коду нужный лист расположен в "РабочаяКнига". И еще. Он точно имеет индекс "1". В ВБА все индексы начинаются с "0".
 
 Рекламное место пустует
   Остап Сулейманович
 
11 - 12.06.18 - 11:13
+(10) Если уж так хочется через ExcelDoc - тогда так :
ExcelDoc.WorkBooks(1).Shets(1)...
Проверить индексы.
   Access granted
 
12 - 12.06.18 - 11:15
(11) Как я ранее уже сказал, код на клиенте работает. Картинка вставляется куда надо. На сервере не работает. Клиент и сервер - один и тот же компьютер.
   Остап Сулейманович
 
13 - 12.06.18 - 11:17
+ (11) А вообще так тоже плохо. Откуда вы можете знать, что открытая книга единственная? Если пользователь перед этим открыл еще несколько WorkBooks-ов - ваша будет иметь индекс точно не "1". К нужной книге обращаться нужно все-таки через объект, который возвращается вот здесь :
РабочаяКнига = ExcelDoc.WorkBooks.Open("C:\1.xls");
   hhhh
 
14 - 12.06.18 - 11:18
(12) попробуйте какой нибудь диск другой. Всё-таки корень диска С: сервера - это не самый лучший вариант. Туда даже у админа не все права.
   Остап Сулейманович
 
15 - 12.06.18 - 11:19
(12)
Зайти на сервер пользователем "usr1cv8".
Открыть файл интерактивно.
Прочитать все предупреждения от Эксель.
Возможно ограничения выставляются именно пользователю "usr1cv8".
   Access granted
 
16 - 12.06.18 - 11:20
(14) Уже пробовал другой диск. И права туда тоже задавал. Уже и службу агента 1С запустил с полными правами от админа. Дело в чем-то другом. Возможно, в разрядности 1С и Excel.
   Access granted
 
17 - 12.06.18 - 11:21
(15) Уже служба агента от имени админа запущена. Никаких сообщений не выдает при интерактивном открытии. Да и с клиента под ним же отрабатывает нормально.
   Остап Сулейманович
 
18 - 12.06.18 - 11:27
(17) Разбивай вот это вот счастье на этапы и определи где именно возникает ошибка :

ExcelDoc.Sheets(1).Shapes.AddPicture("C:\1.jpg", Истина, Истина, 100, 100, 70, 70).Select();

1. Лист = ExcelDoc.Sheets(1);
2. Рисунки = Лист.Shapes;
3. Рисунок = Рисунки.AddPicture("C:\1.jpg", Истина, Истина, 100, 100, 70, 70);
4. Выделение = Рисунок.Select();
   Access granted
 
19 - 12.06.18 - 11:29
(18) Сейчас Excel переустановлю на х64, после чего проверю.
   Остап Сулейманович
 
20 - 12.06.18 - 11:33
(19) Если бы дело было в разрядности - ошибка была бы здесь :
ExcelDoc = Новый COMОбъект("Excel.Application");
   Access granted
 
21 - 12.06.18 - 11:36
(20) Согласен. Но у меня больше нет идей. При одинаковых условиях (один и тот же запускающий пользователь, один компьютер) с клиента работает (32бит), с сервера не работает (64бит).
   Остап Сулейманович
 
22 - 12.06.18 - 11:38
(21) Не понял... Как так может быть, что на одной машине у разных пользователей разная разрядность ОС?
   Access granted
 
23 - 12.06.18 - 11:43
(22) Сервер 1С 64 бит, Excel стоял 32 бит. Пользователи тут ни при чем.
   Access granted
 
24 - 12.06.18 - 11:48
(22) Про пользователей понял вопрос - сервер 64, а клиентская платформа 32, вот и разная разрядность.
   sechs
 
25 - 12.06.18 - 11:53
(0) Почему второй параметр AddPicture равен Истина?
   Access granted
 
26 - 12.06.18 - 11:55
(25) Да это я поменял, в исходном коде вообще число было. Пробовал всякие разные варианты параметров, прочитав хелп MSDN, это не помогло.
   Access granted
 
27 - 12.06.18 - 11:56
Мопед, как говорится, не мой, но починить его надо :)
   sechs
 
28 - 12.06.18 - 11:58
А, разработка методом тыка... Ну, удачи.
   Access granted
 
29 - 12.06.18 - 11:59
(28) Это вообще не разработка, нужно починить сломанное.
   Access granted
 
30 - 12.06.18 - 12:06
Собственно, я был прав. Дело в разрядности Excel. Все заработало.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит Тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует