Выгрузка данных из программы 1С в книгу Excel
Не секрет, что среди офисных работников, в частности тех, которые заняты в расчетной и финансовой сфере, особенно популярны программы Excel и 1С. Поэтому довольно часто приходится производить обмен данными между этими приложениями. Но, к сожалению, далеко не все пользователи знают, как быстро это сделать. Давайте выясним, как выгрузить данные из 1С в документ Excel.
Выгрузка информации из 1C в Excel
Если загрузка данных из Excel в 1С – это довольно сложная процедура, автоматизировать которую можно только с помощью сторонних решений, то обратный процесс, а именно выгрузка из 1С в Эксель – это сравнительно простой набор действий. Его можно легко выполнить с помощью встроенных инструментов вышеуказанных программ, причем сделать это можно несколькими способами, в зависимости от того, что именно пользователю нужно перенести. Рассмотрим, как это выполнить на конкретных примерах в 1С версии 8.3.
Способ 1: копирование содержимого ячейки
Одна единица данных содержится в ячейке 1С. Её можно перенести в Эксель обычным методом копирования.

-
Выделяем ячейку в 1С, содержимое которой нужно скопировать. Кликаем по ней правой кнопкой мыши. В контекстном меню выбираем пункт «Копировать». Можно воспользоваться также универсальным способом, который действует в большинстве программ, работающих на ОС Windows: просто выделяем содержимое ячейки и набираем комбинацию клавиш на клавиатуре Ctrl+C.
Вместо этого действия можно после выделения ячейки, находясь во вкладке «Главная», щелкнуть по значку «Вставить», который расположен на ленте в блоке «Буфер обмена».

Содержимое ячейки 1С будет вставлено в Excel.

Способ 2: вставка списка в существующую книгу Excel
Но вышеуказанный способ подойдет лишь в том случае, если нужно перенести данные из одной ячейки. Когда же нужно совершить перенос целого списка, то следует воспользоваться другим способом, ведь копирование по одному элементу отберет очень много времени.

- Открываем любой список, журнал или справочник в 1С. Кликаем на кнопку «Все действия», которая должна располагаться вверху от обрабатываемого массива данных. Запускается меню. Выбираем в нем пункт «Вывести список».
- Открывается небольшое окошко вывода списка. Тут можно произвести некоторые настройки.
Поле «Выводить в» имеет два значения:
- Табличный документ;
- Текстовый документ.
По умолчанию установлен первый вариант. Для переноса данных в Эксель он как раз и подходит, так что тут мы ничего не меняем.
В блоке «Выводить колонки» можно указать, какие колонки из списка вы хотите перевести в Excel. Если вы собираетесь производить перенос всех данных, то эту настройку тоже не трогаем. Если же вы хотите произвести конвертацию без какого-то столбца или нескольких столбцов, то снимаем галочку с соответствующих элементов.

Список вставлен в документ.

Способ 3: создание новой книги Excel со списком
Также список из программы 1С можно сразу вывести в новый файл Эксель.

-
Выполняем все те шаги, которые были указаны в предыдущем способе до формирования списка в 1С в табличном варианте включительно. После этого жмем на кнопку вызова меню, которая расположена в верхней части окна в виде треугольника, вписанного в оранжевый круг. В запустившемся меню последовательно переходим по пунктам «Файл» и «Сохранить как…».
Ещё проще сделать переход, нажав на кнопку «Сохранить», которая имеет вид дискеты и расположена в блоке инструментов 1С в самом верху окна. Но такая возможность доступна только пользователям, которые применяют программу версии 8.3. В ранних версиях можно использовать только предыдущий вариант.

Весь список будет сохранен отдельной книгой.
Способ 4: копирование диапазона из списка 1С в Excel
Бывают случаи, когда нужно перенести не весь список, а только отдельные строки или диапазон данных. Этот вариант тоже вполне воплотим с помощью встроенных инструментов.
- Выделяем строки или диапазон данных в списке. Для этого зажимаем кнопку Shift и кликаем левой кнопкой мыши по тем строкам, которые нужно перенести. Жмем на кнопку «Все действия». В появившемся меню выбираем пункт «Вывести список…».

- Запускается окошко вывода списка. Настройки в нем производим так же, как и в предыдущих двух способах. Единственный нюанс состоит в том, что нужно установить галочку около параметра «Только выделенные». После этого жмем на кнопку «OK».

- Как видим, список, состоящий исключительно из выделенных строк, выведен. Дальше нам нужно будет выполнить точно такие же действия как в Способе 2 или в Способе 3, в зависимости от того, собираемся мы добавлять список к уже имеющейся книге Excel или создавать новый документ.
Способ 5: Сохранение документов в формате Excel
В Excel иногда нужно сохранять не только списки, но и созданные в 1С документы (счета, накладные платежные поручения и т.д.). Это связано с тем, что для многих пользователей редактировать документ проще в Экселе. К тому же в Excel можно удалить заполненные данные и, распечатав документ, использовать его при необходимости как бланк для ручного заполнения.
- В 1С в форме создания любого документа имеется кнопка печати. На ней расположена пиктограмма в виде изображения принтера. После того, как в документ введены необходимые данные и он сохранен, жмем на этот значок.

- Открывается форма для печати. Но нам, как мы помним, нужно не распечатать документ, а конвертировать его в Эксель. Легче всего в версии 1С 8.3 это сделать, нажав на кнопку «Сохранить» в виде дискеты.
Документ будет сохранен в формате Эксель. Этот файл теперь можно открывать в данной программе, и проводить дальнейшую его обработку уже в ней.
Как видим, выгрузка информации из 1С в формат Excel не составляет никаких сложностей. Нужно знать только алгоритм действий, так как, к сожалению, не для всех пользователей он интуитивно понятен. С помощью встроенных инструментов 1С и Эксель можно копировать содержимое ячеек, списков и диапазонов из первого приложения во второе, а также сохранять списки и документы в отдельные книги. Вариантов сохранения достаточно много и для того, чтобы пользователь мог найти подходящий именно для его ситуации, совсем не нужно прибегать к использованию стороннего программного обеспечения или применять сложные комбинации действий.
Сохранение табличной части в ексель программно.
В документе есть табличная часть и есть кнопочка "сохранить".
Подскажите пожалуйста синтаксис для того чтобы при нажатии на эту кнопку программа предложила выбрать директорию на жестком диске и записала туда эту табличную часть в формате ексель.
Режим = РежимДиалогаВыбораФайла.Сохранение;
Диалог = Новый ДиалогВыбораФайла(Режим);
Диалог.Заголовок = "Выбор файла для сохранения";
Диалог.Фильтр = "Excel (*.xls)|*.xls";
Если Не Диалог.Выбрать() Тогда
Возврат ;
Иначе
ИмяФайла= Диалог.ПолноеИмяФайла;
КонецЕсли
Как теперь мне сохранить в этот выбранный файл мою таблицу "ЭтотОбъект.Выгрузка" ?
Вообщем получил я ТабДок, а как мне дальше его записать на диск в файл?
ТабДок = моя таблица "Выгрузка"
какие сюда параметры нужны?
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
облСтрока = Макет.ПолучитьОбласть("Строка");
Для каждого стр Из ЭтотОбъект.Выгрузка Цикл
облСтрока.Параметры.Дата = стр.Дата;
облСтрока.Параметры.Номер = стр.Номер;
облСтрока.Параметры.КомпанияИНН = стр.КомпанияИНН;
облСтрока.Параметры.КомпанияНазвание = стр.КомпанияНазвание;
облСтрока.Параметры.СрокОплаты = стр.СрокОплаты;
облСтрока.Параметры.Сумма = стр.Сумма;
ТабДок.Вывести(облСтрока);
КонецЦикла;
ТабДок.Записать("D:\Клиентские базы\Scheta_postavschikov.xls","xls");
Сделал так,файл записался как надо, как теперь сделать так чтобы путь зашивался не на програмном уровне? чтобы файлик пользователь мог выбирать?
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
облСтрока = Макет.ПолучитьОбласть("Строка");
Для каждого стр Из ЭтотОбъект.Выгрузка Цикл
облСтрока.Параметры.Дата = Формат(стр.Дата, "ДЛФ=Д");
облСтрока.Параметры.Номер = стр.Номер;
облСтрока.Параметры.КомпанияИНН = стр.КомпанияИНН;
облСтрока.Параметры.КомпанияНазвание = стр.КомпанияНазвание;
облСтрока.Параметры.СрокОплаты = Формат(стр.СрокОплаты, "ДЛФ=Д");
облСтрока.Параметры.Сумма = стр.Сумма;
ТабДок.Вывести(облСтрока);
КонецЦикла;
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильтр = "Файл Эксель(*.xls)|*.xls";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ПолеВвода1 = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
ИмяФайла = ЭтаФорма.ФайлВыгрузки;
ТабДок.Записать(ИмяФайла,"xls");
Процедура КоманднаяПанель1Заполнить(Кнопка)
Если ЗначениеЗаполнено(ЭтотОбъект.ДатаНачала) И ЗначениеЗаполнено(ЭтотОбъект.ДатаОкончания) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетНаОплатуПокупателю.Номер,
| СчетНаОплатуПокупателю.Дата,
| СчетНаОплатуПокупателю.Контрагент,
| СчетНаОплатуПокупателю.Контрагент.ИНН КАК ИНН,
| СчетНаОплатуПокупателю.ДоговорКонтрагента.СрокОплаты КАК СрокОплаты,
| СчетНаОплатуПокупателю.СуммаДокумента,
| СчетНаОплатуПокупателю.ДоговорКонтрагента
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ГДЕ
| СчетНаОплатуПокупателю.Дата >= &ДатаНачала
| И СчетНаОплатуПокупателю.Дата <= &ДатаОкончания";
Запрос.УстановитьПараметр("ДатаНачала", ЭтотОбъект.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ЭтотОбъект.ДатаОкончания);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
ТекстВопроса = "Перед заполнением табличные части будут очищены. Заполнить?";
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да,);
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ЭтотОбъект.Выгрузка.Очистить();
Пока РезультатЗапроса.Следующий() Цикл
ДобавитьЭлементТаблицы = ЭтотОбъект.Выгрузка.Добавить();
ДобавитьЭлементТаблицы.Дата = РезультатЗапроса.Дата;
ДобавитьЭлементТаблицы.Номер = РезультатЗапроса.Номер;
ДобавитьЭлементТаблицы.КомпанияНазвание = РезультатЗапроса.Контрагент;
ДобавитьЭлементТаблицы.КомпанияИНН = РезультатЗапроса.ИНН;
ДобавитьЭлементТаблицы.Сумма = РезультатЗапроса.СуммаДокумента;
Если РезультатЗапроса.ДоговорКонтрагента.Наименование = "" Тогда
Продолжить
Иначе
ДобавитьЭлементТаблицы.СрокОплаты = РезультатЗапроса.Дата + 60*60*24*РезультатЗапроса.СрокОплаты;
КонецЕсли;
КонецЦикла;
Иначе
ТекстВопроса = "Ошибка! Не заполнены поля: дата начала, дата окончания.";
Вопрос(ТекстВопроса, РежимДиалогаВопрос.Ок, , КодВозвратаДиалога.Ок,);
Процедура ФайлВыгрузкиНачалоВыбора(Элемент, СтандартнаяОбработка)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильтр = "Файл Эксель(*.xls)|*.xls";
Если ДиалогОткрытияФайла.Выбрать() Тогда
ФайлВыгрузки = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
вообщем все работает как надо но файл приходится два раза выбирать в поле ввода и при нажатии на кнопку не пойму почему .
Простой способ выгрузки в таблицу Excel
Кладовщику нужно выгрузить список всей номенклатуры, у которой не установлена пометка удаления. Поля для выгрузки:
- Наименование.
- Артикул.
- Вид номенклатуры.
- Тип номенклатуры.
Рассмотрим два способа решения: без программирования и с участием программиста.
Программируем
Чтобы выгрузить номенклатуру в XLS-файл сформируем запрос к базе данных для получения номенклатуры и поместим результат в табличную часть обработки выгрузки. Вот форма обработки:

