Из 1С в Excel без перепечатывания: от Ctrl+C до OData и COM
Содержание
Чтобы в 1С выгрузить в Эксель любой отчёт или печатную форму, откройте её и сохраните через ☰ → Файл → Сохранить как, выбрав тип «Лист Excel 2007-…» (.xlsx). Список документов или справочник переносится так же, но сначала его надо превратить в таблицу: Ещё → Вывести список…, затем то же сохранение.
Частое заблуждение — что для переноса таблицы из 1С в Эксель нужна платная обработка или программист. Для разовых выгрузок хватает встроенных средств платформы 1С 8.3. Обработки, COM-соединение и OData нужны, когда выгрузку надо повторять регулярно или тянуть данные без участия человека.
С чего начать: что именно вы переносите
Способ зависит от того, откуда берутся данные. В 1С есть три вида «таблиц», и ведут они себя по-разному:
- 📊 Отчёт или печатная форма (ОСВ, «Анализ субконто», счёт, ТОРГ-12). Это уже табличный документ — его сохраняют напрямую в
.xlsx. - 📋 Список (журнал документов , справочник «Номенклатура», «Контрагенты»). Это динамический список, он не сохраняется файлом без промежуточного шага.
- 🧾 Табличная часть документа (строки товаров в реализации). Её копируют выделением или выводят списком из контекстного меню.
Перед выгрузкой проверьте три вещи:
- Настройте отбор и период. В Excel уйдёт ровно то, что видно на экране, — фильтровать 40 000 строк потом в Excel медленнее, чем в 1С.
- Добавьте нужные колонки. В списке это
Ещё → Изменить форму…, в отчёте — кнопкаНастройки. - Уберите лишние группировки, если нужна «плоская» таблица для сводной. Иначе в файл попадут строки итогов и объединённые ячейки.
Способы 1–2. Перенести таблицу из 1С в Эксель штатными средствами
Способ 1. Буфер обмена
Самый быстрый вариант, когда нужно 10–200 строк прямо сейчас.
- Откройте список или табличную часть.
- Выделите строки:
Ctrl+A— все,Shift+клик— диапазон,Ctrl+клик— выборочно. - Нажмите
Ctrl+C. - В Excel встаньте в ячейку
A1и нажмитеCtrl+V.
Колонки разделятся сами: платформа передаёт строки текстом с табуляцией. В отчёте можно выделить мышью прямоугольную область ячеек и скопировать её тем же способом.
Ограничения у способа серьёзные:
- ❌ в динамическом списке копируются только загруженные строки — на больших справочниках часть может не попасть;
- ❌ шапка колонок не копируется из списка, её придётся набрать;
- ❌ суммы вставляются с разделителем разрядов, и Excel часто считает их текстом (как это исправить — в разделе про ошибки).
Если строк больше пары сотен, не мучайтесь с выделением: Ещё → Вывести список… даёт тот же результат целиком и сразу с заголовками.
Способ 2. Сохранение файлом .xlsx
Основной штатный способ. Работает в БП 3.0, ЗУП 3.1, УТ 11 и любой конфигурации на платформе 8.3 одинаково, потому что сохранение — функция самой платформы, а не конфигурации.
Отчёт или печатная форма:
- Сформируйте отчёт или откройте печатную форму документа.
- Нажмите кнопку с дискетой в командной панели отчёта или откройте
☰ → Файл → Сохранить как. - В поле «Тип файла» выберите «Лист Excel 2007-…» (
*.xlsx). - Укажите папку и имя файла, нажмите «Сохранить».
Список документов или справочник:
- Откройте список, настройте отбор.
- Выберите
Ещё → Вывести список…. - В окне снимите флажки с лишних колонок. Здесь же можно вывести не табличный документ, а текстовый — для
.txt. - Нажмите «ОК». Откроется табличный документ.
- Сохраните его через
☰ → Файл → Сохранить какв.xlsx.
Какие форматы предлагает окно сохранения и для чего они:
| Формат | Когда брать | Что учесть |
|---|---|---|
.xlsx | почти всегда | до 1 048 576 строк, современный Excel и «Р7», «МойОфис» |
.xls | только для очень старого Excel | лимит 65 536 строк, остальное обрежется |
.ods | LibreOffice | открывается и в Excel |
.mxl | передать коллеге с 1С | Excel его не откроет |
.pdf | отправить «как есть» | редактировать нельзя |
Сохраняется оформление: шрифты, рамки, объединённые ячейки, ширина колонок. Формулы не сохраняются — в Excel попадают только значения.
В веб-клиенте и в 1С:Фреш окно сохранения отличается: файл скачивается через браузер в папку «Загрузки». Тип выбирается в окне 1С перед скачиванием.
Способ 3. Внешняя обработка: когда стандартных отчётов мало
Обработка нужна, если данные разбросаны по разным объектам и ни один отчёт не собирает их в одну таблицу. Пример: контрагенты с ИНН, ответственным менеджером и суммой долга по последнему договору.
Сначала проверьте Универсальный отчёт в БП 3.0: он есть в разделе «Отчёты» и выводит любой справочник, документ или регистр с выбранными полями и отборами. Часто он закрывает задачу без кода.
Если не закрывает — пишется внешняя обработка .epf. Подключают её так:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.- Кнопка «Добавить из файла…», выбор
.epf, «Записать и закрыть». - Запуск — из того раздела, куда обработку разместили при регистрации.
Вот рабочий пример команды формы обработки. Запрос выбирает контрагентов, заполняет табличный документ, сервер записывает .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С.
Что нужно подготовить:
- Зарегистрировать компоненту: от имени администратора выполнить
regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll"(подставьте свою версию). - Совпадение разрядности: 32-битному Office нужна 32-битная платформа (
C:\Program Files (x86)\1cv8\...), 64-битному — 64-битная. - Отдельный пользователь 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С в
.xlsxв одну папку, напримерD:\Выгрузки\ОСВ\. - В Excel:
Данные → Получить данные → Из файла → Из папки, укажите папку. - Нажмите «Объединить и преобразовать», удалите в редакторе строки шапки и итогов отчёта.
- Загрузите результат на лист или в модель данных.
Дальше достаточно положить новый файл и нажать Данные → Обновить все. Все шаги очистки повторятся автоматически.
Схема OData: прямой канал к базе
Платформа 8.3 умеет отдавать данные по протоколу OData — это стандартный REST-интерфейс.
- Администратор публикует базу на веб-сервере (Apache или IIS) и в окне публикации включает флажок «Публиковать стандартный интерфейс OData».
- В базе указывается, какие справочники, документы и регистры доступны через OData. Без этого шага интерфейс отвечает, но список объектов пуст.
- В Excel:
Данные → Получить данные → Из других источников → Из канала OData, адрес видаhttp://server/buh/odata/standard.odata/. - Ввести логин и пароль пользователя 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 | интеграция с другими системами | любой | программист | сложная структура |