Перенос таблиц, отчётов и списков 1С в Excel без потери форматов
Содержание
Чтобы скопировать данные из 1С в Excel, выделите строки в списке или ячейки в отчёте, нажмите Ctrl+C и вставьте в лист через Ctrl+V. Для целого списка надёжнее команда Ещё → Вывести список..., а готовый отчёт проще сразу сохранить файлом .xlsx. Это работает в любой конфигурации на платформе 8.3 с интерфейсом «Такси»: Бухгалтерии, ЗУП, УТ.
Выбор способа зависит от задачи. Разово перенести 20 строк — буфер обмена. Отдать отчёт руководителю — сохранение в файл. Каждый день обновлять сводную таблицу из базы — подключение Excel к 1С через OData или макрос. Ниже каждый вариант с шагами и подводными камнями.
| Способ | Когда подходит | Что нужно | Ограничения |
|---|---|---|---|
| 📋 Буфер обмена | разово, немного строк | ничего | форматы и объединения ячеек едут вместе с данными |
| 📄 «Вывести список» / «Сохранить как» | целый список или отчёт | ничего | данные на момент выгрузки, не обновляются |
| 🔌 OData + Power Query | регулярная сводка, обновление одной кнопкой | публикация базы на веб-сервере | нужен администратор и веб-сервер |
| 🧩 Внешний отчёт | нестандартный набор полей | Конфигуратор, базовые навыки | нужно поддерживать при обновлениях |
| ⚙️ Макрос VBA через COM | автоматизация на стороне Excel | установленная платформа, права | занимает лицензию, зависит от разрядности |
Копирование из 1С в Excel через буфер обмена
Самый быстрый путь, когда нужно несколько строк или кусок отчёта.
Из списка документов или справочника
- Откройте список, например
Продажи → Реализация (акты, накладные, УПД)в Бухгалтерии. - Выделите строки:
Shift+ клик — диапазон,Ctrl+ клик — отдельные строки,Ctrl+A— все загруженные строки. - Нажмите
Ctrl+C. - В Excel встаньте в ячейку
A1и нажмитеCtrl+V.
Колонки при вставке разойдутся по столбцам, потому что 1С разделяет их табуляцией. Копируются только видимые колонки. Если нужной колонки нет в списке, добавьте её через Ещё → Изменить форму... и повторите.
Динамический список подгружает строки порциями при прокрутке. Если Ctrl+A захватил не всё, прокрутите список до конца или используйте «Вывести список» из следующего раздела.
Из отчёта или печатной формы
Отчёты в 1С выводятся в табличный документ — это аналог листа Excel. Выделите мышью диапазон ячеек, скопируйте и вставьте.
Вместе с данными в Excel переедут шрифты, заливка и объединённые ячейки. Для дальнейших расчётов это мешает: объединённые ячейки ломают сортировку и фильтр. Поэтому вставляйте так:
Ctrl+Alt+V→ «Значения» — только числа и текст;Ctrl+Alt+V→ «Текст» — если числа превращаются в даты или теряют копейки.
Перед копированием выделите в отчёте колонку с суммами: в нижней части окна 1С покажет сумму, количество и среднее по выделенным ячейкам. Это быстрая сверка, что в Excel перенеслось всё.
Выгрузка списка и сохранение отчёта в файл Excel
Когда строк сотни или тысячи, буфер обмена неудобен. Используйте встроенные команды платформы — они есть во всех типовых конфигурациях.
Команда «Вывести список»
- В любом списке нажмите
Ещё → Вывести список.... - В окне отметьте галочками колонки, которые нужны в таблице.
- При необходимости включите флажок «Только выделенные» — тогда выгрузятся только отмеченные строки.
- Оставьте вывод в табличный документ и нажмите «ОК».
- В открывшемся окне сохраните документ:
Ctrl+Sили главное меню (кнопка с тремя полосками в заголовке окна) →Файл → Сохранить как.... - В поле типа файла выберите «Лист Excel 2007-…» (
.xlsx).
Команда учитывает текущий отбор и сортировку списка. Удобный приём: сначала отфильтруйте список по контрагенту или периоду, потом выводите — в файл попадут только нужные документы.
Сохранение отчёта и печатной формы
Сформируйте отчёт, например оборотно-сальдовую ведомость. Затем:
- Нажмите кнопку с дискетой на панели отчёта или
Ctrl+S. - Выберите формат и папку.
| Формат | Для чего |
|---|---|
.xlsx | основной вариант, до 1 048 576 строк на листе |
.xls | только для старого Excel, лимит 65 536 строк |
.ods | LibreOffice и OpenOffice |
.mxl | табличный документ 1С, откроется только в 1С |
.pdf | отправить на просмотр, без правки |
Группировки отчёта сохраняются в Excel как структура: слева появятся кнопки «+» и «−» с уровнями. Если нужна плоская таблица для сводной, отключите группировки в настройках отчёта до формирования.
Не выбирайте .xls для больших отчётов. Анализ счёта за год по крупной базе легко превышает 65 тысяч строк — хвост просто обрежется, и итоги в Excel не сойдутся с 1С.
Печатные формы (накладные, счета, акты) сохраняются тем же способом: кнопка с дискетой в окне печати. Там же можно сразу отправить форму письмом в виде вложения .xlsx.
Подключение Excel к базе 1С: OData вместо ODBC
Многие ищут ODBC-драйвер для 1С 8.3. Его нет: фирма 1С выпускала ODBC-драйвер только для версии 7.7. Читать таблицы SQL Server или PostgreSQL напрямую тоже плохая идея: имена там обезличены (_Document123, _Fld4567), а структура меняется при каждом обновлении конфигурации.
Рабочая замена прямого подключения — стандартный интерфейс OData. Это REST-сервис платформы, к которому Excel подключается через Power Query. Таблица в Excel обновляется кнопкой «Обновить всё», без ручного копирования.
Шаг 1. Публикация базы на веб-сервере
Делает администратор на компьютере с IIS или Apache:
- Запустить Конфигуратор от имени администратора Windows.
Администрирование → Публикация на веб-сервере....- Задать имя публикации, например
buh. - Включить флажок «Публиковать стандартный интерфейс OData».
- Нажать «Опубликовать».
Публикация перезапускает веб-сервер. Пользователи, которые работают через веб-клиент или тонкий клиент по HTTP, потеряют соединение. Делайте это вне рабочего времени.
Шаг 2. Состав данных для OData
По умолчанию сервис ничего не отдаёт: нужно выбрать объекты. В Бухгалтерии 3.0 это делается в разделе Администрирование → Синхронизация данных — там есть настройка стандартного интерфейса OData. В ней:
- создайте отдельного пользователя для выгрузки с правом только на чтение;
- отметьте справочники, документы и регистры, которые нужны в Excel;
- сохраните настройку.
Шаг 3. Подключение в Excel
- В Excel:
Данные → Получить данные → Из других источников → Из канала OData. - Введите адрес вида
http://server/buh/odata/standard.odata/. - Выберите «Обычная» проверку подлинности и введите логин и пароль пользователя 1С из шага 2.
- В навигаторе отметьте нужные наборы, например
Catalog_Контрагенты, и нажмите «Загрузить».
В редакторе Power Query лишние колонки удаляются до загрузки. Ссылочные поля приходят как идентификаторы (..._Key), их связывают со справочником через «Объединить запросы».
Для отчётных цифр удобнее подключать регистры: AccumulationRegister_... для остатков и оборотов, AccountingRegister_Хозрасчетный — для бухгалтерских проводок.
Внешний отчёт или обработка для выгрузки в Excel
Если нужного набора полей нет ни в одном типовом отчёте, его собирают во внешнем отчёте. Это отдельный файл .erf, который не меняет конфигурацию и переживает обновления.
Внешний отчёт на СКД без кода
- В Конфигураторе:
Файл → Новый... → Внешний отчет. - Нажмите «Открыть схему компоновки данных» и создайте схему.
- Напишите запрос через конструктор: выберите таблицы и поля.
- На вкладке «Настройки» добавьте детальные записи.
- Сохраните файл.
Пользователь открывает его через Файл → Открыть или подключает в Бухгалтерии через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Результат сохраняется в .xlsx так же, как обычный отчёт.
Внешние отчёты из чужих источников открывайте только после проверки: код в них выполняется с правами вашего пользователя. В свежих версиях платформы при открытии внешнего файла появляется предупреждение безопасности — не отключайте его ради удобства.
Обработка с записью файла
Когда файл должен создаваться сам, например регламентным заданием каждую ночь, табличный документ записывают кодом. Пример на сервере:
&НаСервере
Процедура ВыгрузитьКонтрагентовНаСервере(ИмяФайла)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область(1, 1, 1, 1).Текст = "Наименование";
ТабДок.Область(1, 2, 1, 2).Текст = "ИНН";
НомерСтроки = 1;
Пока Выборка.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Выборка.Наименование;
ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Выборка.ИНН;
КонецЦикла;
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Путь в ИмяФайла указывается в файловой системе сервера 1С, а не компьютера пользователя. В файловой базе это один и тот же компьютер, в клиент-серверной — нет: проверьте, что у службы сервера 1С есть права на запись в папку.
Макрос в Excel: забираем данные из 1С через COM
Обратный подход — Excel сам подключается к базе и забирает данные. Для этого служит COM-объект V83.COMConnector из комплекта платформы.
Подготовка
- 🖥 На компьютере установлена платформа 1С той же разрядности, что и Excel: 64-битный Office требует 64-битную платформу.
- 🔧 Компонента зарегистрирована. Если
CreateObjectпадает с ошибкой «ActiveX component can’t create object», выполните от имени администратораregsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll"с вашим номером версии. - 👤 Создан пользователь 1С с правами на чтение нужных данных.
- 🔑 Внешнее соединение занимает клиентскую лицензию, как обычный сеанс. Закрывайте его в конце макроса.
Пример макроса VBA
Sub LoadFrom1C()
Dim conn As Object, q As Object, sel As Object
Dim r As Long
Set conn = CreateObject("V83.COMConnector").Connect( _
"File=""D:\Bases\Buh"";Usr=""Выгрузка"";Pwd=""пароль"";")
Set q = conn.NewObject("Query")
q.Text = "ВЫБРАТЬ Контрагенты.Наименование КАК Name, " & _
"Контрагенты.ИНН КАК INN " & _
"ИЗ Справочник.Контрагенты КАК Контрагенты " & _
"ГДЕ НЕ Контрагенты.ЭтоГруппа"
Set sel = q.Execute().Select()
With ThisWorkbook.Sheets(1)
.Cells.Clear
.Range("B:B").NumberFormat = "@"
.Cells(1, 1).Value = "Наименование"
.Cells(1, 2).Value = "ИНН"
r = 1
Do While sel.Next()
r = r + 1
.Cells(r, 1).Value = sel.Name
.Cells(r, 2).Value = sel.INN
Loop
End With
Set sel = Nothing: Set q = Nothing: Set conn = Nothing
End Sub
Для клиент-серверной базы строка подключения меняется на Srvr=""server1c"";Ref=""buh"";Usr=.... Поля в запросе названы латинскими псевдонимами (Name, INN), чтобы обращаться к ним из VBA без кириллицы в коде.
Колонка ИНН заранее получает текстовый формат @. Иначе Excel срежет ведущие нули у ИНН и кодов.
Не храните пароль в открытом виде в общей книге. Любой, кто откроет редактор VBA, его увидит. Используйте отдельного пользователя только с правом чтения.
Почему данные из 1С ломаются в Excel и как это исправить
Данные → Из текста/CSV, в поле «Источник файла» выберите «65001: Юникод (UTF-8)».Ctrl+H, в «Найти» введите неразрывный пробел (Alt + 0160 на цифровой клавиатуре), поле «Заменить» оставьте пустым. Затем Данные → Текст по столбцам → Готово..xls. Пересохраните из 1С в .xlsx.Ещё один частый случай: текст длинного комментария или назначения платежа обрезается. В ячейке Excel помещается до 32 767 символов, и обычно дело не в лимите, а в ширине колонки. Включите «Перенос текста», данные на месте.
Частые вопросы
Можно ли выгрузить из 1С сразу несколько отчётов в одну книгу Excel?
.xlsx, а затем перенесите листы в одну книгу через «Переместить или скопировать» в Excel. Для регулярной задачи удобнее Power Query: он собирает несколько источников в одну книгу.Почему кнопки «Сохранить» нет в моём отчёте?
Ctrl+S тоже не сработает.Можно ли загрузить данные обратно из Excel в 1С?
Как выгрузить из 1С в Google Таблицы?
.xlsx и загрузите файл в Google Диск — он откроется в Таблицах. Прямого подключения Google Таблиц к OData-сервису нет без сторонних скриптов.Работает ли копирование в Excel в веб-клиенте 1С?
Ctrl+C и сохранение в .xlsx доступны и в браузере, только файл скачается в папку загрузок браузера, а не в выбранный каталог.