1. zhan.87 22.12.16 13:55 Сейчас в теме

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

Здравствуйте!
Просьба помочь с выгрузкой из 1С в Excel.
Проблема такова: есть форма отчета, которая содержит несколько страниц. В каждой странице есть свои ПолеТабличногоДокумента. При выгрузке в Excel надо, чтобы данные страницы сохранились в один файл.
Что сделано: сделана выгрузка в один файл с именем страниц вместо листов в Excel.
Теперь надо чтобы данные с ПолеТабличногоДокумента грузились в данные листы. Заполнять каждую ячейку
Лист.Cells(1, 1).Value таким образом невозможно, т.к. таблицы огромные и объемные.
Есть ли функция которая перекидывает весь ТабДок в Лист Excel?
Заранее спасибо за помощь!
Ответы
Избранное Подписка Сортировка: Древо
3. Xershi 791 22.12.16 14:14 Сейчас в теме
(1) как уже написали есть простой метод. Вместо 2 сделать 1!
И вопрос решен!
Ну если нужно велосипед писать, то не вижу проблемы перебрать второй лист и перенести его на первый. Но тут нужно знать синтаксис работы с Эксель.
2. alexx2510 29 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 1998 22.12.16 14:21 Сейчас в теме
(4) делал как-то такую штуку для отчетов, отправляемых контрагенту. Типа описывался пакет отчетов, потом они формировались, сохранялись в xls(x). Дальше алгоритм такой: создается новый объект через СОМ для экселя, в него добавляется страница, именуется, в нее вставляется файл. http://www.forum.mista.ru/topic.php?id=615419
6. vadim1011985 73 22.12.16 14:22 Сейчас в теме
Как вариант можно попробовать следующее
каждый табДок сохранить средствами 1с в файл excel

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

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

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

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

Вакансии

Программист 1С
Новосибирск
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Программист 1С
Краснодар
зарплата от 70 000 руб.
Полный день

Старший консультант-аналитик 1С БИТ.Финанс
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 150 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 170 000 руб. до 200 000 руб.
Полный день