Сервер занят

1. user1713496 11.12.21 12:20 Сейчас в теме
Доброго времени суток, уважаемые форумчане. Написал простенькую обработку заполнения эксель файла в учебной версии 1с, и в конце отрабатывания вылезает окно (прикрепленный скриншот). Подскажите, пожалуйста, как от него избавиться, чтоб файл нормально сохранялся.

	Excel = Новый COMОбъект("Excel.Application"); 
	
	ExcelBook = Excel.WorkBooks.Open(ВыборФайла);
	
	ExcelBook = ExcelBook.WorkSheets(НомерЛиста);
	
	xlCellTypeLastCell = 11;
	ExcelLastRow = ExcelBook.Cells.SpecialCells(xlCellTypeLastCell).Row;
	ExcelLastColumn = ExcelBook.Cells.SpecialCells(xlCellTypeLastCell).Column;
	
	МассивДат = Новый Массив;
	МояДата = НачалоДня(ТекущаяДата());
	
	Для Сч = 1 По 6 Цикл
		
		МассивДат.Добавить(МояДата);
		МояДата = МояДата - (60*60*24)
		
	КонецЦикла;
	
	КолвоЧасов = МассивДат.Количество() * 24;
	
	Для Колонка = 1 По КолвоЧасов Цикл
		
		Для СчИндекса = 0 По МассивДат.Количество()-1 Цикл
			Индекс = МассивДат.Количество() - СчИндекса- 1;
			Элемент = МассивДат[Индекс];
			
			Для СчДат = 1 По 24 Цикл
				
				ExcelBook.Cells(1, Колонка).Value = СокрЛП(Элемент);
				Элемент = Элемент + 3600;
				
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЦикла;

	Excel.Application.Quit();
	Excel.WorkBooks.Close()
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
4. user1713496 11.12.21 13:25 Сейчас в теме
Решил задачу так. Спасибо (2) за подсказку.
	Excel = Новый COMОбъект("Excel.Application"); 
  	Excel.DisplayAlerts = Ложь;
	ExcelBook = Excel.WorkBooks.Open(ВыборФайла);	
	ExcelSheet = ExcelBook.WorkSheets(НомерЛиста);
	
	xlCellTypeLastCell = 11;
	ExcelПоследняяСтрока = ExcelSheet.Cells.SpecialCells(xlCellTypeLastCell).Row;
	ExcelПоследняяКолонка = ExcelSheet.Cells.SpecialCells(xlCellTypeLastCell).Column;
	
	
	МассивДат = Новый Массив;
	МояДата = НачалоДня(ТекущаяДата());
	
	Для Сч = 1 По 6 Цикл
		
		МассивДат.Добавить(МояДата);
		МояДата = МояДата - (60*60*24)
		
	КонецЦикла;
	
	КолвоЧасов = МассивДат.Количество() * 24;
	
	Для Колонка = 3 По КолвоЧасов Цикл
		
		Для СчИндекса = 0 По МассивДат.Количество()-1 Цикл
			Индекс = МассивДат.Количество() - СчИндекса- 1;
			Элемент = МассивДат[Индекс];
			
			Для СчДат = 1 По 24 Цикл
				
				ExcelSheet.Cells(1, Колонка).Value = СокрЛП(Элемент);
				Элемент = Элемент + 3600;
				
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЦикла;  
	 
	ExcelBook.SaveAs(ВыборФайла);
	Excel.Application.Quit();
	Excel.WorkBooks.Close();
    Excel = "";
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. antz 11.12.21 12:26 Сейчас в теме
В конце процедуры надо очищать переменную с ком-объектом, чтобы процессы не висели в памяти.

