Имя: Пароль:
1C
1С v8
Управляемые формы. Как закрыть EXCEL?
,
0 Невский Александр
 
18.03.12
11:34
В обработке есть процедура на клиенте, в ней выполняется следующая функция

Функция ВернутьСтруктуруДанныхEXCEL()
   xlLastCell = 11;
   
   Попытка
       Excel = Новый COMОбъект("Excel.Application");
       Excel.WorkBooks.Open(Объект.ФайлЗагрузки);
       ExcelЛист = Excel.Sheets(1);
       ТабличныйДокумент1 = ExcelЛист;
   Исключение
       Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
       Возврат ложь;
   КонецПопытки;
   
   ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
   RowCount = ActiveCell.Row;
   ColumnCount = ActiveCell.Column;
   
   АдресДанныхExcel = ПоместитьВоВременноеХранилище(ExcelЛист, ЭтаФорма.УникальныйИдентификатор);
   
   СтруктураПараметровExcel = Новый Структура;
   СтруктураПараметровExcel.Вставить("АдресЛистаEXCEL", АдресДанныхExcel);
   СтруктураПараметровExcel.Вставить("КоличествоСтрокExcel", RowCount);
   СтруктураПараметровExcel.Вставить("КоличествоКолонокExcel", ColumnCount);
   
   Возврат  СтруктураПараметровExcel;
КонецФункции

То есть я создаю EXCEL, в хранилище помещаю - первый его лист, и передаю на клиент структуру - адрес из хранилища, количество строк и количество столбцов в Excel

Далее у меня частями обрабатываются с клиента записи с этого листа

           
РезультатЗаписи = ОбработатьПорциюНаСервереЗагрузкаДанных(?(Счетчик = 1, Объект.ПерваяСтрокаДанныхТабличногоДокумента + 1, РазмерШага * (Счетчик - 1) + 1), Объект.КоличествоЗаписейВExcel + 1, КоличествоОшибок, СтруктураПараметров, СтруктураДанныхEXCEL);
           
Если СтруктураПараметров["ПрерываниеЦикла"] Тогда
   Прервать;
КонецЕсли;
           
Состояние("ЗагрузкаДанных", (РазмерШага * Счетчик) / КоличествоЭлементов  * 100);
           
ОбработкаПрерыванияПользователя();
           
ОбновитьОтображениеДанных();
КонецЦикла;        

Это вроде как все работает
Но вопрос в следующем - как мне потом закрыть приложение EXCEL?
Пытался 2 способами -
1) в начале модуля в переменных объявить такую переменную для сервера, и потом закрыть на сервере, но почему-то данную переменную на сервере программа не видит

2) передать эту же структуру на сервер, получить лист - и закрыть приложение, которым он открыт, то есть вот так

&НаСервере
Процедура ЗакрытьEXCEL(СтруктураДанныхEXCEL)
ПолучитьИзВременногоХранилища(СтруктураДанныхEXCEL.АдресЛистаEXCEL).Application.WorkBooks.Close();
КонецПроцедуры

Но это тоже не работает

Подскажите - что нужно сделать?
1 Невский Александр
 
18.03.12
11:35
"В обработке есть процедура на клиенте, из нее выполняется следующая функция на сервере, на клиент передается структура"

так правильнее
2 zak555
 
18.03.12
11:35
тебе надо в экселе сохранить ?
3 skunk
 
18.03.12
11:39
потому как сервер екселя на клиенте ...
4 ll13
 
18.03.12
11:43
ADO
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.