Имя: Пароль:
1C
1С v8
УФ и Excel
,
0 first_may
 
05.12.17
16:11
Добрый день.

При работе в обычных формах с Excel я писал так
ЕстьExcel = Истина;
Попытка
   Excel = Новый COMОбъект("Excel.Application");
Исключение
   ЕстьExcel = Ложь;
КонецПопытки;
        
Если ЕстьExcel = Истина Тогда
и тд.


Начинаю изучать управляемые формы. Как реализовать подобное в управляемых формах?
1 Numerus Mikhail
 
05.12.17
16:12
Так же?
2 first_may
 
05.12.17
16:15
(1) скопировал модуль, но вот тут
Excel = Новый COMОбъект("Excel.Application");

значение получается Неопределено и дальше ничего не происходит.
3 Петрович 2018
 
05.12.17
16:17
(2) На клиенте или на сервере делаешь?
4 first_may
 
05.12.17
16:19
(3) вызывается в модуле обработки, но никаких директив нет перед функцией

Вот так написал

Функция СформироватьТабДок(МассивОбъектов, ФлажокExcel) Экспорт
    Если ФлажокExcel = Истина Тогда
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
        ТабДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLS);
        
        ЕстьExcel = Истина;
        Попытка
            Excel = Новый COMОбъект("Excel.Application");
            //Excel= ПолучитьCOMОбъект(СокрЛП(ИмяВременногоФайла));
        Исключение
            ЕстьExcel = Ложь;
        КонецПопытки;
        
        Если ЕстьExcel = Истина Тогда
5 first_may
 
05.12.17
16:19
(3) что надо добавить?
6 X Leshiy
 
05.12.17
16:22
Попытка
        Эксель = Новый COMОбъект("Excel.Application");
        Эксель.DisplayAlerts         = False;
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
7 Numerus Mikhail
 
05.12.17
16:23
(4) в модуле объекта? Возможно на сервере нет экселя?
8 Петрович 2018
 
05.12.17
16:23
(5) Ты &НаКлиенте или &НаСервере свой код выполняешь?
9 X Leshiy
 
05.12.17
16:24
(8) В модуле обработки, т.е. на сервере.
10 first_may
 
05.12.17
16:24
(8) нет, такой директивы не стоит
11 first_may
 
05.12.17
16:24
В модуле обработки
12 X Leshiy
 
05.12.17
16:25
(11) Сообщить(ОписаниеОшибки()); Добавь
13 Скиурус
 
05.12.17
16:25
Все что находится в модуле объекта выполняется на сервере. На сервере у вас нету установленного Экселя.
14 X Leshiy
 
05.12.17
16:26
Если тебе надо сохранить в ыксэль и открыть, сохраняй на клиенте и открывай.
15 Мимохожий Однако
 
05.12.17
16:26
Перенеси с модуль формы
16 first_may
 
05.12.17
16:26
(12) {ВнешняяОбработка.pplПанельУправленияДоставками.МодульОбъекта(102)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string
17 X Leshiy
 
05.12.17
16:27
(16) Ну, нет на сервере такого зверя.
18 X Leshiy
 
05.12.17
16:28
(16) Массив объектов это табличные документы?

Передавай на клиент и резвись :)
19 first_may
 
05.12.17
16:29
Ага, я понял ошибку. Пробую. Спасибо.
20 first_may
 
05.12.17
16:34
А можно кусочек текста, как правильно делать?
Если есть у кого то :)..
21 X Leshiy
 
05.12.17
16:38
&НаСервере
Функция СформироватьТабличныеДокументыНаСервере()
МассивТаблиц  = Новый Массив;

//тут делаем свои кошерные отчетики

Возврат Массив;

КонецФункции


&НаКлиенте
Процедура СформироватьФайлы()
   МассивТаблиц  = СформироватьТабличныеДокументыНаСервере();


//тут перебираем массив и сохраняем в вайлы

КонецПроцедуры

Эта вся пижня в модуле формы обработки или отчета.
22 Fish
 
05.12.17
16:39
Писать "Если ЕстьExcel = Истина Тогда" - моветон.
23 Бертыш
 
05.12.17
17:03
(22) Не моветон а семёрошнсоть в кодировании то есть Фууу
Исправь на
Если ЕстьExcel Тогда

Приучайся к хорошему -  к новым типам восьмёрки
24 Бертыш
 
05.12.17
17:04
Исправь это к (4)
Основная теорема систематики: Новые системы плодят новые проблемы.