Перенос таблиц, отчётов и списков 1С в Excel без потери форматов

· 10 мин

Содержание

Чтобы скопировать данные из 1С в Excel, выделите строки в списке или ячейки в отчёте, нажмите Ctrl+C и вставьте в лист через Ctrl+V. Для целого списка надёжнее команда Ещё → Вывести список..., а готовый отчёт проще сразу сохранить файлом .xlsx. Это работает в любой конфигурации на платформе 8.3 с интерфейсом «Такси»: Бухгалтерии, ЗУП, УТ.

Выбор способа зависит от задачи. Разово перенести 20 строк — буфер обмена. Отдать отчёт руководителю — сохранение в файл. Каждый день обновлять сводную таблицу из базы — подключение Excel к 1С через OData или макрос. Ниже каждый вариант с шагами и подводными камнями.

СпособКогда подходитЧто нужноОграничения
📋 Буфер обменаразово, немного строкничегоформаты и объединения ячеек едут вместе с данными
📄 «Вывести список» / «Сохранить как»целый список или отчётничегоданные на момент выгрузки, не обновляются
🔌 OData + Power Queryрегулярная сводка, обновление одной кнопкойпубликация базы на веб-серверенужен администратор и веб-сервер
🧩 Внешний отчётнестандартный набор полейКонфигуратор, базовые навыкинужно поддерживать при обновлениях
⚙️ Макрос VBA через COMавтоматизация на стороне Excelустановленная платформа, правазанимает лицензию, зависит от разрядности

Копирование из 1С в Excel через буфер обмена

Самый быстрый путь, когда нужно несколько строк или кусок отчёта.

Из списка документов или справочника

  1. Откройте список, например Продажи → Реализация (акты, накладные, УПД) в Бухгалтерии.
  2. Выделите строки: Shift + клик — диапазон, Ctrl + клик — отдельные строки, Ctrl+A — все загруженные строки.
  3. Нажмите Ctrl+C.
  4. В Excel встаньте в ячейку A1 и нажмите Ctrl+V.

Колонки при вставке разойдутся по столбцам, потому что 1С разделяет их табуляцией. Копируются только видимые колонки. Если нужной колонки нет в списке, добавьте её через Ещё → Изменить форму... и повторите.

Динамический список подгружает строки порциями при прокрутке. Если Ctrl+A захватил не всё, прокрутите список до конца или используйте «Вывести список» из следующего раздела.

Из отчёта или печатной формы

Отчёты в 1С выводятся в табличный документ — это аналог листа Excel. Выделите мышью диапазон ячеек, скопируйте и вставьте.

Вместе с данными в Excel переедут шрифты, заливка и объединённые ячейки. Для дальнейших расчётов это мешает: объединённые ячейки ломают сортировку и фильтр. Поэтому вставляйте так:

  • Ctrl+Alt+V → «Значения» — только числа и текст;
  • Ctrl+Alt+V → «Текст» — если числа превращаются в даты или теряют копейки.

Перед копированием выделите в отчёте колонку с суммами: в нижней части окна 1С покажет сумму, количество и среднее по выделенным ячейкам. Это быстрая сверка, что в Excel перенеслось всё.

Выгрузка списка и сохранение отчёта в файл Excel

Когда строк сотни или тысячи, буфер обмена неудобен. Используйте встроенные команды платформы — они есть во всех типовых конфигурациях.

Команда «Вывести список»

  1. В любом списке нажмите Ещё → Вывести список....
  2. В окне отметьте галочками колонки, которые нужны в таблице.
  3. При необходимости включите флажок «Только выделенные» — тогда выгрузятся только отмеченные строки.
  4. Оставьте вывод в табличный документ и нажмите «ОК».
  5. В открывшемся окне сохраните документ: Ctrl+S или главное меню (кнопка с тремя полосками в заголовке окна) → Файл → Сохранить как....
  6. В поле типа файла выберите «Лист Excel 2007-…» (.xlsx).

Команда учитывает текущий отбор и сортировку списка. Удобный приём: сначала отфильтруйте список по контрагенту или периоду, потом выводите — в файл попадут только нужные документы.

Сохранение отчёта и печатной формы

Сформируйте отчёт, например оборотно-сальдовую ведомость. Затем:

  1. Нажмите кнопку с дискетой на панели отчёта или Ctrl+S.
  2. Выберите формат и папку.
ФорматДля чего
.xlsxосновной вариант, до 1 048 576 строк на листе
.xlsтолько для старого Excel, лимит 65 536 строк
.odsLibreOffice и 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:

  1. Запустить Конфигуратор от имени администратора Windows.
  2. Администрирование → Публикация на веб-сервере....
  3. Задать имя публикации, например buh.
  4. Включить флажок «Публиковать стандартный интерфейс OData».
  5. Нажать «Опубликовать».

Публикация перезапускает веб-сервер. Пользователи, которые работают через веб-клиент или тонкий клиент по HTTP, потеряют соединение. Делайте это вне рабочего времени.

Шаг 2. Состав данных для OData

По умолчанию сервис ничего не отдаёт: нужно выбрать объекты. В Бухгалтерии 3.0 это делается в разделе Администрирование → Синхронизация данных — там есть настройка стандартного интерфейса OData. В ней:

  • создайте отдельного пользователя для выгрузки с правом только на чтение;
  • отметьте справочники, документы и регистры, которые нужны в Excel;
  • сохраните настройку.

Шаг 3. Подключение в Excel

  1. В Excel: Данные → Получить данные → Из других источников → Из канала OData.
  2. Введите адрес вида http://server/buh/odata/standard.odata/.
  3. Выберите «Обычная» проверку подлинности и введите логин и пароль пользователя 1С из шага 2.
  4. В навигаторе отметьте нужные наборы, например Catalog_Контрагенты, и нажмите «Загрузить».

В редакторе Power Query лишние колонки удаляются до загрузки. Ссылочные поля приходят как идентификаторы (..._Key), их связывают со справочником через «Объединить запросы».

Для отчётных цифр удобнее подключать регистры: AccumulationRegister_... для остатков и оборотов, AccountingRegister_Хозрасчетный — для бухгалтерских проводок.

Внешний отчёт или обработка для выгрузки в Excel

Если нужного набора полей нет ни в одном типовом отчёте, его собирают во внешнем отчёте. Это отдельный файл .erf, который не меняет конфигурацию и переживает обновления.

Внешний отчёт на СКД без кода

  1. В Конфигураторе: Файл → Новый... → Внешний отчет.
  2. Нажмите «Открыть схему компоновки данных» и создайте схему.
  3. Напишите запрос через конструктор: выберите таблицы и поля.
  4. На вкладке «Настройки» добавьте детальные записи.
  5. Сохраните файл.

Пользователь открывает его через Файл → Открыть или подключает в Бухгалтерии через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Результат сохраняется в .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 и как это исправить

Диагностика: выберите симптом

Ещё один частый случай: текст длинного комментария или назначения платежа обрезается. В ячейке Excel помещается до 32 767 символов, и обычно дело не в лимите, а в ширине колонки. Включите «Перенос текста», данные на месте.

Частые вопросы

Можно ли выгрузить из 1С сразу несколько отчётов в одну книгу Excel?
Встроенной команды для этого нет. Сохраните каждый отчёт в .xlsx, а затем перенесите листы в одну книгу через «Переместить или скопировать» в Excel. Для регулярной задачи удобнее Power Query: он собирает несколько источников в одну книгу.
Почему кнопки «Сохранить» нет в моём отчёте?
Скорее всего, у пользователя ограничены права на вывод. Администратор проверяет это в профиле групп доступа: право сохранения и печати может быть отключено. Без этого права Ctrl+S тоже не сработает.
Можно ли загрузить данные обратно из Excel в 1С?
Да, но это отдельная процедура. В типовых конфигурациях в табличных частях документов есть команда загрузки из файла, а для справочников используют загрузку данных из табличного документа.
Как выгрузить из 1С в Google Таблицы?
Сохраните отчёт в .xlsx и загрузите файл в Google Диск — он откроется в Таблицах. Прямого подключения Google Таблиц к OData-сервису нет без сторонних скриптов.
Работает ли копирование в Excel в веб-клиенте 1С?
Да. Ctrl+C и сохранение в .xlsx доступны и в браузере, только файл скачается в папку загрузок браузера, а не в выбранный каталог.