Имя: Пароль:
1C
1С v8
Закрывается эксель при закрытии обработки
0 Lunovar
 
04.03.16
11:32
Добрый день, подскажите как решить проблему.
Есть обработка у которой макет Эксель. Идея такая: обработка отрабатывает заполняет эксель и файл эксель остается открытым для изменения или сохранения пользователем. когда я подключаю обработку как внешнюю форму в базу и запускаю из документа. она отрабатывает файл эксель появляется на долю секунды и закрывается. как сделать так чтобы файл эксель не закрывался?

    Макет = ПолучитьМакет("Макет");              
    MSExcel = Макет.Получить();
    
    Книга = MSExcel.Application.workbooks(1);            
    Книга.Activate();
    ЛистДанных = Книга.sheets(1);                            
    
    ТЗПараметров= Новый ТаблицаЗначений;
    ТЗПараметров.Колонки.Добавить("ИмяПараметра",новый ОписаниеТипов("Строка"));  
    ТЗПараметров.Колонки.Добавить("ЗначениеПараметра",новый ОписаниеТипов("Строка"));
    
    ЗаполнитьОбщие(ТЗПараметров,СсылкаНаОбъект);
        
    УстановкаПараметровВДокументе(MSExcel, ТЗПараметров);  
    
    ТЗДокумента = ЗапросКДаннымДокумента();                  
    
    ЗаписьДанныхТабличнойЧастиВЭксель(ТЗДокумента, ЛистДанных);  

    MSExcel.Windows(1).Visible = Истина;
        
    MSExcel.Application.Visible = Истина;
            
    MSExcel.Activate();

З.Ы. если через файл-открыть запустить обработку файл заполняется и остается открытым, но как только я закрываю форму обработки файл Эксель закрывается тоже.
1 Lunovar
 
04.03.16
11:34
Платформа 8.3.6, конфигурация зуп 2.5
2 Lunovar
 
04.03.16
14:00
Получилось. Нужно было сначала сохранить в двоичные данные. конченый код может кому поможет.

Попытка
        MSExcel = Новый COMОбъект("Excel.Application");
     Исключение
        Сообщить(ОписаниеОшибки());
        Возврат ОписаниеОшибки();
    КонецПопытки;
    
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
    ДвоичныеДанные = ПолучитьМакет("Макет");
    ДвоичныеДанные.Записать(ИмяВременногоФайла);
    
    Книга = MSExcel.WorkBooks.Open(ИмяВременногоФайла);
    ЛистДанных = Книга.sheets(1);                             //лист
    
    //ТЗПараметров - те параметры которые будут подставляться в макет вместо <.....>
    ТЗПараметров= Новый ТаблицаЗначений;
    ТЗПараметров.Колонки.Добавить("ИмяПараметра",новый ОписаниеТипов("Строка"));  
    ТЗПараметров.Колонки.Добавить("ЗначениеПараметра",новый ОписаниеТипов("Строка"));
    
    ЗаполнитьОбщие(ТЗПараметров,СсылкаНаОбъект);
        
    УстановкаПараметровВДокументе(MSExcel, ТЗПараметров);   //заменяем параметры <...> в макете
    
    ТЗДокумента = ЗапросКДаннымДокумента();                   //получаем данные из документа ссылки
    
    ЗаписьДанныхТабличнойЧастиВЭксель(ТЗДокумента, ЛистДанных);  //обход результата таб части документа и записи в эксель    

    MSExcel.Windows(1).Visible = Истина;
        
    MSExcel.Application.Visible = Истина;
3 aleks_default
 
04.03.16
14:10
да уж, код звиздец какой "конченный"
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс