Не секрет, что среди офисных работников, в частности тех, которые заняты в расчетной и финансовой сфере, особенно популярны программы Excel и 1С. Поэтому довольно часто приходится производить обмен данными между этими приложениями. Но, к сожалению, далеко не все пользователи знают, как быстро это сделать. Давайте выясним, как выгрузить данные из 1С в документ Excel.
Выгрузка информации из 1C в Excel
Если загрузка данных из Excel в 1С – это довольно сложная процедура, автоматизировать которую можно только с помощью сторонних решений, то обратный процесс, а именно выгрузка из 1С в Эксель – это сравнительно простой набор действий. Его можно легко выполнить с помощью встроенных инструментов вышеуказанных программ, причем сделать это можно несколькими способами, в зависимости от того, что именно пользователю нужно перенести. Рассмотрим, как это выполнить на конкретных примерах в 1С версии 8.3.
Способ 1: копирование содержимого ячейки
Одна единица данных содержится в ячейке 1С. Её можно перенести в Эксель обычным методом копирования.
- Выделяем ячейку в 1С, содержимое которой нужно скопировать. Кликаем по ней правой кнопкой мыши. В контекстном меню выбираем пункт «Копировать». Можно воспользоваться также универсальным способом, который действует в большинстве программ, работающих на ОС Windows: просто выделяем содержимое ячейки и набираем комбинацию клавиш на клавиатуре Ctrl+C.
Открываем чистый лист Excel или документ, куда нужно вставить содержимое. Кликаем правой кнопкой мыши и в появившемся контекстном меню в параметрах вставки выбираем пункт «Сохранить только текст», который изображен в форме пиктограммы в виде большой буквы «А».
Вместо этого действия можно после выделения ячейки, находясь во вкладке «Главная», щелкнуть по значку «Вставить», который расположен на ленте в блоке «Буфер обмена».
Также можно воспользоваться универсальным способом и набрать на клавиатуре сочетание клавиш Ctrl+V после того, как ячейка выделена.
Содержимое ячейки 1С будет вставлено в Excel.
Способ 2: вставка списка в существующую книгу Excel
Но вышеуказанный способ подойдет лишь в том случае, если нужно перенести данные из одной ячейки. Когда же нужно совершить перенос целого списка, то следует воспользоваться другим способом, ведь копирование по одному элементу отберет очень много времени.
- Открываем любой список, журнал или справочник в 1С. Кликаем на кнопку «Все действия», которая должна располагаться вверху от обрабатываемого массива данных. Запускается меню. Выбираем в нем пункт «Вывести список».
Открывается небольшое окошко вывода списка. Тут можно произвести некоторые настройки.
Поле «Выводить в» имеет два значения:
По умолчанию установлен первый вариант. Для переноса данных в Эксель он как раз и подходит, так что тут мы ничего не меняем.
В блоке «Выводить колонки» можно указать, какие колонки из списка вы хотите перевести в Excel. Если вы собираетесь производить перенос всех данных, то эту настройку тоже не трогаем. Если же вы хотите произвести конвертацию без какого-то столбца или нескольких столбцов, то снимаем галочку с соответствующих элементов.
После того, как настройки завершены, жмем на кнопку «OK».
Затем на экран выводится список в табличном виде. Если вы хотите перенести его в готовый файл Excel, то просто выделите в нем все данные курсором с зажатой левой кнопкой мыши, потом кликните по выделению правой кнопкой мышки и в открывшемся меню выберите пункт «Копировать». Можно так же, как и в предыдущем способе использовать сочетание горячих клавиш Ctrl+С.
Список вставлен в документ.
Способ 3: создание новой книги Excel со списком
Также список из программы 1С можно сразу вывести в новый файл Эксель.
- Выполняем все те шаги, которые были указаны в предыдущем способе до формирования списка в 1С в табличном варианте включительно. После этого жмем на кнопку вызова меню, которая расположена в верхней части окна в виде треугольника, вписанного в оранжевый круг. В запустившемся меню последовательно переходим по пунктам «Файл» и «Сохранить как…».
Ещё проще сделать переход, нажав на кнопку «Сохранить», которая имеет вид дискеты и расположена в блоке инструментов 1С в самом верху окна. Но такая возможность доступна только пользователям, которые применяют программу версии 8.3. В ранних версиях можно использовать только предыдущий вариант.
Также в любых версиях программы для запуска окна сохранения можно нажать комбинацию клавиш Ctrl+S.
Весь список будет сохранен отдельной книгой.
Способ 4: копирование диапазона из списка 1С в Excel
Бывают случаи, когда нужно перенести не весь список, а только отдельные строки или диапазон данных. Этот вариант тоже вполне воплотим с помощью встроенных инструментов.
- Выделяем строки или диапазон данных в списке. Для этого зажимаем кнопку Shift и кликаем левой кнопкой мыши по тем строкам, которые нужно перенести. Жмем на кнопку «Все действия». В появившемся меню выбираем пункт «Вывести список…».
Запускается окошко вывода списка. Настройки в нем производим так же, как и в предыдущих двух способах. Единственный нюанс состоит в том, что нужно установить галочку около параметра «Только выделенные». После этого жмем на кнопку «OK».
Способ 5: Сохранение документов в формате Excel
В Excel иногда нужно сохранять не только списки, но и созданные в 1С документы (счета, накладные платежные поручения и т.д.). Это связано с тем, что для многих пользователей редактировать документ проще в Экселе. К тому же в Excel можно удалить заполненные данные и, распечатав документ, использовать его при необходимости как бланк для ручного заполнения.
- В 1С в форме создания любого документа имеется кнопка печати. На ней расположена пиктограмма в виде изображения принтера. После того, как в документ введены необходимые данные и он сохранен, жмем на этот значок.
Открывается форма для печати. Но нам, как мы помним, нужно не распечатать документ, а конвертировать его в Эксель. Легче всего в версии 1С 8.3 это сделать, нажав на кнопку «Сохранить» в виде дискеты.
Для более ранних версий используем сочетание горячих клавиш Ctrl+S или, нажав на кнопку вывода меню в виде перевернутого треугольника в верхней части окна, последовательно переходим по пунктам «Файл» и «Сохранить».
Документ будет сохранен в формате Эксель. Этот файл теперь можно открывать в данной программе, и проводить дальнейшую его обработку уже в ней.
Как видим, выгрузка информации из 1С в формат Excel не составляет никаких сложностей. Нужно знать только алгоритм действий, так как, к сожалению, не для всех пользователей он интуитивно понятен. С помощью встроенных инструментов 1С и Эксель можно копировать содержимое ячеек, списков и диапазонов из первого приложения во второе, а также сохранять списки и документы в отдельные книги. Вариантов сохранения достаточно много и для того, чтобы пользователь мог найти подходящий именно для его ситуации, совсем не нужно прибегать к использованию стороннего программного обеспечения или применять сложные комбинации действий.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Excel работает за вас

Excel works!
Thanks for Visiting
Как быстро выгрузить из 1С в Excel?
Для меня стало небольшим открытием, что пользователи 1С не знают как быстро выгрузить из 1С в Excel почти любые данные. Недавно я столкнулся с тем, что коллеги делали снимок экрана , а потом через FineReader переводили данные в текст из картинки, потому что не работала кнопка сохранить в 1С (см. картинку). Длинный путь, не правда ли? Но есть и более удобные способы. В выгрузке из 1С нет никакой тайны, возможностей достаточно много.
Давайте разберемся по пунктам как мы можем сохранить данные из 1С в Excel:
1.Как сохранить из 1С в Excel данные ячейки?
Самый простой способ сохранить из 1С в Excel данные — это выбрать в документе или журнале одну ячейку и нажать ctrl+c (копировать), затем в Excel выделить ячейку куда нужно сохранить данные и нажать ctrl+v . Таким образом, вы сохраните содержание этой ячейки. Для примера-картинки это будет 42 289,23
Этот способ действует для любой версии 1С.
2. Как выгрузить из 1С в Excel большое количество данных?
Предыдущий способ хорош, но большой объем данных так не накопируешься. Поэтому, лучше пользоваться инструментом Вывести список.
Почти в любом журнале документов, справочнике или документе нажмите правой кнопкой мыши и найдите пункт Вывести список.
Для версий 8.3 и интерфейса «Такси» кнопка вывести список, есть в меню Еще
Появиться список этих элементов как текст (возможно до этого нужно будет выбрать, какие именно столбцы выбрать). Этот текст уже можно скопировать в любой документ. Но я советую, воспользоваться меню Файл — Сохранить как (т.к. большие объемы данных будут обрабатываться долго и не исключена ошибка при копировании в буфер).
Затем выбираем нужный формат файла.
Все файл сохранен в нужном формате.
Этот способ так же действует для любой версии 1С.
Для версии 1с 8.2 и выше в тонком клиенте или интерфейсе Такси инструмент Файл — Сохранить как, доступен на панели в верхнем правом углу в виде дискеты
3. Как выгрузить из 1С в Excel печатные формы документов?
Печатные формы документов таких как Счет , Счет-фактура , Транспортная накладная и так далее доступны для изменения и сохранения в Excel в большинстве конфигураций.
Когда вы нажали кнопку Печать документа, у вас появиться печатная форма в отдельном окне, в меню будет доступны следующие инструменты.
1 — Снимите кнопку Только просмотр, чтобы иметь возможность изменять печатную форму
2 — Сохраните документ в нужный формат, см. пункт 2
А так же содержимое печатной формы вы сможете сохранить как любые текстовые данные, как в Word’e.
Часто печатную форму или форму отчета можно сохранить простым Копировать-Вставить в Excel.
Как загрузить данные из Excel в 1C это совсем другая история. Но скоро и ее расскажу, ждите 😉
MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.
Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.
Обмен через табличный документ
Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:
- Записать ( ИмяФайла >, ТипФайлаТаблицы >) для выгрузки данных в файл;
- Прочитать ( ИмяФайла >, СпособЧтенияЗначений >) для загрузки данных из файла.
Внимание!
Метод Записать () доступен как на клиенте, так и на сервере. Метод Прочитать () доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.
Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:
ТабДок . Записать ( ПутьКФайлу , ТипФайлаТабличногоДокумента . XLSX );
Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:
- XLS95 — формат Excel 95;
- XLS97 — формат Excel 97;
- XLSX — формат Excel 2007.
Загрузка из файла осуществляется также достаточно просто:
ТабДок = Новый ТабличныйДокумент ;
ТабДок . Прочитать ( ПутьКФайлу , СпособЧтенияЗначенийТабличногоДокумента.Значение );
Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:
Обмен через OLE
Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:
- На компьютере конечного пользователя, если обмен происходит на стороне клиента;
- На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.
Пример выгрузки:
// Создание COM-объекта
Эксель = Новый COMОбъект ( «Excel.Application» );
// Отключение вывода предупреждений и вопросов
Эксель . DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель . WorkBooks . Add ();
// Позиционирование на первом листе
Лист = Книга . Worksheets ( 1 );
// Запись значения в ячейку
Лист . Cells ( НомерСтроки , НомерКолонки ). Value = ЗначениеЯчейки ;
// Сохранение файла
Книга . SaveAs ( ИмяФайла );
// Закрытие Эксель и освобождение памяти
Эксель . Quit ();
Эксель = 0 ;
Примеры чтения:
// Создание COM-объекта
Эксель = Новый COMОбъект ( «Excel.Application» );
// Открытие книги
Книга = Эксель . Workbooks . Open ( ПутьКФайлу );
// Позиционирование на нужном листе
Лист = Книга . Worksheets ( 1 );
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист . Cells ( НомерСтроки , НомерКолонки ). Value ;
// Закрытие книги
Книга . Close ( 0 );
// Закрытие Эксель и освобождение памяти
Эксель . Quit ();
Эксель = 0 ;
// Открытие книги
Книга = ПолучитьCOMОбъект ( ПутьКФайлу );
// Позиционирование на нужном листе
Лист = Книга . Worksheets ( 1 );
// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист . Cells ( НомерСтроки , НомерКолонки ). Value ;
// Закрытие книги
Книга . Application . Qui t ();
Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:
// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Row ;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
ЗначениеЯчейки = Лист . Cells ( НомерСтроки , НомерКолонки ). Value ;
КонецЦикла;
// —— ВАРИАНТ 2 ——
НомерСтроки = 0 ;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1 ;
ЗначениеЯчейки = Лист . Cells ( НомерСтроки , НомерКолонки ). Value ;
Если НЕ ЗначениеЗаполнено ( ЗначениеЯчейки ) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:
ВсегоКолонок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Column ;
ВсегоСтрок = Лист . Cells ( 1 , 1 ). SpecialCells ( 11 ). Row ;
Область = Лист . Range ( Лист . Cells ( 1 , 1 ), Лист . Cells ( ВсегоСтрок , ВсегоКолонок ));
Данные = Область . Value . Выгрузить ();
В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:
Действие | Код | Комментарий |
Установка видимости окна приложения | Эксель . Visible = Ложь; | |
Установка режима вывода предупреждений (выводить/не выводить) | Эксель . DisplayAlerts = Ложь; | |
Закрытие приложения | Эксель . Quit (); | |
Создание новой книги | Книга = Эксель . WorkBooks . Add (); | |
Открытие существующей книги | Книга = Эксель . WorkBooks . Open ( ИмяФайла ); | |
Сохранение книги | Книга . SaveAs ( ИмяФайла ); | |
Закрытие книги | Книга . Close ( 0 ); | |
Установка текущего листа | Лист = Книга . WorkSheets ( НомерЛиста ); | |
Установка имени | Лист . Name = Имя ; | |
Установка защиты | Лист . Protect (); | |
Снятие защиты | Лист . UnProtect (); | |
Установка ориентации страницы | Лист . PageSetup . Orientation = 2 ; | 1 — книжная, 2 — альбомная |
Установка левой границы | Лист . PageSetup . LeftMargin = Эксель . CentimetersToPoints ( Сантиметры ); | |
Установка верхней границы | Лист . PageSetup . TopMargin = Эксель . CentimetersToPoints ( Сантиметры ); | |
Установка правой границы | Лист . PageSetup . RightMargin = Эксель . CentimetersToPoints ( Сантиметры ); | |
Установка нижней границы | Лист . PageSetup . BottomMargin = Эксель . CentimetersToPoints ( Сантиметры ); | |
Установка ширины колонки | Лист . Columns ( НомерКолонки ). ColumnW >= Ширина ; | |
Удаление строки | Лист . Rows ( НомерСтроки ). Delete (); | |
Удаление колонки | Лист . Columns ( НомерКолонки ). Delete (); | |
Удаление ячейки | Лист . Cells ( НомерСтроки , НомерКолонки ). Delete (); | |
Установка значения | Лист . Cells ( НомерСтроки , НомерКолонки ). Value = Значение ; | |
Объединение ячеек | Лист . Range ( Лист . Cells ( НомерСтроки , НомерКолонки ), Лист . Cells ( НомерСтроки1 , НомерКолонки1 )). Merge (); | |
Установка шрифта | Лист . Cells ( НомерСтроки , НомерКолонки ). Font . Name = ИмяШрифта ; | |
Установка размера шрифта | Лист . Cells ( НомерСтроки , НомерКолонки ). Font . Size = РазмерШрифта ; | |
Установка жирного шрифта | Лист . Cells ( НомерСтроки , НомерКолонки ). Font . Bold = 1 ; | 1 — жирный шрифт, 0 — нормальный |
Установка курсива | Лист . Cells ( НомерСтроки , НомерКолонки ). Font . Italic = 1 ; | 1 — курсив, 0 — нормальный |
Установка подчеркнутого шрифта | Лист . Cells ( НомерСтроки , НомерКолонки ). Font . Underline = 2 ; | 2 — подчеркнутый, 1 — нет |
Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.
Использование COMSafeArray
При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.
// Создание COMSafeArray
МассивКом = Новый COMSafeArray ( «VT_Variant» , ВсегоКолонок , ВсегоСтрок );
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок — 1 Цикл
Для Кол = 0 По ВсегоКолонок — 1 Цикл
МассивКом . SetValue ( Кол , Стр , Значение );
КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист . Range ( Лист . Cells ( 1 , 1 ), Лист . Cells ( ВсегоСтрок , ВсегоКолонок )). Value = МассивКом ;
Обмен через ADO
Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.
Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.
Пример выгрузки:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект ( «ADODB.Connection» );
// Установка строки соединения
Соединение . ConnectionString = «
|Prov >
|Data Source=» + ИмяФайла + «;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;» ;
Соединение . Open (); // Открытие соединения
// Создание COM-объекта для команды
Команда = Новый COMОбъект ( «ADODB.Command» );
Команда . ActiveConnection = Соединение ;
// Присвоение текста команды для создания таблицы
Команда . CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)» ;
Команда . Execute (); // Выполнение команды
// Присвоение текста команды для добавления строки таблицы
Команда . CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)» ;
Команда.Execute(); // Выполнение команды
// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение . Close ();
Соединение = Неопределено ;
Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:
// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект ( «ADOX.Catalog» );
Книга . ActiveConnection = Соединение ;
// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект ( «ADOX.Table» );
Таблица . Name = «Лист1» ;
Таблица . Columns . Append ( «Колонка1» , 202 );
Таблица . Columns . Append ( «Колонка2» , 7 );
Таблица . Columns . Append ( «Колонка3» , 5 );
Таблица . Columns . Append ( «Колонка4» , 5 );
// Создание в книге листа с описанной структурой
Книга . Tables . Append ( Таблица );
Таблица = Неопределено;
Книга = Неопределено;
В приведенном примере в методе
Таблица . Columns . Append ( «Колонка1» , 202 );
во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:
- 5 — adDouble;
- 6 — adCurrency;
- 7 — adDate;
- 11 — adBoolean;
- 202 — adVarWChar;
- 203 — adLongVarWChar.
Пример чтения:
// Создание COM-объекта для соединения
Соединение = Новый COMОбъект ( «ADODB.Connection» );
// Установка строки соединения
Соединение . ConnectionString = «
|Prov >
|Data Source=» + ИмяФайла + «;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;» ;
Соединение . Open (); // Открытие соединения
// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект ( «ADODB.Recordset» );
ТекстЗапроса = «SELECT * FROM [Лист1$]» ;
// Выполнение запроса
Выборка . Open ( ТекстЗапроса , Соединение );
// Обход результата выборки
Пока НЕ Выборка . EOF () Цикл
ЗначениеКолонки1 = Выборка . Fields . Item ( «Колонка1» ). Value ; // Обращение по имени колонки
ЗначениеКолонки2 = Выборка . Fields . Item ( 0 ). Value ; // Обращение по индексу колонки
Выборка . MoveNext ();
КонецЦикла;
Выборка . Close ();
Выборка = Неопределено;
Соединение . Close ();
Соединение = Неопределено;
В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:
- YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
- NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.
В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:
Выгрузка без программирования
Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.
Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.
В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.
Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:
- Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
- Сохранить табличный документ в требуемый формат.
Остались вопросы?
Спросите в комментариях к статье.