Имя: Пароль:
1C
1С v8
Еще раз - про возврат ActiveDocument с сервера на клиент
, ,
0 Pro100
 
17.05.18
12:43
Здравствуйте.
У меня вопрос, перепробовал кучу вариантов уже, даже казалось бы такой простой вариант как :

&НаСервере
Функция ПоместитьМакетВХранилище(ИмяМакета)
    ОтчетОбъект = РеквизитФормыВЗначение("Объект");
    Макет = ОтчетОбъект.ПолучитьМакет("Макет1");
    ИмяВрем = ПолучитьИмяВременногоФайла(".xls");
    Макет.Записать(ИмяВрем);
        
    АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВрем));
    
    Возврат АдресВоВременномХранилище;
КонецФункции
&НаКлиенте
Процедура Тест(Команда)
    Попытка
        МакетФайл   = ПоместитьМакетВХранилище("Макет");
        ДвоичныеДанные = ПолучитьИзВременногоХранилища(МакетФайл);
        ИмяФ = ПолучитьИмяВременногоФайла("xls");
        ДвоичныеДанные.Записать(ИмяФ);
        Макет = ПолучитьCOMОбъект(ИмяФ);//инициализируем COM-объект
        Сообщить("Ура");
        
    Исключение
        Сообщить("Не удалось получить макет");
        Сообщить(ОписаниеОшибки());                                            
    КонецПопытки;
КонецПроцедуры

Вот при попытке инициализовать COM-объект 1С выдает ошибку:
{ВнешняяОбработка.ВыгрузкаВБанк.Форма.Форма.Форма(307)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2146959355(0x80080005): Ошибка при выполнении приложения-сервера

1С:Предприятие 8.3 (8.3.10.2699)
1 PR
 
17.05.18
12:44
Так так
2 hhhh
 
17.05.18
12:54
(0) зачем тут вообще com-объект?
3 Pro100
 
17.05.18
13:00
(2)
мне в дальнейшем надо будет заполнить файл эксель
4 3achem
 
17.05.18
13:04
(3) А зачем создавать эксель на сервере? Создай на клиенте
5 Pro100
 
17.05.18
13:05
(4)
Мне надо заполнить файл экселя, который сидит в макете обработки и тип макета ActiveDocument, на клиенте он не работает...
6 3achem
 
17.05.18
13:07
(5)
ПолученныйОбъект = Новый COMОбъект("EXCEL.Application");
        
Объект.ПолученныйCOMОбъект = ПоместитьВоВременноеХранилище(ПолученныйОбъект);

Дальше на сервере получаешь из хранилища
7 Базис
 
naïve
17.05.18
13:07
Работать с эксельными файлами надо на клиенте - и проще, и нет необходимости покупки больших лицензий на Excel.
8 3achem
 
17.05.18
13:15
(6) Извините, я дичь написал и не правильно понял задачу
9 Pro100
 
17.05.18
13:27
(7)
Ок, я готов работать на клиенте, подскажите как это сделать? У меня не получается... Как с макетом у которого тип ActiveDocument работать на клиенте? если клиент и сервер это разные компьютеры...
Может конечно руки не оттуда растут )))))
10 Вафель
 
17.05.18
13:31
(6) так давно уже нельзя
11 AlvlSpb
 
17.05.18
13:49
(9) Как вариант (не пробовал, но вроде должно работать)
Получаешь файл из макета на сервере, сохраняешь на диск. Получаешь файл сом объектом, делаешь все что надо, сохраняешь и загружаешь назад в макет
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан