Выгрузка несколько табличных документов из 1C в один файл Excel

1. zhan.87 22.12.16 13:55 Сейчас в теме
Здравствуйте!
Просьба помочь с выгрузкой из 1С в Excel.
Проблема такова: есть форма отчета, которая содержит несколько страниц. В каждой странице есть свои ПолеТабличногоДокумента. При выгрузке в Excel надо, чтобы данные страницы сохранились в один файл.
Что сделано: сделана выгрузка в один файл с именем страниц вместо листов в Excel.
Теперь надо чтобы данные с ПолеТабличногоДокумента грузились в данные листы. Заполнять каждую ячейку
Лист.Cells(1, 1).Value таким образом невозможно, т.к. таблицы огромные и объемные.
Есть ли функция которая перекидывает весь ТабДок в Лист Excel?
Заранее спасибо за помощь!
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1479 22.12.16 14:14 Сейчас в теме
(1) как уже написали есть простой метод. Вместо 2 сделать 1!
И вопрос решен!
Ну если нужно велосипед писать, то не вижу проблемы перебрать второй лист и перенести его на первый. Но тут нужно знать синтаксис работы с Эксель.
2. alexx2510 38 22.12.16 14:10 Сейчас в теме
Если есть общий табличный документ, то что мешает его записать записать в формате excel?
или нужно, чтобы каждая страница из формы отчета на отдельной странице в общем excel была?
4. zhan.87 22.12.16 14:17 Сейчас в теме
(2) Общего ТабДока нет. Есть отдельные страницы на форме. Например, ТабДок1, ТабДок2, ТабДок3.
И эти страницы должны быть перенесены в общую книгу Excel с листами ТабДок1, ТабДок2, ТабДок3. по нажатию кнопки.
5. starik-2005 3036 22.12.16 14:21 Сейчас в теме
(4) делал как-то такую штуку для отчетов, отправляемых контрагенту. Типа описывался пакет отчетов, потом они формировались, сохранялись в xls(x). Дальше алгоритм такой: создается новый объект через СОМ для экселя, в него добавляется страница, именуется, в нее вставляется файл. http://www.forum.mista.ru/topic.php?id=615419
6. vadim1011985 99 22.12.16 14:22 Сейчас в теме
Как вариант можно попробовать следующее
каждый табДок сохранить средствами 1с в файл excel

Далее создать общий Excel и командами копировать из одно файла в другой в нужные страницы

по макросу выходит так

Cells.Select
Range("B18").Activate
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Paste
(5) - опередил
7. alexx2510 38 22.12.16 14:23 Сейчас в теме
(4) выгрузить все в отдельные excel, а затем с помощью метода Copy скопировать отдельные файлы в листы
8. zhan.87 23.12.16 05:38 Сейчас в теме
(7) с помощью метода Copy скопировать отдельные файлы в листы - это слишком долго. Конечно данная версия рассматривалась. Но именно так мне не надо. Мне надо одной кнопкой выгрузить в excel все мои страницы.
9. alexx2510 38 23.12.16 10:36 Сейчас в теме
(8)
Мне надо одной кнопкой выгрузить в excel все мои страницы

так оно и будет одной кнопкой.
под Copy я имел ввиду не ручной копи-паст, а метод Copy у COM объекта Excel
10. zhan.87 09.03.17 09:22 Сейчас в теме
(7) Проблема решилась именно таким образом. Создание временных файлов и в дальнейшем копирование в один эксель.
Пример кода прилагаю, может кому поможет:
Попытка
      // Загрузка объекта Microsoft Excel
      Состояние("Выгрузка данных из 1С в Microsoft Excel...");
      ExcelПриложение = Новый COMОбъект("Excel.Application");
	  ExcelПриложение2 = Новый COMОбъект("Excel.Application");

    Исключение
      Сообщить("Ошибка при запуске Microsoft Excel."
        + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
      Возврат;
    КонецПопытки;

        WorkBook = ExcelПриложение.WorkBooks.Add();
	Для каждого Элемент из ЭтаФорма.ЭлементыФормы цикл
	Если Тип(Элемент) =Тип("ПолеТабличногоДокумента") тогда
		 		ТДок = Элемент;
		
	Первый = Истина; // у нас уже есть один лист, надо использовать его
    	ПрошлыйЛист = Неопределено; 
		
	ВрФайл = ПолучитьИмяВременногоФайла("xls");
	 Элемент.Записать(ВрФайл, ТипФайлаТабличногоДокумента.XLS);
		
          Книга = WorkBook.Worksheets.Add();
		
	  Книга.Application.Sheets(1).Name = Элемент.Имя;
		
	  мКнига = ExcelПриложение2.Workbooks.Open(ВрФайл);
	  мКнига.Application.Sheets(1).Cells.Select();
	  ExcelПриложение2.Selection.Copy();       
		
         Если Первый Тогда // Используем созданный автоматически
            НовыйЛист = Книга.Application.Sheets(1);
			ExcelПриложение.DisplayAlerts = 0;
	    Попытка	
			НовыйЛист.Paste(); 
			Исключение
	    КонецПопытки;	
			ExcelПриложение.DisplayAlerts = 1;

            Первый = Ложь;
        Иначе // добавляем новый
            НовыйЛист = Книга.Application.Sheets.Add(, ПрошлыйЛист); // Добавляем новый лист после прошлого
		КонецЕсли;
		ExcelПриложение2.DisplayAlerts = 0;
        мКнига = ExcelПриложение2.Workbooks.Close();		
		ExcelПриложение2.DisplayAlerts = 1;
     
		 
	КонецЕсли;	
	КонецЦикла;	
    ExcelПриложение.Quit();

Показать
11. пользователь 09.03.17 12:06
Сообщение было скрыто модератором.
...
12. Sashares 34 17.10.19 09:52 Сейчас в теме
В режиме совместимости 8.3.12 и выше в стандартном функционале появилась возможность сохранять несколько табличных документов в 1 эксель файл, на разные страницы.
Оставьте свое сообщение

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