(7) в 8.2 этой проблемы нет
ТабличныйДокумент.Записать (SpreadsheetDocument.Write)
ТабличныйДокумент (SpreadsheetDocument)
Записать (Write)
Синтаксис:
Записать(<ИмяФайла>, <ТипФайлаТаблицы>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка. Имя файла, в котором сохраняется табличный документ.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента. Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
При работе на сервере, веб клиенте или через внешнее соединение нет возможности сохранять в формате XLS95.
При работе на веб-клиенте вызов метода выполняет обращение к серверу.
+4
Процедура сохраняет табличный документ в файл excel и открывает его
Код 1C v 8.х
Процедура ОткрытьТабличныйДокументВExcel(ТабДокумент,ИмяФайла) Экспорт
ИмяФайла = Строка(ИмяФайла) + ".xls";
Каталог = КаталогВременныхФайлов();
ПолныйПутьКФайлу = Каталог + ИмяФайла;
Попытка
ТабДокумент.Записать(ПолныйПутьКФайлу,ТипФайлаТабличногоДокумента.XLS);
Сообщить("Записан новый файл " + ПолныйПутьКФайлу);
ЗапуститьПриложение(ПолныйПутьКФайлу);
Исключение
СообщитьОбОшибке(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
- Главная
- О сайте
- Главная
- Содержание
Категории
—>
рубрики: 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.
Недостатки метода
- Если макет достаточно сложный, есть вероятность, что он может сохраниться недостаточно корректно. Плюс могут возникать проблемы с форматом данных.
Как выгрузить документ, отчет из 1С 8.3 в Excel
Часто у пользователей 1С возникает вопрос: как загрузить (сохранить) документ или отчет в Excel? На самом деле, сделать это довольно просто. Рассмотрим действия на примере 1С 8.3 Бухгалтерия предприятия 3.0.
Как из 1С 8.3 выгрузить в Excel оборотно-сальдовую ведомость
Предположим, нам необходимо сохранить отчет (или другую печатную форму) в формате Excel.
Для примера, сформируем Оборотно-сальдовую ведомость ( Отчеты — Стандартные — Оборотно-сальдовая ведомость ).
Зайдем в пункт меню Файл — Сохранить (или Сохранить как ). Вызвать команду Сохранить можно используя горячие клавиши — Ctrl+S.
Указываем папку — куда сохранить документ, задаем имя файла и выбираем Тип файла — Лист Excel (*.xls) или Лист Excel2007-…(*.xlsx) — это разные версии программы Excel. Можно сохранить в обоих форматах и посмотреть какой вас больше устроит. Также, при сохранении доступны и другие форматы файла. Нажимаем кнопку Сохранить .
В нашем примере мы выбрали папку Документы из 1С и задали имя файла — ОСВ за 9 месяцев. Для примера, сохраняем в разных форматах Excel.
После сохранения документы будет находиться в указанной папке.
Открываться будут оба файла, т.к. более ранние версии документов поддерживаются более поздними версиями программ.
Как в 1С сохранить документ в Excel
Есть еще один способ как сохранить документ в 1С в формате Excel.
Предположим, нам надо сохранить Счет , Счет-фактуру или Платежное поручение , для распечатки на другом компьютере или отправке по электронной почте.
Рассмотрим сохранение на примере документа Платежное поручение . Сформируем его печатную форму и среди кнопок на панели инструментов видим кнопку с дискетой .
При нажатии, открывается окно сохранения документа, где мы указываем папку — куда сохранить и выбираем нужный формат. В нашем случае это — Лист Microsoft Excel. Устанавливаем галочку и нажимаем кнопку Готово . Документ сохранен в папку.
Выгрузка таблиц из 1С в Эксель
Иногда возникает необходимость сформировать список из данных табличных частей журналов документов, справочников и т.п. При этом можно установить отбор нужных элементов (дата, наименование контрагента). Рассмотрим пример.
Мы хотим вывести список Платежных поручений по уплате налогов и взносов за период.
Для выбора документов можно выделить их, удерживая кнопку Ctrl или Shift, а также используя горячие клавиши для выделения группы строк. После чего нажимаем кнопку Еще и выбираем команду Вывести список .
В открывшемся окне настраиваем, какие колонки нам нужно вывести и выбираем — выводить в Табличный документ . Если мы выделили группу строк в списке, то установим галочку — выводить Только выделенные . Нажимаем ОК и список готов.
Выглядит он следующим образом.
Получившийся отчет можно сохранить в любом формате, в том числе Excel — *.xls. Для этого (как описывалось выше) выбираем команду Сохранить (или Сохранить как ) в меню Файл и задаем параметры.
Или же воспользуемся кнопкой Сохранить (в виде дискеты) — она доступна в верхней части окна программы 1С 8.3.
Эти действия можно выполнять с любыми списками программы 1С.
При работе с большими списками, например, справочник Номенклатура , можно устанавливать дополнительный отбор и делать группировку, устанавливать порядок сортировки данных.
Поэтому перед формированием любого списка следует обратить внимание на команду Настройка списка в кнопке Еще .
Как сохранить данные ячеек таблицы из 1С в Excel
Иногда возникаем необходимость скопировать из отчета или документа часть данных. Сделать это можно обычным копированием. Для этого выделяем часть нужных ячеек и нажав правой кнопкой мышки выбираем команду Копировать (или сочетание клавиш Ctrl+C).
Перейдя в программу Excel с помощью команды Вставить , добавляем в таблицу скопированный фрагмент. Этот способ работает со всеми данными в 1С, как в сформированных таблицах, так и с ячейками форм — в справочниках, журналах, документах.
- Выгрузка в 1С из xml: как выгрузить данные из 1С 8.3 и загрузить в 1С 8.3
- Загрузка из Excel в 1С 8.3
- Горячие клавиши в 1С
- Поиск и замена значений 1С 8.3
- Групповое перепроведение документов в 1С 8.3 Бухгалтерия 3.0
- Групповая обработка справочников и документов в 1С 8.3
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
- В справочник Контрагенты можно загружать данные из таблиц. Это особенно.Иногда возникают ситуации, когда необходимо сделать копию информационной базы 1С.Иногда в работе сталкиваешься с ситуацией, когда возникает необходимость перенести.В справочнике Номенклатура можно загружать цены номенклатуры из подготовленных таблиц.
(10 оценок, среднее: 3,60 из 5)
Обсуждение (3)
Добрый день!
Спасибо за доступ.
Вопрос: как на новой платформе 1С:Предприятие 8.3 (8.3.16.1063) выгрузить отчет в формате Эксель? куда пропала в верхней панеле кнопка — Файл слева. и почему справа — нет возможности ни напечатать отчет ни сохранить его в каком либо другом формате?
Приложение
Вопрос — как сохранить отчет в формате Excel на новой платформе 1С:Предприятие 8.3 (8.3.16.1063).
Спасибо за внимание к нашим материалам и интересный вопрос.
Возможность сохранить документ есть и в платформе 8.3.16. Просто сам процесс оптимизирован и стал удобнее.
Подробнее в обсуждении по ссылке
Платформа 8.3.16, как сохранить табличный документ
.
Вы можете задать еще вопросов
Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку «Задать вопрос», я соглашаюсь с
регламентом БухЭксперт8.ру >>
Для анализа способов записи мы создали обработку, которая записывает файл Excel в двух вариантах. Форма обработки показана ниже:
Обработка выполняет запись 3 строк, в каждой строке 5 значений и одна картинка. Код обработки может выполняться как на клиенте, так и на сервере.
Вы можете скачать обработку и ознакомиться с ее работой по ссылке:
Выгрузка через Табличный документ
Это один из самых простых способов записи в xlsx и xls. В 1С в этом варианте Вы будете работать с объектом ТабличныйДокумент. Ниже показан пример записи в табличный документ, который Вы также можете найти в прилагаемой выше обработке:
&НаКлиенте Процедура ВыполнитьЗаписьЧерезТабличныйДокумент() ТабДок = Новый ТабличныйДокумент; Для СтрокаНомер = 1 По 3 Цикл //Записываем значения строки Для КолонкаНомер = 1 По 5 Цикл Область = ТабДок.Область(СтрокаНомер, КолонкаНомер); Область.Текст = СтрокаНомер * КолонкаНомер; КонецЦикла; //Записываем изображение Область = ТабДок.Область(СтрокаНомер, 6); Область.Картинка = Элементы["Изображение" + СтрокаНомер].Картинка; КонецЦикла; ТипФайла = ТипФайлаТабличногоДокумента.XLSX; //Если запись в формате xls - тип файла ТипФайлаТабличногоДокумента.XLS97 ТабДок.Записать(Каталог + "Тест.xlsx", ТипФайла); КонецПроцедуры
Плюсы данного метода записи:
- Не нужно устанавливать Excel на клиенте/сервере.
- Не нужно реализовывать масштабирование изображений — Вы устанавливаете только ширину/высоту ячейки.
- Высокая скорость записи т.к. не используется прослойка в виде COMОбъекта.
Минусы:
- Нет возможности устанавливать формулы для ячеек.
- Неконтролируемая конвертация табличного документа в документ Excel. Как пример — могут смещаться изображения.
Замер производительности показывает общее время записи 0,28 сек.
Выгрузка через Excel
В этом варианте запись выполняется с помощью COMОбъекта Excel — устанавливаем соединение с Excel, создаем книгу и размещаем данные на ее листах. Обязательно закрываем книгу и соединение!
&НаКлиенте Процедура ВыполнитьЗаписьЧерезExcel() Эксель = Новый COMОбъект("Excel.Application"); Эксель.DisplayAlerts = 0; Эксель.ScreenUpdating = 0; Эксель.EnableEvents = 0; Книга = Эксель.WorkBooks.Add(); Лист = Книга.WorkSheets(1); Для СтрокаНомер = 1 По 3 Цикл //Записываем значения строки Для КолонкаНомер = 1 По 5 Цикл Лист.Cells(СтрокаНомер, КолонкаНомер).Value = СтрокаНомер * КолонкаНомер; КонецЦикла; //Записываем изображение СтрокаКартинка = Элементы["Изображение" + СтрокаНомер].Картинка; ВременныйФайл = ПолучитьИмяВременногоФайла("" + СтрокаКартинка.Формат()); СтрокаКартинка.Записать(ВременныйФайл); ЛистИзображение = Лист.Shapes.AddPicture(ВременныйФайл, Ложь, Истина, Лист.Cells(СтрокаНомер, 6).Left + 1, Лист.Cells(СтрокаНомер, 6).Top + 1, -1, -1); ЛистИзображение.Placement = 1; ЛистИзображение.LockAspectRatio = 0; //Масштабирование изображения ЛистИзображение.Width = 47; ЛистИзображение.Height = 29; Лист.Rows(СтрокаНомер).RowHeight = 33; ЛистИзображение.Height = 29; УдалитьФайлы(ВременныйФайл); КонецЦикла; ТипФайла = 51; //Если запись в формате xls - тип файла -4143 Книга.SaveAs(Каталог + "Тест.xlsx", ТипФайла); Попытка Книга.Close(Ложь); Эксель.DisplayAlerts = 1; Эксель.Quit(); Исключение Информация = ИнформацияОбОшибке(); Сообщить(Информация.Описание); КонецПопытки; КонецПроцедуры
Плюсы данного метода записи:
- Полный контроль над процессом записи.
- Доступ практически ко всем возможностям Excel.
Минусы:
- Нужно устанавливать Excel на клиенте/сервере.
- Нужно реализовывать масштабирование изображений. Алгоритм записи должен позиционировать изображение в ячейке устанавливая ширину и высоту. Также нужно настраивать высоту строки.
- Низкая скорость записи.
Замер производительности показывает общее время записи 0,86 сек. Это в 3 раза медленнее чем запись через Табличный документ. По своему опыту можем отметить — медленнее может быть в 10 и более раз!
Итоги
При выборе варианта выгрузки лучше смотреть на поставленную задачу. Оптимально использовать запись через Табличный документ — многие моменты записи будут упрощены. Можно объединять 2 варианта записи — основу записывать через Табличный документ, а формулы добавлять с использованием Excel. Такая запись будет производительнее чем полная запись через Excel.
Наши разработки:
1С сохранить табличный документ в pdf, xlsx, docx, txt, html файл программно
Пример процедуры
&НаСервере Процедура СохранитьВPDFНаСервере() ТабДок = Новый ТабличныйДокумент; Макет = Обработки.ТабличныйДокументСохранитьВPDF.ПолучитьМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ТабДок.Вывести(ОбластьМакета); МестоположениеФайла = "G:ProverkaZapisiТест.pdf"; ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.PDF); //Запись в Excel //МестоположениеФайла = "G:ProverkaZapisiТест.XLSX"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.XLSX); //Запись в Word //МестоположениеФайла = "G:ProverkaZapisiТест.docx"; //ТабДок.Записать(МестоположениеФайла , ТипФайлаТабличногоДокумента.DOCX); //Прочие форматы //ТипФайлаТабличногоДокумента поддерживает множество форматов //html5, mxl, txt, ods, можете поэксперементировать с различными форматами Сообщить("Файл успешно сохранен"); КонецПроцедуры
Обратите внимание, если возникла ошибка (нет доступа для записи в папку, при этом с правами у данного пользователя windows все в порядке) при выполнении строки с кодом «ТабДок.Записать ()». Выполните данную строку кода «&НаКлиенте».
Перед запуском обработки убедитесь, что на вашем компьютере существует директория «G:ProverkaZapisiТест.pdf»