Уведомления
Очистить все

Универсальная процедура передачи Таблицы значений в Excel (1С)

1 Записи
1 Пользователи
0 Likes
234 Просмотры
96-150 Okolokompa Форум
(@sadovod)
Prominent Member
Присоединился: 4 года назад
Записи: 258
Создатель темы  
//Параметры Таблица значений - ТЗ которую надо передать в Excel
//НазОтч - Название отчета - текст просто заголовок книги Excel
//Вычет не актуален убрать руки не доходят ставить на его месте 0
Процедура ГлКопироватьВExcel(ТЗ,НазвОтч,Вычет) Экспорт
	
	Если ТЗ.КоличествоСтрок() > 0 Тогда
		Excel = СоздатьОбъект("Excel.Application");
		Excel.Caption = НазвОтч;
		NewWorkBook   = Excel.Workbooks;
		WorkBook      = NewWorkBook.Add();
		
		Для Н = 1 По ТЗ.КоличествоКолонок() Цикл      
			Если ТЗ.ВидимостьКолонки(Н) = 1 Тогда
				Т ="";      
				ТЗ.ПолучитьПараметрыКолонки(Н,,,,Т,,,);
				Excel.Cells(1,Н).Value = Строка(Т);
			КонецЕсли;
		КонецЦикла;
		
		ТЗ.ВыбратьСтроки();
		Пока ТЗ.ПолучитьСтроку() = 1 Цикл
			
			Процент = (Цел(ТЗ.НомерСтроки) / Цел(ТЗ.КоличествоСтрок()) * 100);
			
			Для Н = 1 По ТЗ.КоличествоКолонок() - Вычет Цикл
				Если ТЗ.ВидимостьКолонки(Н) = 1 Тогда
					Зн = ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,Н);
					Если ТипЗначения(Зн) = 1 Тогда
						Excel.Cells(ТЗ.НомерСтроки+1,Н).Value = Строка(Формат(Зн,"Ч15.2"));
					ИначеЕсли ТипЗначения(Зн) = 3 Тогда
						Если ЗН = Дата(0) Тогда
							ЗН = "";
						Иначе
							ЗН = Строка(Зн);
						КонецЕсли;
						Excel.Cells(ТЗ.НомерСтроки+1,Н).Value = Зн;
					Иначе
						Excel.Cells(ТЗ.НомерСтроки+1,Н).Value = Строка(Зн);
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
			
			Состояние ("Подготавливаю данные для передачи в Excel."+Цел(Процент)+"%");
			
		КонецЦикла;
		Excel.Visible = 1;
	Иначе
		Предупреждение ("Нет данных для передачи в Excel");
	КонецЕсли;
	
КонецПроцедуры

   
Цитата
Поделиться: