Имя: Пароль:
1C
1С v8
Вызрузка в Эксель долго работает, как ускорить? ☑
0 Shur1cIT
 
02.04.13
✎
14:35
Выгружаю данные из 1С, процессор загружается на 100% начал смотреть в чем причина, оказалось эти значения эксель использует в своих формулах итд, вопрос как при программном открытии эксель отключить вычисления в формулах? второй вопрос как значение сохранить в эксели как число? вот кусок кода выгрузки.

Процедура Выгрузить()
   ТабПлатежей = ПолучитьДанныеДляВыгрузки();    
   Попытка
       // Загрузка объекта Microsoft Excel
       Состояние("Выгрузка данных из 1С в Microsoft Excel...");
       ExcelПриложение = Новый COMОбъект("Excel.Application");
   Исключение
       Сообщить("Ошибка при запуске Microsoft Excel."
       + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
       Возврат;
   КонецПопытки;
   Книга = ExcelПриложение.WorkBooks.Open(ФайлДДС);
   //ExcelПриложение.Visible = 1;    
   Лист = Книга.WorkSheets(СокрЛП(ИмяЛистаДляВыгрузки));// лист для загрузки    
   НомерСтроки = НомерСтрокиДляНачалаЗагрузки;
   Для Каждого Строка ИЗ ТабПлатежей Цикл
       Лист.Cells(НомерСтроки, 1).Value  = Формат(Строка.Дата,"ДЛФ=D");  
       Лист.Cells(НомерСтроки, 2).Value  = СокрЛП(Строка.КодГр);
       Лист.Cells(НомерСтроки, 3).Value  = СокрЛП(Строка.КодСтатьи);
       Лист.Cells(НомерСтроки, 4).Value  = Формат(Строка.Дебет ,"ЧЦ=15; ЧДЦ=2; ЧГ=");
       Лист.Cells(НомерСтроки, 5).Value  = Формат(Строка.Кредит,"ЧЦ=15; ЧДЦ=2; ЧГ=");
       Лист.Cells(НомерСтроки, 7).Value  = СокрЛП(Строка.Контрагент);
       Лист.Cells(НомерСтроки, 8).Value  = СокрЛП(Строка.НазначениеПлатежа);
       Лист.Cells(НомерСтроки, 10).Value  = Строка(Строка.Неделя)+"-я неделя";
       Лист.Cells(НомерСтроки, 12).Value = ПолучитьКомпаниюВФорматеДДС(Строка.Компания);
       Лист.Cells(НомерСтроки, 13).Value = Строка.РуководительЦФО;
       Лист.Cells(НомерСтроки, 14).Value = Формат(Строка.ДебетВВалюте ,"ЧЦ=15; ЧДЦ=2; ЧГ=");
       Лист.Cells(НомерСтроки, 15).Value = Формат(Строка.КредитВВалюте,"ЧЦ=15; ЧДЦ=2; ЧГ=");
       Лист.Cells(НомерСтроки, 16).Value = Формат(Строка.КурсНаДату   ,"ЧЦ=15; ЧДЦ=2; ЧГ=");
       НомерСтроки = НомерСтроки + 1;
       Сообщить(НомерСтроки);
   КонецЦикла;
   Сообщить("КОНЕЦ!");    
   Книга.SaveAs(ФайлДДС);    
   ExcelПриложение.Application.Quit();
Конецпроцедуры
1 Wobland
 
02.04.13
✎
14:36
перед открытием грохаешь файл - формулы пропадают
2 Shur1cIT
 
02.04.13
✎
14:39
(1) формулы в дальнейшим пользователям нужны, нужно вычисление в ячейках временно отключить
3 EugeniaK
 
02.04.13
✎
14:44
(0)
Чтобы получить число в файле, нужно записывать число.
Т.е. вместо
Лист.Cells(НомерСтроки, 14).Value = Формат(Строка.ДебетВВалюте ,"ЧЦ=15; ЧДЦ=2; ЧГ=");
указывать
Лист.Cells(НомерСтроки, 14).Value =Строка.ДебетВВалюте;
А формат задавать форматом ячейки Екселя
4 Нуф-Нуф
 
02.04.13
✎
14:45
получить ТабличныйДокумент, сохранить как эксель
5 Иде я?
 
02.04.13
✎
14:48
Используй OpenXml
6 Shur1cIT
 
02.04.13
✎
14:50
(4) (5) У меня в файле уже есть данные мало того есть они даже на том листе куда я выгружаю, мне необходимо аккуратно дополнить их. В эксели транзакции есть?
7 dk
 
02.04.13
✎
14:53
Application.Calculation = xlCalculationManual
потом
Application.Calculation = xlCalculationAutomatic
8 dk
 
02.04.13
✎
14:54
+
Application.ScreenUpdating = Ложь;
....
Application.ScreenUpdating = Истина;
9 Shur1cIT
 
02.04.13
✎
17:03
(7) ок спасибо взлетело