Как сохранить таблицу значений 1с в excel программно

 +2 

   

Распечатать

1С 8.x : Как выгрузить Таблицу значение в файл Excel?

Код 1C v 8.х

 Процедура СохранитьТаблицуВФайлExcel(Таблица, ПолноеИмяФайла="", ОткрыватьДиалогВыбораФайла=Истина, ВыгружаемыеКолонки="") Экспорт 

Если ПустаяСтрока(ПолноеИмяФайла) ИЛИ ОткрыватьДиалогВыбораФайла Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Заголовок = "Сохранение документа Excel";
Диалог.Фильтр = "Документ Excel (*.xls)|*.xls";
Диалог.Расширение = "xls";
Диалог.ПолноеИмяФайла = ПолноеИмяФайла;
Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойКаталогФайлов");
Если (Диалог.Выбрать()) И (НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла)) Тогда
ПолноеИмяФайла = Диалог.ПолноеИмяФайла;
Иначе
Возврат;
КонецЕсли;
КонецЕсли;

ФайлНаДиске = Новый Файл(ПолноеИмяФайла);

Попытка
// Загрузка Microsoft Excel
Состояние("Выгрузка данных из 1С в Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Книга = ExcelПриложение.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Исключение
Сообщить("Ошибка при загрузке Microsoft Excel."
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Если ПустаяСтрока(ВыгружаемыеКолонки) Тогда
ТаблицаВыгрузки = Таблица.Скопировать();
Иначе
ТаблицаВыгрузки = Таблица.Скопировать(, ВыгружаемыеКолонки);
КонецЕсли;

Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл
Лист.Cells(1, Кол + 1).Value = ТаблицаВыгрузки.Колонки[Кол].Заголовок;
КонецЦикла;

Попытка

Для Стр = 0 По ТаблицаВыгрузки.Количество()-1 Цикл

Для Кол = 0 По ТаблицаВыгрузки.Колонки.Количество()-1 Цикл

Если ТипЗнч(ТаблицаВыгрузки[Стр][Кол]) = Тип("Число") Тогда
// Установним формат для типа Число
//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "0,00";
Лист.Cells(Стр + 2, Кол + 1).Value = ТаблицаВыгрузки[Стр][Кол];
Иначе
// Для всех других типов установим формат "Текстовый"
//Лист.Cells(Стр + 2, Кол + 1).NumberFormat = "@";
Лист.Cells(Стр + 2, Кол + 1).Value = Строка(ТаблицаВыгрузки[Стр][Кол]);
КонецЕсли;

КонецЦикла;

КонецЦикла;

ExcelПриложение.DisplayAlerts = False;
Книга.SaveAs(ПолноеИмяФайла);
ExcelПриложение.ActiveWorkbook.Close();
ExcelПриложение.Quit();

Сообщить("Файл выгружен успешно: " + ПолноеИмяФайла);

Исключение

Сообщить("Ошибка записи данных файла :" + ПолноеИмяФайла);
Сообщить(ОписаниеОшибки());
Попытка
ExcelПриложение.Quit();
Исключение
КонецПопытки;

КонецПопытки;

КонецПроцедуры

Автор cobra77777, 23 июн 2014, 19:27

0 Пользователей и 1 гость просматривают эту тему.

Здравствуйте!

Как выгрузить таблицу значений в excel ?



самое простое создайте табличный документ, туда выведите свою таблицу значений, и этот табличный документ сохраните как файл Ексель.

если помогло нажмите: Спасибо!


Вывести таблицу значений в excel можно через преобразование ее к табличному документу. Сделать это быстро можно через построитель отчета. Примерно так:


    ТабДок = Новый ТабличныйДокумент;

        Построитель = Новый ПостроительОтчета();

    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТестоваяТаблица);
    Построитель.ВыводитьЗаголовокОтчета = Ложь;
    Построитель.Вывести(ТабДок );

    ИмяФайла = "C:UsersAbisSoftDesktoptest.xls";

    ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS97);
    ЗапуститьПриложение(ИмяФайла);

Недостаток в том, что работает только в толстом клиенте.


Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


сделал через таблицу значений (ТЗ) выгрузку в excel, но выгружается только ОТЧЕСТВО (Результат.xls и КОД прикреплён). Где подправить?


i = 1;

Для Каждого Стр из ТЗ Цикл

Лист.Cells (i,1).Value = Стр.СтраховойНомер;
Лист.Cells (i,2).Value = Стр.Фамилия;
Лист.Cells (i,3).Value = Стр.Имя;
Лист.Cells (i,4).Value = Стр.Отчество;

КонецЦикла;


Для размышления тебе…

i = 1;

Для Каждого Стр из ТЗ Цикл
i = i + 1;
Лист.Cells (i,1).Value = Стр.СтраховойНомер;
Лист.Cells (i,2).Value = Стр.Фамилия;
Лист.Cells (i,3).Value = Стр.Имя;
Лист.Cells (i,4).Value = Стр.Отчество;

КонецЦикла;

Добавлено: 29 июн 2014, 03:39


(Только не спрашивай почему вывод у тебя получается лесенкой = )) )

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


Да спасибо. Всё выгрузилось только в ШАХМАТНОМ ПОРЯДКЕ (см.Результат.xls), а как сделать в нормальном варианте (см.внизу) ?

Страховой номер  Фамилия   Иия    Отчество
111-222-333 44   Иванов    Иван   Иванович

и т.д.

Добавлено: 30 июн 2014, 09:03


Куда копать может кто подскажет ?


Нет, не спросил, почему лесенкой… спросил, почему в ШАХМАТНОМ ПОРЯДКЕ :ooifh::D :D

Народная мудрость: Программу встречают по интерфейсу


Тема уже совсем не актуальна.


Краткое описание как работать с выгрузкой таблицы значения в Excel, с коментариями что к чему, может кому и пригодится.

Функция ЧтениеТаблицы(ТабЗнач)
 
    Перем Excel;
 
    Excel = СоздатьОбъект("Excel.Application"); //Создаем объект Excel
 
    Excel.Visible = 1; //Определяем видимость документа 1-видимы; 0-Невидимый
 
 
    WB = Excel.Workbooks.Add(); //Добавляем книгу
 
    Sh = WB.ActiveSheet(); //Определяем активный лист
 
    Sh.Visible = 1; //Видимость листа 1-видимы; 0-Невидимый
 
 
    //Создаем на листе Excel колонки начиная с первой колонки i=1
 
    Для i=1 По ТабЗнач.КоличествоКолонок() Цикл
        Sh.Cells(1, i).Value = ТабЗнач.ПолучитьПараметрыКолонки(i);
    КонецЦикла;
 
    Row = 2; //Номер строки на листе Excel
 
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
 
        //Выводим строку состояния для строк кратных 10
 
        Если (ТабЗнач.НомерСтроки%10)=0 Тогда
            Состояние("Обработано "+ТабЗнач.НомерСтроки+"/"+ТабЗнач.КоличествоСтрок());
        КонецЕсли;
 
        //Заполняем столбцы на листе Excel для строки номер Row
 
        Для i=1 По ТабЗнач.КоличествоКолонок() Цикл
 
            Значение = ТабЗнач.ПолучитьЗначение(Row-1, i);
 
            //Переводим значение, не являющееся Числом,Строкой, Датой и Неопределенным, в тип Строка
 
            Если ТипЗначения(Значение)>3 Тогда
                Значение = Строка(Значение);
            КонецЕсли;
 
            //Установка формата данных ячейки на листе Excel
 
            Если ТипЗначения(Значение)=2 Тогда
                Sh.Cells(Row, i).NumberFormat = "@";
            КонецЕсли;
 
            //Устанавливаем текущее Значение в в ячейку листа Excel
 
            Sh.Cells(Row, i).Value = Значение;
 
        КонецЦикла;
 
        Row = Row + 1;
 
    КонецЦикла;
 
    Sh.Cells(1,1).AutoFilter(); //Устанавливаем фильтр
 
    Sh.Cells(2,1).Select(); //Выбор области для закрепления
 
    Excel.ActiveWindow.FreezePanes = 1; //Закрепляем область
 
 
    Sh = ""; //Обнуляем лист
 
    Excel = ""; //Обнуляем объект Excel
 
 
    Возврат WB; //Возвращаем книгу Excel
 
 
КонецФункции

Как выгрузить документы в Эксель

Обработка позволяет выгружать любые товарные документы по произвольному шаблону с настраиваемой структурой в MS Excel.

  • Бухгалтерия предприятия 3.0
  • Управление торговлей 11.4, 11.5
  • Управление торговлей 3 (KZ) *
  • Комплексная автоматизация 2.4 (KZ) *
  • Управление торговлей 3 (BY) **
  • Комплексная автоматизация 2.4 (BY) **
  • Управление предприятием ERP 2.4, 2.5
  • Комплексная автоматизация 2.4, 2.5
  • Розница 2.2, 2.3
  • BAS Управление торговлей 3 (UA) ***
  • BAS Комплексное управление предприятием 2 (UA) ***
  • BAS ERP (UA) ***

Наверняка, у вас есть много вопросов относительно оплаты (как оплатить, как получить разработку, не возникнут ли проблемы и т.п.).

Ответы на самые распространенные вопросы, относящиеся к процессу покупки моих разработок, приведены на странице заказа. Для перехода к ней нажмите Оплатить картой или Заказать счет .

Там же вы найдете мои контакты, на случай если останутся вопросы.

Нередко возникают ситуации, когда необходимо выгрузить какой-либо документ во внешний файл, чаще всего Excel (имеется в виду даже не сам документ, а табличная часть с товарами). Конечно, можно воспользоваться стандартной возможностью платформы, в командной панели табличной части выбрать пункт Вывести список и сохранить полученную таблицу в любом формате.

Но что делать, если необходимо помимо табличной части вывести какие-то дополнительные данные (например, артикул) или поменять порядок следования колонок?

Именно для решения таких задач и создан данный продукт.

Обработка делает выгрузку любых товарных документов по произвольному шаблону с настраиваемой структурой в MS Excel.

Разберем на конкретном примере: допустим, есть документ перемещения и нам необходимо его выгрузить в Excel по определенному шаблону. После добавление обработки в интерфейс появится соответствующая кнопка, жмем на нее:

кнопка выгрузки на форме документа

Откроется форма настроек, в которой нам необходимо настроить структуру Excel, т.е. определить состав колонок и источники значений для ячеек в колонках:

настройка выгрузки документа в эксель

  • самого документа (в названии поля префикс Шапка),
  • табличной части Товары (в названии поля префикс Товары),
  • основные свойства номенклатуры — код, артикул, штрихкод, единица измерения, ставка НДС, цена по виду цен,
  • любые дополнительные реквизиты номенклатуры.

Если в конкретной колонке значения нужно брать не из поля документа/номенклатуры, а выбирать всегда одно и то же значение, то колонку Реквизит на форме настроек не заполняем, а выбираем нужное значение в колонке Единое значение для всех строк.

Для каждой колонки Excel в настройках можем указать Заголовок (по умолчанию заполняется из синонима реквизита) и ширину (по умолчанию заполняется 15).

После заполнения настроек нажимаем на кнопку Выгрузить, система попросит указать папку для сохранения файла. Сохраненный Excel будет иметь именно ту структуру, которую мы выбрали в настройках:

готовый файл эксель

Название файла устанавливается автоматически и содержит имя файла, номер и дату.

Настройка структуры выгрузки сохраняется автоматически (в привязке к типу выгружаемого документа), вам не придется каждый раз ее настраивать.

Таким образом, с помощью данного документа можно настроить удобную выгрузку в Excel любого документа, у которого есть табличная часть Товары или Материалы.

Для скачивания этой разработки необходимо зарегистрироваться на сайте, потом авторизоваться и приобрести годовую подписку (стоит 950 руб). Эта подписка даст вам доступ более чем к 200 разработкам на сайте.

Данная обработка позволяет списывать ТМЦ, приобретенные через подотчетных лиц (по авансовому отчету), автоматически создавая документ «Требование-накладная».

Расширение отправляет настраиваемые уведомления пользователям при поступлении оплаты по заказам клиента (задача, e-mail, всплывающее окно).

Знайка, самый умный эксперт в Цветочном городе

Мнение эксперта

Знайка, самый умный эксперт в Цветочном городе

Если у вас есть вопросы, задавайте их мне!

Задать вопрос эксперту

Если Вы её создали в программном модуле объекта, то таблица значений будет существовать пока выполняется обращение к этому объекту. Если же вы хотите что-то уточнить, я с радостью помогу!

Таблица значений 1С — это универсальная коллекция значений, которую разработчик может использовать при программной разработке для реализации своих алгоритмов. По сути, таблица значений 1С представляет собой динамический набор значений, имеющих колонки и столбцы.
Как Сохранить Таблицу Значений 1с в Excel Программно • Регистрируйтесь в вконтакте

Таблица значений 1С |

  • Бухгалтерия предприятия 3.0
  • Управление торговлей 11.4, 11.5
  • Управление торговлей 3 (KZ) *
  • Комплексная автоматизация 2.4 (KZ) *
  • Управление торговлей 3 (BY) **
  • Комплексная автоматизация 2.4 (BY) **
  • Управление предприятием ERP 2.4, 2.5
  • Комплексная автоматизация 2.4, 2.5
  • Розница 2.2, 2.3
  • BAS Управление торговлей 3 (UA) ***
  • BAS Комплексное управление предприятием 2 (UA) ***
  • BAS ERP (UA) ***

