+2
1С 8.x : Как выгрузить Таблицу значение в файл Excel?
Процедура СохранитьТаблицуВФайл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
Куда копать может кто подскажет ?
Нет, не спросил, почему лесенкой… спросил, почему в ШАХМАТНОМ ПОРЯДКЕ
Народная мудрость: Программу встречают по интерфейсу
Тема уже совсем не актуальна.
Краткое описание как работать с выгрузкой таблицы значения в 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С |
- Бухгалтерия предприятия 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.
Недостатки метода
- Если макет достаточно сложный, есть вероятность, что он может сохраниться недостаточно корректно. Плюс могут возникать проблемы с форматом данных.