Имя: Пароль:
1C
1С v8
закрытие excel
,
0 djekting
 
06.11.18
11:40
собственно вопрос: сама книга закрывается но не срабатывает закрытие приложения, в чем может быть проблема?

.......
    ОбъектЭксель = Новый COMОбъект("Excel.Application");
    ОбъектЭксель.Visible = Истина;
    ОбъектЭксель.WindowState = 2;
    ОбъектЭксель.WindowState = 1;
    ОбъектЭксель.DisplayAlerts = 0;                       
    //ОбъектЭксель.AutomationSecurity = 3;      
    ОбъектЭксель.WorkBooks.Open(ПолноеИмяФайла);        

    ДобавитьОбработчик ОбъектЭксель.WorkbookBeforeClose, ПередЗакрытиемДокументаExcel;
.......
КонецПроцедуры

Процедура ПередЗакрытиемДокументаExcel(Документ, Отмена)
    ДокументИзменен = Истина;
    Попытка
        Если (НЕ Документ.Saved) ИЛИ (ДокументИзменен) Тогда
            ОбъектЭксель = Документ.Application;
        
            Документ.Save();

            УдалитьОбработчик ОбъектЭксель.WorkbookBeforeClose, ПередЗакрытиемДокументаExcel;             
            
            ПолноеИмяФайла = Документ.FullName;
            ИмяФайла = Сред(Документ.Name,40);
            id = Прав(Лев(Документ.Name,37),36);
            
            Документ.Close();
        
            
            Запрос = Новый Запрос;
            Запрос.Текст =
                "ВЫБРАТЬ
                |    ХранилищеДополнительнойИнформации.Ссылка,
                |    ХранилищеДополнительнойИнформации.ВерсияДанных,
                |    ХранилищеДополнительнойИнформации.ПометкаУдаления,
                |    ХранилищеДополнительнойИнформации.Предопределенный,
                |    ХранилищеДополнительнойИнформации.Наименование,
                |    ХранилищеДополнительнойИнформации.ВидДанных,
                |    ХранилищеДополнительнойИнформации.ИмяФайла,
                |    ХранилищеДополнительнойИнформации.Объект,
                |    ХранилищеДополнительнойИнформации.Хранилище,
                |    ХранилищеДополнительнойИнформации.ТекстФайла,
                |    ХранилищеДополнительнойИнформации.Представление
                |ИЗ
                |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
                |ГДЕ
                |    ХранилищеДополнительнойИнформации.Наименование = &Наименование";
            
            Запрос.УстановитьПараметр("Наименование", id);            
            РезультатЗапроса = Запрос.Выполнить();            
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
            
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                ТекОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПолноеИмяФайла), Новый СжатиеДанных);
                ТекОбъект.ИмяФайла = ИмяФайла;
                ТекОбъект.Наименование = id;
                ТекОбъект.Записать();
            КонецЦикла;
            ОбъектЭксель.DisplayAlerts = 1;
            ОбъектЭксель.Quit();
        КонецЕсли;
    Исключение
        Сообщить("" + ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры
1 Kigo_Kigo
 
06.11.18
11:43
А так ?
ВходExcel.ActiveWorkbook.Close();
ВходExcel.Quit();
2 djekting
 
06.11.18
11:47
нет, все равно остается открыто приложение
3 Кирпич
 
06.11.18
11:49
может

ОбъектЭксель.Quit();
ОбъектЭксель = 0;
4 djekting
 
06.11.18
11:52
(3)не помогло
есть особенность при первом закрытие приложение закрываться стало, но если открыть еще раз документ и закрыть то приложение опять висит.
5 djekting
 
06.11.18
11:53
до перезапуска 1с
6 Кирпич
 
06.11.18
11:54
(4) ну там весь смысл - ссылки на excel все рубить. нет ссылок - excel закрывается
7 VS-1976
 
06.11.18
11:59
(4) ОбъектЭксель.DisplayAlerts = 1;
Зачем включил? Реально может диалог выскочить и пока кнопки не нажмёшь, в невидимом Excel, он не завершится...
8 djekting
 
06.11.18
12:50
(7) непомогло
9 Мимохожий Однако
 
06.11.18
12:53
(0) Вот это зачем?
ОбъектЭксель.Visible = Истина;
10 kda26
 
06.11.18
13:01
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмяФайла);
Excel.Visible = 0;
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.6;
//Excel.Range("K1").Select(); //Заморозка колонок
//Excel.ActiveWindow.FreezePanes = True;
FullName = Excel.ActiveWorkbook.FullName;            
Excel.DisplayAlerts = false;
Excel.ActiveWorkbook.SaveAs(FullName, 51); // 18 - xls 97-2003; 51 - xlsx 2007-2013
//Excel.Visible = 1;       // если нужно поработать дальше с книгой
Excel.Application.Quit();
Excel = Неопределено;
11 djekting
 
06.11.18
13:44
(10) через SaveAs  получилось