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

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

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

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

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

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

Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

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

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству