Отчёты, списки и печатные формы из 1С:Предприятия 8.3 — в таблицу Excel

· 11 мин

Содержание

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

Это закрывает девять задач из десяти. Для остальных — регулярная выгрузка без ручных кликов, живая связь Excel с базой, тысячи строк по сложному отбору — есть обработки, COM-соединение и OData с Power Query. Ниже пять способов конвертировать данные из 1С в Excel, от простого к техническому, с примерами кода и разбором ошибок, из-за которых числа в Excel «не считаются».

Подготовка: что выгружать и в каком виде

Сначала решите, что вам нужно на выходе. От этого зависит способ.

  • 📊 Отчёт для чтения (ОСВ, анализ счёта, продажи) — нужна красивая таблица с итогами и группировками. Сохраняйте отчёт целиком.
  • 🧮 Сырые данные для расчётов (номенклатура, контрагенты, документы за период) — нужна «плоская» таблица: одна строка — одна запись, без объединённых ячеек. Берите «Вывести список » или универсальный отчёт.
  • 🖨 Печатная форма (счёт, акт, накладная) — нужна копия бланка. Сохраняйте из формы печати.
  • 🔄 Регулярная выгрузка — каждый день или каждый месяц одно и то же. Здесь окупается обработка или OData.

Перед выгрузкой настройте отбор и колонки в самой 1С. Удалить 40 лишних колонок в Excel дольше, чем снять галочки в настройках списка.

Формат .xlsx предпочтительнее старого .xls. В .xls помещается не больше 65 536 строк, а большая ОСВ по субсчетам с аналитикой легко выходит за предел.

Способ 1. Сохранение отчёта или списка штатными средствами 1С

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

Как сохранить отчёт в xlsx

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

Если команда сохранения серая — отчёт ещё не сформирован. Сохраняется только готовый табличный документ.

Как выгрузить любой список: «Вывести список»

Журнал документов , справочник номенклатуры, список контрагентов — у любого динамического списка в интерфейсе «Такси» есть команда Ещё → Вывести список....

  1. Откройте список и установите отбор (например, документы реализации за квартал по одному контрагенту).
  2. Выполните Ещё → Вывести список....
  3. В окне снимите галочки с ненужных колонок. Проверьте, что выбран вывод в табличный документ, а не в текстовый.
  4. Нажмите OK — откроется таблица.
  5. Сохраните её через Ctrl+S в .xlsx.

В выгрузку попадают только колонки, которые есть в настройке списка. Нужного реквизита нет — добавьте его заранее: Ещё → Изменить форму... или Ещё → Настроить список... на вкладке выбранных полей.

Печатные формы: счёт, акт, накладная

В типовых конфигурациях (БП 3.0, УТ 11, ЗУП 3.1) форма предварительного просмотра печати имеет кнопку Сохранить. Она предлагает выбрать формат: Excel, PDF, Word и другие. Можно отметить сразу несколько форматов и сохранить пакет документов в одну папку.

Отчёты с итогами и группировками: что сохранится в Excel

Главный вопрос при переносе отчётов — сохранится ли оформление. При сохранении в .xlsx переносятся шрифты, заливка, границы, ширина колонок и, как правило, уровни группировок: в Excel слева появляются «плюсики», как в 1С.

Чего ждать после конвертации:

Что в отчёте 1СЧто будет в ExcelКак поступить
Группировки строкСтруктура с уровнями (кнопки 1, 2, 3 слева)Сворачивайте нужный уровень перед печатью
Итоги и подытогиЗначения, а не формулы СУММПри правке данных пересчитайте итоги сами
Объединённые ячейки в шапкеОбъединённые ячейкиМешают сортировке — снимите объединение или выгрузите «плоско»
Расшифровка (двойной клик)Не переноситсяНужна детализация — выведите её в отдельный отчёт

Для анализа сводными таблицами отчёт с группировками неудобен. Перенастройте его: откройте Настройки..., переключите вид настроек на расширенный, уберите иерархию и выведите детальные записи. Либо используйте универсальный отчёт из раздела Отчеты: в нём выбирают регистр или объект и получают плоскую таблицу.

Способ 2. Копирование через буфер обмена

Самый быстрый путь для фрагмента: выделили ячейки, Ctrl+C, в Excel Ctrl+V.

Копировать можно из табличного документа — отчёта или результата «Вывести список». Из динамического списка напрямую копируется только текущая ячейка или строка, поэтому для блока данных сначала выведите список.

Когда буфер удобен:

  • ✅ нужно 20–200 строк в уже открытую книгу;
  • ✅ вставляете данные рядом с готовыми формулами;
  • ❌ таблица на десятки тысяч строк — вставка будет долгой, надёжнее сохранить файл ;
  • ❌ важны коды с ведущими нулями — при обычной вставке Excel превратит 00045 в 45.

Чтобы вставить без форматов 1С, в Excel используйте Специальная вставка (Ctrl+Alt+V) → «Текст» или «Значения». Так не переедут шрифты, заливка и границы отчёта.

Способ 3. Внешняя обработка: выгрузка по своему запросу

Когда стандартный отчёт не даёт нужных колонок, а «Вывести список» не умеет соединять данные из разных объектов, пишут запрос. Два варианта.

Консоль запросов

Внешняя обработка «Консоль запросов» открывается через Файл → Открыть (меню с тремя полосками в левом верхнем углу). Вы пишете запрос, выполняете его, а результат выводите в табличный документ и сохраняете в .xlsx, как в способе 1. Подходит специалисту, который знает язык запросов.

Своя обработка, которая сама пишет файл

Если выгрузка нужна регулярно, кнопку проще дать пользователю. Пример серверной процедуры: берёт номенклатуру, кроме групп, и записывает файл.

&НаСервере
Процедура ВыгрузитьНоменклатуруНаСервере(ИмяФайла)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Наименование КАК Наименование,
    |    Номенклатура.Артикул КАК Артикул
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    НЕ Номенклатура.ЭтоГруппа
    |УПОРЯДОЧИТЬ ПО
    |    Наименование";

    Выборка = Запрос.Выполнить().Выбрать();

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Область(1, 1, 1, 1).Текст = "Код";
    ТабДок.Область(1, 2, 1, 2).Текст = "Наименование";
    ТабДок.Область(1, 3, 1, 3).Текст = "Артикул";

    НомерСтроки = 1;
    Пока Выборка.Следующий() Цикл
        НомерСтроки = НомерСтроки + 1;
        ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Выборка.Код;
        ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Выборка.Наименование;
        ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3).Текст = Выборка.Артикул;
    КонецЦикла;

    ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

КонецПроцедуры

Реквизит Артикул есть в номенклатуре БП 3.0 и УТ 11. В другой конфигурации замените его на свой реквизит.

Метод Записать() на сервере сохраняет файл на диск сервера 1С, а не на компьютер пользователя. В клиент-серверной базе укажите общую сетевую папку, к которой есть доступ у пользователя, под которым работает служба 1С. Либо сформируйте табличный документ на сервере, передайте на клиент и сохраните там.

Чтобы обработка появилась в меню у бухгалтеров без доработки конфигурации, подключите её как дополнительную: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Для этого обработка должна содержать функцию регистрации СведенияОВнешнейОбработке() по правилам БСП.

Способ 4. COM-соединение: Excel сам забирает данные из базы

Через COM данные тянет внешний скрипт: макрос VBA в Excel, PowerShell или другая программа. Пользователю не нужно открывать 1С.

Что подготовить

  1. Зарегистрируйте компоненту comcntr.dll из папки установленной платформы. Командная строка — от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\comcntr.dll"

Подставьте номер своей версии платформы — он совпадает с именем папки внутри C:\Program Files\1cv8\.

  1. Проверьте разрядность. Компонента 64-битной платформы не видна из 32-битного Excel, и наоборот. Для 32-битного Office ставьте 32-битную платформу (она лежит в C:\Program Files (x86)\1cv8\) и регистрируйте её comcntr.dll.
  2. Заведите в базе пользователя для выгрузки с минимальными правами — только чтение нужных объектов.

Пример макроса VBA

Sub ВыгрузкаИз1С()
    Dim conn As Object, base As Object, q As Object, sel As Object
    Dim r As Long

    Set conn = CreateObject("V83.COMConnector")
    Set base = conn.Connect("File=""D:\Bases\Buh"";Usr=""Выгрузка"";Pwd=""пароль"";")

    Set q = base.NewObject("Запрос")
    q.Text = "ВЫБРАТЬ Код КАК Code, Наименование КАК Name " & _
             "ИЗ Справочник.Контрагенты ГДЕ НЕ ЭтоГруппа"
    Set sel = q.Execute().Choose()

    r = 1
    ActiveSheet.Cells(r, 1).Value = "Код"
    ActiveSheet.Cells(r, 2).Value = "Наименование"
    Do While sel.Next()
        r = r + 1
        ActiveSheet.Cells(r, 1).NumberFormat = "@"
        ActiveSheet.Cells(r, 1).Value = sel.Code
        ActiveSheet.Cells(r, 2).Value = sel.Name
    Loop

    Set sel = Nothing: Set q = Nothing: Set base = Nothing: Set conn = Nothing
End Sub

Приём практика: в запросе полям даны латинские псевдонимы (КАК Code, КАК Name). Тогда в VBA к ним обращаются без кириллических идентификаторов. Ячейке с кодом задан текстовый формат @, чтобы не потерялись ведущие нули.

Для серверной базы строка подключения выглядит так: Srvr="имя_сервера";Ref="имя_базы";Usr="...";Pwd="...";.

COM-соединение — полноценный сеанс 1С: он занимает лицензию, как обычный пользователь. Пароль в тексте макроса виден любому, кто откроет книгу, поэтому такому пользователю давайте только права на чтение.

Есть и обратный вариант: из 1С запустить Excel через Новый COMОбъект("Excel.Application") и заполнять ячейки по одной. Он медленный и требует установленного Excel на той машине, где выполняется код. Для простой выгрузки быстрее ТабличныйДокумент.Записать() из способа 3.

Способ 5. OData и Power Query: таблица, которая обновляется кнопкой

Отдельного ODBC-драйвера к базам 1С платформа не поставляет. Подключать Excel или Power BI напрямую к таблицам SQL Server тоже плохая идея: таблицы называются обезличенно (_Reference37, _Document112), а их состав меняется при обновлении конфигурации.

Рабочая замена ODBC — стандартный интерфейс OData. Excel подключается к нему через Power Query и обновляет данные кнопкой Обновить всё.

Шаги на стороне 1С

  1. Опубликуйте базу на веб-сервере (IIS или Apache) через Администрирование → Публикация на веб-сервере в Конфигураторе. Отметьте публикацию стандартного интерфейса OData.
  2. В режиме Предприятия откройте обработку «Настройка стандартного интерфейса OData». В БП 3.0 и других конфигурациях на БСП она есть в разделе Администрирование; быстрее всего найти её поиском по слову «OData».
  3. Отметьте объекты, которые будут доступны: например, справочник «Номенклатура» и регистр остатков.
  4. Создайте пользователя для OData с правами только на чтение этих объектов.

Шаги в Excel

  1. Данные → Получить данные → Из других источников → Из канала OData.
  2. Вставьте адрес вида:
http://server/buh/odata/standard.odata/Catalog_Номенклатура?$select=Code,Description
  1. Выберите обычную проверку подлинности и введите логин и пароль пользователя OData.
  2. В редакторе Power Query уберите лишние столбцы, задайте типы данных и нажмите Закрыть и загрузить.

Параметры $select и $filter ограничивают объём уже на стороне 1С. Без них Excel вытянет справочник целиком со всеми реквизитами, и обновление будет идти минутами.

Почему цифры в Excel не считаются: ошибки после выгрузки

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

Если сохранение в веб-клиенте ничего не делает, проверьте, не заблокировал ли браузер загрузку файла. Файл из веб-клиента сохраняется через обычное окно загрузки браузера.

Регулярная выгрузка без ручных действий

Если один и тот же файл нужен каждое утро, автоматизируйте его. Три пути, от простого к надёжному:

  1. Сохранённый вариант отчёта. Настройте отчёт один раз и сохраните вариант (Ещё → Сохранить вариант отчета...). Дальше выгрузка — это «открыть, сформировать, Ctrl+S».
  2. Рассылка отчётов. В конфигурациях на БСП есть рассылка: отчёт формируется по расписанию и уходит на почту или в сетевую папку в формате xlsx. Её ищут в разделе Администрирование по слову «Рассылка».
  3. Обработка по расписанию. Дополнительная обработка из способа 3 с серверной командой подключается к расписанию прямо в карточке «Дополнительные отчеты и обработки». Файл появляется в папке без участия людей.

Если обработку нужно запускать из планировщика Windows, используйте параметр запуска /Execute:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Выгрузка" /P"пароль" /Execute"D:\Scripts\vygruzka.epf"

Обработка выполняет выгрузку при открытии формы и закрывает сеанс вызовом ЗавершитьРаботуСистемы(Ложь).

Какой способ выгрузки вам подходит?

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

Можно ли выгрузить из 1С в Excel, если Excel не установлен?
Да. Сохранение табличного документа в xlsx выполняет сама платформа. Файл потом откроется в Excel, LibreOffice Calc или «Р7-Офисе».
Как выгрузить из 1С сразу несколько печатных форм?
Выделите документы в журнале, нажмите «Печать» и в форме просмотра — «Сохранить». Отметьте формат Excel: каждая форма сохранится отдельным файлом в выбранную папку.
Почему в выгрузке нет нужной колонки?
«Вывести список» берёт только видимые колонки списка. Добавьте поле в настройке списка или формы, затем повторите вывод.
Можно ли загрузить отредактированный файл Excel обратно в 1С?
Только отдельным механизмом: загрузкой из файла, встроенной в некоторые формы, или обработкой загрузки. Сохранённый отчёт обратно не загружается — это просто таблица.
Сколько строк можно выгрузить за раз?
Формат xlsx вмещает больше миллиона строк. На практике упираетесь в память компьютера и время формирования табличного документа. Для сотен тысяч строк лучше OData или обработка с записью файла на сервере.