Из 1С в таблицу Excel: шесть способов от Ctrl+C до OData

· 11 мин

Содержание

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

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

Что выбрать и что проверить до выгрузки

Сначала определите, откуда берутся данные. От этого зависит способ.

СпособКогда подходитКто делаетОграничения
Копирование ячеекНужно 5–50 строк прямо сейчасЛюбой пользовательТеряются форматы, ведущие нули в кодах
Сохранение отчёта в xlsxОСВ, анализ счёта, любой отчётЛюбой пользовательТолько то, что показано в отчёте
«Вывести список»Журнал документов, справочникЛюбой пользовательТолько колонки формы списка
«Все функции» + универсальный отчётРегистр или таблица без готового отчётаОпытный пользовательНужно право на команду
Внешняя обработкаНестандартная выборка, повторяемая задачаПрограммист 1СНужно разрешение на запуск внешних обработок
COM, OData, ODBCРегулярная автоматическая выгрузкаПрограммист, администраторWindows (COM), веб-публикация (OData)

Перед стартом проверьте три вещи:

  • 📌 Период и отбор. Отчёт сохраняется ровно таким, каким он сформирован на экране. Если в нём свёрнута группировка или стоит отбор по одной организации, в файл попадёт то же самое.
  • 📌 Версия Excel у получателя. Формат *.xls (Excel 97–2003) ограничен 65 536 строками и 256 колонками. Формат *.xlsx вмещает 1 048 576 строк. Если получатель работает в LibreOffice, можно сразу выбрать *.ods.
  • 📌 Права. Команда «Все функции» и запуск внешних обработок в типовых конфигурациях часто закрыты для рядового пользователя. Если их нет в меню, это вопрос к администратору базы, а не поломка.
Какие данные нужно получить в Excel?

Быстрый перенос через буфер обмена

Самый короткий путь для небольшого фрагмента. Подходит, когда нужно вставить пару строк в письмо или сверить несколько сумм.

  1. Сформируйте отчёт.
  2. Выделите ячейки мышью. Чтобы выделить большой диапазон, щёлкните по первой ячейке, прокрутите вниз и щёлкните по последней с зажатым Shift.
  3. Нажмите Ctrl+C.
  4. В Excel встаньте в ячейку A1 и нажмите Ctrl+V.

Чтобы выделить весь отчёт целиком, щёлкните в любую его ячейку и нажмите Ctrl+A.

При вставке через буфер Excel сам решает, что перед ним: число, дата или текст. Код номенклатуры 00-00000123 останется строкой, а код 000123 превратится в число 123. Суммы с разделителем разрядов иногда вставляются как текст и не суммируются. Как это лечить, разобрано в разделе про ошибки.

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

Сохранение отчёта или списка в файл Excel

Отчёт: ОСВ, анализ счёта, карточка, ведомость

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

В веб-клиенте файл не сохраняется в выбранную папку, а скачивается браузером, как любая загрузка.

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

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

Форма списка не сохраняется напрямую, сначала её превращают в табличный документ.

  1. Откройте список, например Продажи → Реализация (акты, накладные, УПД) в БП 3.0 или справочник номенклатуры.
  2. Установите отборы и период. Если нужны дополнительные колонки, добавьте их через Ещё → Изменить форму….
  3. Выполните Ещё → Вывести список….
  4. В окне выберите «Табличный документ», отметьте нужные колонки. Флажок «Только выделенные» выведет только отмеченные строки.
  5. Нажмите «ОК». Откроется таблица, которую сохраняют через Ctrl+S в *.xlsx.

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

Печатная форма документа

Счёт, накладную или акт тоже можно сохранить в Excel. Откройте печатную форму через кнопку «Печать» и в окне предварительного просмотра нажмите кнопку сохранения. Там же выбирается формат: xlsx, pdf, docx. Флажок «Упаковать в архив» нужен, если сохраняете сразу пачку форм.

Выгрузка из 1С 8.3 любой таблицы через «Все функции»

Когда нужного отчёта нет, а данные лежат в регистре сведений, регистре накоплений или служебном справочнике, помогает команда «Все функции». Через неё открывается список любого объекта конфигурации.

Как включить команду

  1. Нажмите кнопку главного меню (значок с тремя полосками в левом верхнем углу).
  2. Выберите Сервис и настройки → Параметры.
  3. Установите флажок «Отображать команду “Все функции”» и нажмите «Применить».

После этого в главном меню появится пункт «Все функции».

Как выгрузить объект

  1. Откройте Главное меню → Все функции.
  2. Раскройте ветку нужного типа: «Справочники», «Документы», «Регистры сведений», «Регистры накопления».
  3. Откройте объект двойным щелчком. Например, регистр сведений «Цены номенклатуры» в БП 3.0 даст полную историю цен.
  4. Выполните Ещё → Вывести список… и сохраните таблицу в xlsx, как описано выше.

Универсальный отчёт

В БП 3.0 и других конфигурациях на БСП есть «Универсальный отчет » (раздел Отчеты). В его настройках выбирают тип объекта, сам объект и поля, а результат формируется как обычный отчёт. Значит, его сохраняют через Ctrl+S.

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

Своя внешняя обработка для выгрузки

Если выгрузка нестандартная (например, номенклатура с ценами двух видов и остатком в одной строке) и её делают регулярно, программист пишет внешнюю обработку . Она выполняет запрос и выводит результат в табличный документ, который пользователь сохраняет в xlsx.

Подключают такую обработку через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Разово её можно открыть через Главное меню → Файл → Открыть, если у пользователя есть право на интерактивное открытие внешних обработок.

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

&НаСервереБезКонтекста
Функция СобратьТаблицу()
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номенклатура.Код КАК Код,
	|	Номенклатура.Наименование КАК Наименование
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	НЕ Номенклатура.ПометкаУдаления
	|	И НЕ Номенклатура.ЭтоГруппа
	|УПОРЯДОЧИТЬ ПО
	|	Наименование";
	
	ТабДок = Новый ТабличныйДокумент;
	ТабДок.Область("R1C1").Текст = "Код";
	ТабДок.Область("R1C2").Текст = "Наименование";
	
	НомерСтроки = 1;
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НомерСтроки = НомерСтроки + 1;
		Стр = "R" + Формат(НомерСтроки, "ЧГ=0");
		ТабДок.Область(Стр + "C1").Текст = Выборка.Код;
		ТабДок.Область(Стр + "C2").Текст = Выборка.Наименование;
	КонецЦикла;
	
	Возврат ТабДок;
	
КонецФункции

&НаКлиенте
Процедура Выгрузить(Команда)
	ТабДок = СобратьТаблицу();
	ТабДок.Показать("Номенклатура для Excel");
КонецПроцедуры

Формат(НомерСтроки, "ЧГ=0") нужен, чтобы в адресе ячейки не появился пробел разделителя разрядов: без него строка 1000 превратится в R1 000C1, и код упадёт.

Если файл нужно записывать без участия пользователя (например, по регламентному заданию на сервере), используют метод ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX). Путь в этом случае указывает на диск того компьютера, где выполняется код, то есть сервера 1С.

Для разовой сложной выборки программисты обходятся без отдельной обработки: пишут запрос в консоли запросов, выводят результат в табличный документ и сохраняют его в xlsx.

Автоматическая выгрузка данных из 1С через COM

COM-технология работает только в Windows. Есть два направления, и их часто путают.

1С управляет Excel

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

На практике сейчас чаще собирают табличный документ и сохраняют его в xlsx, а COM оставляют для случаев, когда нужен готовый шаблон книги с формулами.

Excel забирает данные из 1С

Макрос VBA в Excel подключается к базе через внешнее соединение V83.COMConnector и сам выполняет запрос. Так делают отчёты, которые обновляются кнопкой в книге.

Dim Connector, Base
Set Connector = CreateObject("V83.COMConnector")
Set Base = Connector.Connect("File=""C:\Bases\Buh"";Usr=""Выгрузка"";Pwd=""пароль"";")

Для клиент-серверной базы строка подключения имеет вид Srvr="ИмяСервера";Ref="ИмяБазы";Usr="…";Pwd="…";.

Что нужно для работы:

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

Номер версии в пути подставьте свой.

  1. Совпадение разрядности. 32-битный Excel видит только 32-битную платформу и её comcntr.dll (каталог Program Files (x86)), 64-битный — только 64-битную. Это главная причина ошибки «Cannot create ActiveX component» или «ActiveX-компонент не может создать объект».
  2. Отдельный пользователь 1С для выгрузки с минимальными правами. Пароль в макросе хранится открытым текстом, поэтому давать ему права администратора нельзя.
  3. Лицензия. Каждое COM-соединение занимает клиентскую лицензию, как обычный сеанс.

Прямое подключение Excel к базе: OData и ODBC

OData: актуальный способ

В платформе 8.3 есть стандартный интерфейс OData. Excel умеет читать его через Power Query, и таблица обновляется одной кнопкой без макросов.

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

Дальше данные обновляются командой «Обновить всё» на вкладке «Данные». Публикацию наружу без HTTPS не делают: логин и пароль передаются при каждом запросе.

ODBC для больших баз

У платформы 8.3 нет собственного ODBC-драйвера к файловой базе, как было в 7.7. Через ODBC подключаются только к СУБД клиент-серверной базы (MS SQL, PostgreSQL), минуя 1С.

ПлюсыМинусы
Очень быстро на миллионах строкТаблицы называются _Reference37, _AccumRg1520, понять их без расшифровки нельзя
Не занимает лицензию 1СПрава пользователей 1С и RLS не действуют
Удобно для BI-системСтруктура меняется после обновления конфигурации

Расшифровку имён даёт функция платформы ПолучитьСтруктуруХраненияБазыДанных(): программист выводит её результат и строит соответствие «таблица СУБД — объект 1С».

Читайте СУБД только учётной записью с правом на чтение и никогда не пишите в таблицы базы 1С напрямую — это ломает целостность данных, и восстанавливать базу придётся из резервной копии. Если важна поддержка и права доступа , выбирайте OData.

Ошибки при выгрузке в Excel и доводка таблицы

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

Как подготовить таблицу к анализу

Отчёт 1С сохраняется в Excel «как на экране»: с шапкой, группировками и итогами. Для сводных таблиц такую форму надо почистить.

  1. Удалите строки шапки над таблицей, чтобы первой строкой стали названия колонок.
  2. Снимите объединение ячеек во всём диапазоне.
  3. Удалите строки итогов и промежуточных итогов: сводная таблица посчитает их сама.
  4. Если группировки выведены лесенкой (контрагент в одной строке, договоры под ним), заполните пустые ячейки значением сверху: Главная → Найти и выделить → Выделить группу ячеек → Пустые ячейки, введите = и ссылку на ячейку выше, затем Ctrl+Enter.
  5. Превратите диапазон в таблицу клавишами Ctrl+T. Фильтры и формулы будут растягиваться на новые строки.

Проще сразу формировать в 1С плоский отчёт. В настройках отчёта на БСП переключитесь в расширенный режим и уберите иерархические группировки, оставив детальные записи. Тогда в Excel придёт таблица, пригодная для сводной без ручной чистки.

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

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