Отчёты, списки и печатные формы из 1С:Предприятия 8.3 — в таблицу Excel
Содержание
Чтобы выгрузить данные из 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
- Сформируйте отчёт: задайте период, организацию, нажмите
Сформировать. - Нажмите
Ctrl+Sили кнопку с дискетой в командной панели отчёта. В части отчётов команда спрятана в менюЕщё → Сохранить как.... - В окне сохранения выберите тип файла «Лист Excel 2007-…» (
*.xlsx). - Укажите папку и имя файла, нажмите
Сохранить.
Если команда сохранения серая — отчёт ещё не сформирован. Сохраняется только готовый табличный документ.
Как выгрузить любой список: «Вывести список»
Журнал документов
, справочник номенклатуры, список контрагентов — у любого динамического списка в интерфейсе «Такси» есть команда Ещё → Вывести список....
- Откройте список и установите отбор (например, документы реализации за квартал по одному контрагенту).
- Выполните
Ещё → Вывести список.... - В окне снимите галочки с ненужных колонок. Проверьте, что выбран вывод в табличный документ, а не в текстовый.
- Нажмите
OK— откроется таблица. - Сохраните её через
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С.
Что подготовить
- Зарегистрируйте компоненту
comcntr.dllиз папки установленной платформы. Командная строка — от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\comcntr.dll"
Подставьте номер своей версии платформы — он совпадает с именем папки внутри C:\Program Files\1cv8\.
- Проверьте разрядность. Компонента 64-битной платформы не видна из 32-битного Excel, и наоборот. Для 32-битного Office ставьте 32-битную платформу (она лежит в
C:\Program Files (x86)\1cv8\) и регистрируйте еёcomcntr.dll. - Заведите в базе пользователя для выгрузки с минимальными правами — только чтение нужных объектов.
Пример макроса 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С
- Опубликуйте базу на веб-сервере (IIS или Apache) через
Администрирование → Публикация на веб-серверев Конфигураторе. Отметьте публикацию стандартного интерфейса OData. - В режиме Предприятия откройте обработку «Настройка стандартного интерфейса OData». В БП 3.0 и других конфигурациях на БСП она есть в разделе
Администрирование; быстрее всего найти её поиском по слову «OData». - Отметьте объекты, которые будут доступны: например, справочник «Номенклатура» и регистр остатков.
- Создайте пользователя для OData с правами только на чтение этих объектов.
Шаги в Excel
Данные → Получить данные → Из других источников → Из канала OData.- Вставьте адрес вида:
http://server/buh/odata/standard.odata/Catalog_Номенклатура?$select=Code,Description
- Выберите обычную проверку подлинности и введите логин и пароль пользователя OData.
- В редакторе Power Query уберите лишние столбцы, задайте типы данных и нажмите
Закрыть и загрузить.
Параметры $select и $filter ограничивают объём уже на стороне 1С. Без них Excel вытянет справочник целиком со всеми реквизитами, и обновление будет идти минутами.
Почему цифры в Excel не считаются: ошибки после выгрузки
Если сохранение в веб-клиенте ничего не делает, проверьте, не заблокировал ли браузер загрузку файла. Файл из веб-клиента сохраняется через обычное окно загрузки браузера.
Регулярная выгрузка без ручных действий
Если один и тот же файл нужен каждое утро, автоматизируйте его. Три пути, от простого к надёжному:
- Сохранённый вариант отчёта. Настройте отчёт один раз и сохраните вариант (
Ещё → Сохранить вариант отчета...). Дальше выгрузка — это «открыть, сформировать,Ctrl+S». - Рассылка отчётов. В конфигурациях на БСП есть рассылка: отчёт формируется по расписанию и уходит на почту или в сетевую папку в формате xlsx. Её ищут в разделе
Администрированиепо слову «Рассылка». - Обработка по расписанию. Дополнительная обработка из способа 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"
Обработка выполняет выгрузку при открытии формы и закрывает сеанс вызовом ЗавершитьРаботуСистемы(Ложь).