Xylophone реализует принцип отделения модели данных от их представления. В процедуре выгрузки необходимо сформировать данные в формате XML (не беспокоясь о ячейках, шрифтах и разделительных линиях), а Xylophone, при помощи Excel-шаблона и дескриптора, описывающего порядок обхода вашего XML-файла с данными, сформирует результат, как показано на диаграмме:

  • Главная
  • О сайте
  • Главная
  • Содержание

Рукопашный бой Карташ

Категории

—>

рубрики: Excel | Дата: 15 июня, 2017

Если провести опрос среди программистов 1С на тему «Как сохранить информацию из 1С в файл ексель», то большинство голосов, как мне кажется займет вариант с созданием объекта Excel.Application с последующим заполнением листа с помощью методов и свойств встроенного в Excel языка VBA. Но многие ли из вас помнят вышеупомянутые методы и свойства? А ведь между тем есть способ который позволяет сделать это гораздо проще, только с использованием языка программирования 1С.

Для этого достаточно сформировать ТабличныйДокумент (сделать это можно как с использованием макета табличного документа, так и программно), а потом просто записать его с помощью метода Записать() сразу в файл Excel, благо платформа без проблем позволяет это сделать. Напомню, что синтаксис этого метода выглядит следующим образом

Записать(ИмяФайла, ТипФайлаТаблицы)
ИмяФайла — строка в которой указан путь к файлу;
ТипФайлаТаблицы — тип файла в который мы будем записывать табличный документ.
Платформа 1С предоставляет следующие типы файлов:

  • ANSITXT (ANSITXT)
  • DOCX (DOCX)
  • HTML (HTML)
  • HTML3 (HTML3)
  • HTML4 (HTML4)
  • HTML5 (HTML5)
  • MXL (MXL)
  • MXL7 (MXL7)
  • ODS (ODS)
  • PDF (PDF)
  • TXT (TXT)
  • XLS (XLS)
  • XLS95 (XLS95)
  • XLS97 (XLS97)
  • XLSX (XLSX)

Пример использования

В качестве примера создадим процедуру в которую в качестве параметра будет передаваться таблица значений, которую будем выводить в табличный документ, который в свою очередь будем сохранять в ексель.
Вот код этой процедуры




&НаСервере
Процедура ЗаписатьТаблицуЗначенийВФайлЕксель(Таблица)

	ТабДок = Новый ТабличныйДокумент;

	КоличествоКолонок = Таблица.Колонки.Количество();

	//Формируем строку с заголовками
	Для Счетчик = 1 По КоличествоКолонок Цикл

		ТекущаяКолонка = Таблица.Колонки[Счетчик - 1];
		ТабДок.Область("R1C" + Счетчик).Текст = ТекущаяКолонка.Имя;

	КонецЦикла;

	//Добавляем строки из таблицы
	НомерСтроки = 2;
	Для каждого СтрокаТаблицы Из Таблица Цикл

		Для НомерКолонки = 1 По КоличествоКолонок Цикл

			ТабДок.Область("R" + НомерСтроки + "C" + НомерКолонки).Текст = Строка(СтрокаТаблицы[НомерКолонки - 1]);

		КонецЦикла;
		НомерСтроки = НомерСтроки + 1;

	КонецЦикла;

	//Записываем табличный документ в файл Excel
	ТабДок.Записать("D:musorTest.xlsx", ТипФайлаТабличногоДокумента.XLSX);

КонецПроцедуры

В общем то все элементарно. Пусть у нас есть вот такая таблица значений:

Товар Количество
Яблоки 5
Груши 10

После того как прогнал ее через процедуру выше, получил вот такой результат в ексель

Достоинства метода

  • Простота. Не требуется знаний VBA. Доступны синтаксический контроль и отладка кода в процессе написания.
  • Не требуется наличия установленного Excel.

Недостатки метода

  • Если макет достаточно сложный, есть вероятность, что он может сохраниться недостаточно корректно. Плюс могут возникать проблемы с форматом данных.

Понравилась статья? Поделить с друзьями:
  • Как сохранить таблицу в microsoft word
  • Как сохранить таблицу в excel с фильтром
  • Как сохранить таблицу в excel под названием
  • Как сохранить таблицу в excel как шаблон
  • Как сохранить таблицу в excel как пдф