По нажатию на кнопку «Заполнить» заполняется табличная часть «ДанныеВыгрузки» обработки, у которой добавлены соответствующие реквизиты. Обработчик этой кнопки имеет следующий программный код:
Здесь все должно быть понятно. Самое интересное начинается по нажатию на кнопку «Сохранить». Сначала вызывается диалог выбора пути для сохранения таблицы XLS. Затем, используя данные в табличной части обработки, заполняется табличный документ по созданному ранее макету. Макет, добавленный в обработку, следующий:

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

После того, как табличный документ будет сформирован, нажав на кнопку «Сохранить» или через меню «Файл->Сохранить» пользователь может записать табличный документ в файл XLS указав его имя и конечный каталог.

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

Обработку с примером из статьи Вы можете скачать по ссылке .
Многостраничный Excel из 1С
В последнее время мне очень часто приходится работать с таблицами Excel из 1С. Это первая статья, посвященная работе с Excel из 1С и в ней я покажу как сохранять несколько табличный документов в одном, многостраничном файле Excel.
С помощью объекта ПакетОтображаемыхДокументов
Начиная с версии 8.3.3 платформы 1С реализован объект ПакетОтображаемыхДокументов, через который и реализована печать во всех современных типовых конфигурациях. С помощью этого объекта очень легко сформировать многостраничную книгу Excel, т.е. каждый табличный документ выводится на своем листе.
ИмяФайла – имя файла в который будет сохранена книга. Можно перед вызовом функции предлагать пользователю указать каталог, куда будет сохраняться файл, и в параметр передать полный путь до файла, например “D:\Файлы\МойФайлЭксель.xlsx”.
МассивДанных — массив соответствий с данными для формирования книги. Массив собираю на сервере. Соответствие представляет из себя коллекцию значений в связки с ключем. Ключи — Имя (имя листа в книге) и АдресВХранилище (адрес табличного документа во временном хранилище).
В отличие от второго варианта файл сохраняется значительно быстрее.
С помощью COM-объекта Excel.Application
Этот вариант подойдет тем, кому приходится работать со старыми версиями платформы. 1С позволяет сохранять табличный документ в эксель:
Указав в качестве типа файла таблицы ТипФайлаТабличногоДокумента.XLSX в итоге получим файл Эксель, но в нем мы не увидим привычных листов, соответственно и сохранить несколько табличных документов в одну книгу не получится.
В результате изучения проблемы и поисков в интернете, родился следующий алгоритм, который был реализован в качестве процедуры: