Из 1С в Excel без перепечатывания: от Ctrl+C до OData и COM

· 10 мин

Содержание

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

Частое заблуждение — что для переноса таблицы из 1С в Эксель нужна платная обработка или программист. Для разовых выгрузок хватает встроенных средств платформы 1С 8.3. Обработки, COM-соединение и OData нужны, когда выгрузку надо повторять регулярно или тянуть данные без участия человека.

С чего начать: что именно вы переносите

Способ зависит от того, откуда берутся данные. В 1С есть три вида «таблиц», и ведут они себя по-разному:

  • 📊 Отчёт или печатная форма (ОСВ, «Анализ субконто», счёт, ТОРГ-12). Это уже табличный документ — его сохраняют напрямую в .xlsx.
  • 📋 Список (журнал документов , справочник «Номенклатура», «Контрагенты»). Это динамический список, он не сохраняется файлом без промежуточного шага.
  • 🧾 Табличная часть документа (строки товаров в реализации). Её копируют выделением или выводят списком из контекстного меню.

Перед выгрузкой проверьте три вещи:

  1. Настройте отбор и период. В Excel уйдёт ровно то, что видно на экране, — фильтровать 40 000 строк потом в Excel медленнее, чем в 1С.
  2. Добавьте нужные колонки. В списке это Ещё → Изменить форму…, в отчёте — кнопка Настройки.
  3. Уберите лишние группировки, если нужна «плоская» таблица для сводной. Иначе в файл попадут строки итогов и объединённые ячейки.

Способы 1–2. Перенести таблицу из 1С в Эксель штатными средствами

Способ 1. Буфер обмена

Самый быстрый вариант, когда нужно 10–200 строк прямо сейчас.

  1. Откройте список или табличную часть.
  2. Выделите строки: Ctrl+A — все, Shift+клик — диапазон, Ctrl+клик — выборочно.
  3. Нажмите Ctrl+C.
  4. В Excel встаньте в ячейку A1 и нажмите Ctrl+V.

Колонки разделятся сами: платформа передаёт строки текстом с табуляцией. В отчёте можно выделить мышью прямоугольную область ячеек и скопировать её тем же способом.

Ограничения у способа серьёзные:

  • ❌ в динамическом списке копируются только загруженные строки — на больших справочниках часть может не попасть;
  • ❌ шапка колонок не копируется из списка, её придётся набрать;
  • ❌ суммы вставляются с разделителем разрядов, и Excel часто считает их текстом (как это исправить — в разделе про ошибки).

Если строк больше пары сотен, не мучайтесь с выделением: Ещё → Вывести список… даёт тот же результат целиком и сразу с заголовками.

Способ 2. Сохранение файлом .xlsx

Основной штатный способ. Работает в БП 3.0, ЗУП 3.1, УТ 11 и любой конфигурации на платформе 8.3 одинаково, потому что сохранение — функция самой платформы, а не конфигурации.

Отчёт или печатная форма:

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

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

  1. Откройте список, настройте отбор.
  2. Выберите Ещё → Вывести список….
  3. В окне снимите флажки с лишних колонок. Здесь же можно вывести не табличный документ, а текстовый — для .txt.
  4. Нажмите «ОК». Откроется табличный документ.
  5. Сохраните его через ☰ → Файл → Сохранить как в .xlsx.

Какие форматы предлагает окно сохранения и для чего они:

ФорматКогда братьЧто учесть
.xlsxпочти всегдадо 1 048 576 строк, современный Excel и «Р7», «МойОфис»
.xlsтолько для очень старого Excelлимит 65 536 строк, остальное обрежется
.odsLibreOfficeоткрывается и в Excel
.mxlпередать коллеге с 1СExcel его не откроет
.pdfотправить «как есть»редактировать нельзя

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

В веб-клиенте и в 1С:Фреш окно сохранения отличается: файл скачивается через браузер в папку «Загрузки». Тип выбирается в окне 1С перед скачиванием.

Способ 3. Внешняя обработка: когда стандартных отчётов мало

Обработка нужна, если данные разбросаны по разным объектам и ни один отчёт не собирает их в одну таблицу. Пример: контрагенты с ИНН, ответственным менеджером и суммой долга по последнему договору.

Сначала проверьте Универсальный отчёт в БП 3.0: он есть в разделе «Отчёты» и выводит любой справочник, документ или регистр с выбранными полями и отборами. Часто он закрывает задачу без кода.

Если не закрывает — пишется внешняя обработка .epf. Подключают её так:

  1. Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  2. Кнопка «Добавить из файла…», выбор .epf, «Записать и закрыть».
  3. Запуск — из того раздела, куда обработку разместили при регистрации.

Вот рабочий пример команды формы обработки. Запрос выбирает контрагентов, заполняет табличный документ, сервер записывает .xlsx во временный файл, а клиент предлагает сохранить его на диск. Код рассчитан на конфигурации на БСП (БП 3.0, ЗУП 3.1, УТ 11).

&НаСервере
Функция СформироватьФайлНаСервере()

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

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

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

	ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
	ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
	Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла), УникальныйИдентификатор);
	УдалитьФайлы(ИмяФайла);

	Возврат Адрес;

КонецФункции

&НаКлиенте
Процедура ВыгрузитьВExcel(Команда)
	Адрес = СформироватьФайлНаСервере();
	ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, Адрес, "Контрагенты.xlsx");
КонецПроцедуры

Почему файл пишется на сервере, а не сразу на диск пользователя: в клиент-серверной базе метод Записать на сервере создаёт файл на диске сервера 1С. Поэтому файл кладут во временное хранилище и отдают клиенту.

Внешние обработки из интернета запускайте только после проверки кода. При подключении 1С предупреждает о небезопасном действии — это не формальность: обработка получает те же права, что и вы.

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

Здесь инициатор — Excel. Макрос VBA подключается к базе через V83.COMConnector, выполняет запрос и раскладывает результат по ячейкам. Пользователь нажимает кнопку в книге и получает свежие данные, не открывая 1С.

Что нужно подготовить:

  1. Зарегистрировать компоненту: от имени администратора выполнить regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll" (подставьте свою версию).
  2. Совпадение разрядности: 32-битному Office нужна 32-битная платформа (C:\Program Files (x86)\1cv8\...), 64-битному — 64-битная.
  3. Отдельный пользователь 1С с правом «Внешнее соединение» и минимальными правами на чтение.

Пример макроса для файловой базы:

Sub LoadFrom1C()
    Dim Connector As Object, Conn As Object
    Dim Q As Object, Sel As Object
    Dim r As Long

    Set Connector = CreateObject("V83.COMConnector")
    Set Conn = Connector.Connect("File=""C:\Bases\Buh"";Usr=""Excel"";Pwd=""12345""")

    Set Q = Conn.NewObject("Query")
    Q.Text = "ВЫБРАТЬ Наименование КАК Name, ИНН КАК INN " & _
             "ИЗ Справочник.Контрагенты ГДЕ НЕ ЭтоГруппа"
    Set Sel = Q.Execute().Select()

    With ThisWorkbook.Sheets(1)
        .Cells.ClearContents
        .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).NumberFormat = "@"
            .Cells(r, 2).Value = Sel.INN
        Loop
    End With

    Set Sel = Nothing: Set Q = Nothing: Set Conn = Nothing
End Sub

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

Латинские псевдонимы Name и INN в запросе — практический приём: так в VBA не приходится писать кириллические имена свойств. ИНН выводится как текст (NumberFormat = "@"), чтобы Excel не съел ведущие нули у ИНН, начинающихся с «0».

Минусы, о которых молчат продавцы готовых решений:

  • 🔑 каждое COM-соединение занимает клиентскую лицензию, как обычный сеанс;
  • 🔐 пароль лежит в макросе открытым текстом — защитите книгу и дайте пользователю только чтение;
  • 🐢 на 50 000+ строк построчная запись в ячейки медленная; быстрее собрать массив и записать его в диапазон одной операцией.

Способ 5. Power Query: обновляемая выгрузка без программирования

Power Query встроен в Excel 2016 и новее (вкладка «Данные»). Прямого коннектора к базе 1С у него нет, поэтому рабочих схем две.

Схема «папка с выгрузками»

Подходит всем, ничего не требует от администратора.

  1. Раз в день или неделю сохраняйте отчёт из 1С в .xlsx в одну папку, например D:\Выгрузки\ОСВ\.
  2. В Excel: Данные → Получить данные → Из файла → Из папки, укажите папку.
  3. Нажмите «Объединить и преобразовать», удалите в редакторе строки шапки и итогов отчёта.
  4. Загрузите результат на лист или в модель данных.

Дальше достаточно положить новый файл и нажать Данные → Обновить все. Все шаги очистки повторятся автоматически.

Схема OData: прямой канал к базе

Платформа 8.3 умеет отдавать данные по протоколу OData — это стандартный REST-интерфейс.

  1. Администратор публикует базу на веб-сервере (Apache или IIS) и в окне публикации включает флажок «Публиковать стандартный интерфейс OData».
  2. В базе указывается, какие справочники, документы и регистры доступны через OData. Без этого шага интерфейс отвечает, но список объектов пуст.
  3. В Excel: Данные → Получить данные → Из других источников → Из канала OData, адрес вида http://server/buh/odata/standard.odata/.
  4. Ввести логин и пароль пользователя 1С, выбрать таблицы, например Catalog_Контрагенты.

Через OData удобно строить сводные по регистрам накопления: таблицы ..._Balance и ..._Turnovers возвращают остатки и обороты без написания запросов.

Способ 6. Файлы обмена XML и JSON

Этот путь нужен не для «посмотреть в Excel», а для интеграции: передать данные в BI-систему, сайт, другую учётную программу.

  • 📦 EnterpriseData (XML) — формат типовых обменов БП, УТ, ЗУП. Файл можно открыть в Excel через Данные → Получить данные → Из файла → Из XML, но структура вложенная, и разворачивать её придётся в Power Query.
  • 🧩 JSON — выгружается обработкой или HTTP-сервисом. В Excel читается через Из файла → Из JSON.
  • 📄 CSV / TXT — самый простой вариант для импорта в сторонние системы. Табличный документ сохраняется в .txt, а из Вывести список можно сразу получить текстовый документ.

Если цель — именно таблица Excel, файлы обмена обычно лишнее звено. Сохранить отчёт в .xlsx проще и надёжнее.

Какой способ выбрать: сравнение

СпособКогда подходитОбъёмНужны права/навыкиРиски
Ctrl+C / Ctrl+Vразовая выборка «на глаз»до сотен строкнетчисла текстом, неполный список
«Сохранить как» .xlsxотчёты, печатные формы, спискидо ~1 млн строкнетитоги и шапка в данных
Универсальный отчёт / обработкасвоя таблица из нескольких объектовлюбойправа на доп. обработки, коднепроверенный код
COM из VBAкнопка «обновить» в Excelдесятки тысяч строкадминистратор, VBAлицензия, пароль в макросе
Power Query «из папки»регулярные отчёты без ITлюбойнетручное сохранение файлов
ODataживые данные без участия человекалюбойвеб-сервер, администратороткрытый доступ к данным
XML / JSONинтеграция с другими системамилюбойпрограммистсложная структура
Перед отправкой файла коллеге или аудитору
Выполнено: 0 / 5

Ошибки при выгрузке из 1С в Excel и как их исправить

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

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

Можно ли выгрузить из 1С в Excel вместе с формулами?
Нет. Табличный документ 1С хранит готовые значения, поэтому в Excel попадают числа и текст. Формулы добавляют уже в Excel.
Как выгрузить из 1С картинки товаров вместе с таблицей?
Через «Сохранить как» — только если картинки выведены в сам отчёт или печатную форму (например, в прайс-листе). Из списка через «Вывести список» картинки не выводятся.
Почему в Excel пустые колонки, хотя в 1С данные есть?
В списке колонка может быть добавлена в форму, но скрыта в окне «Вывести список». Откройте окно заново и проверьте флажки колонок.
Как настроить, чтобы 1С сразу открывала отчёт в Excel?
Штатной кнопки «открыть в Excel» в типовых конфигурациях нет. Сохраните файл и откройте его, либо используйте Power Query или COM, чтобы данные обновлялись в готовой книге.
Можно ли выгрузить данные, если в 1С нет прав на сохранение?
Если роль запрещает вывод в файл и печать, кнопки сохранения недоступны. Это ограничение безопасности: права выдаёт администратор базы, обходить его не стоит.