Excel = "";
user1713496; +1 Ответить
3. user1713496 11.12.21 12:46 Сейчас в теме
(2)
Excel = "";
попробовал, не работает (
Excel.Application.Quit();
	Excel.WorkBooks.Close();
    Excel = "";
4. user1713496 11.12.21 13:25 Сейчас в теме
Решил задачу так. Спасибо (2) за подсказку.
	Excel = Новый COMОбъект("Excel.Application"); 
  	Excel.DisplayAlerts = Ложь;
	ExcelBook = Excel.WorkBooks.Open(ВыборФайла);	
	ExcelSheet = ExcelBook.WorkSheets(НомерЛиста);
	
	xlCellTypeLastCell = 11;
	ExcelПоследняяСтрока = ExcelSheet.Cells.SpecialCells(xlCellTypeLastCell).Row;
	ExcelПоследняяКолонка = ExcelSheet.Cells.SpecialCells(xlCellTypeLastCell).Column;
	
	
	МассивДат = Новый Массив;
	МояДата = НачалоДня(ТекущаяДата());
	
	Для Сч = 1 По 6 Цикл
		
		МассивДат.Добавить(МояДата);
		МояДата = МояДата - (60*60*24)
		
	КонецЦикла;
	
	КолвоЧасов = МассивДат.Количество() * 24;
	
	Для Колонка = 3 По КолвоЧасов Цикл
		
		Для СчИндекса = 0 По МассивДат.Количество()-1 Цикл
			Индекс = МассивДат.Количество() - СчИндекса- 1;
			Элемент = МассивДат[Индекс];
			
			Для СчДат = 1 По 24 Цикл
				
				ExcelSheet.Cells(1, Колонка).Value = СокрЛП(Элемент);
				Элемент = Элемент + 3600;
				
			КонецЦикла;
			
		КонецЦикла;
		
	КонецЦикла;  
	 
	ExcelBook.SaveAs(ВыборФайла);
	Excel.Application.Quit();
	Excel.WorkBooks.Close();
    Excel = "";
Показать
5. dehro 7 11.12.21 19:42 Сейчас в теме
Что за любовь к использованию внешних компонент?
Сформировать как табличный документ 1С, а потом записать его как xls.

И проще, и удобнее, и код понятнее.
user1713496; +1 Ответить
6. user1713496 12.12.21 15:49 Сейчас в теме
(5) соглашусь, изначально так и хотел делать, но мне еще нужно разные данные на разные листы вводить, а как это сделать с помощью табличного документа я не знаю, поэтому выбрал данный вариант.
7. dehro 7 13.12.21 08:20 Сейчас в теме
(6) Запросто.

ИмяФайла = "...........
Пакет = Новый ПакетОтображаемыхДокументов;

// Добавляем документы в пакет
ЭлементПакета1 = Пакет.Состав.Добавить();
ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент1, УникальныйИдентификатор);
ЭлементПакета2 = Пакет.Состав.Добавить();
ЭлементПакета2.Данные = ПоместитьВоВременноеХранилище(ТабличныйДокумент2, УникальныйИдентификатор);

Пакет.Записать(ИмяФайла, ТипФайлаПакетаОтображаемыхДокументов.XLSX);

Показать
9. user790708 13.12.21 10:57 Сейчас в теме
(5)Вставить формулу/ссылку? Заполнить шаблон? Сослаться на другую книгу?
10. dehro 7 13.12.21 11:06 Сейчас в теме
(9) Да, есть случаи когда этого недостаточно. К Вашим репликам можно добавить ещё добавление пароля на книгу, etc, etc, etc...
Функционал XLS гораздо шире, чем MXL.

Но, в большинстве случаев, хватает и MXL.

Какое бы сравнение привести:
Безусловно, в БЕЛАЗе можно перевезти больше, чем ВАЗ 2101. Но 10 кг сахара из супермаркета великолепно доедет и в копейке ;). Будет проще везде: на дорогах общего пользования, при парковке возле магазина, при погрузке и разгрузке из багажника.
8. user790708 13.12.21 10:55 Сейчас в теме
Excel.Application.Quit();
Excel.WorkBooks.Close();

Эти строки в другом порядке должны быть.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот