Пять способов перенести данные 1С в Excel: от списка справочника до OData

· 11 мин

Содержание

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

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

Какой способ выгрузки в Excel выбрать под задачу

Прежде чем жать кнопки, ответьте себе на два вопроса. Что за данные — строки списка, итоги отчёта или произвольная выборка? И нужна ли выгрузка один раз или каждый день.

ЗадачаСпособНужны права
Список контрагентов, номенклатуры, документовЕщё → Вывести список…Обычный пользователь
Отчёт (ОСВ, остатки, продажи)Сохранение табличного документа в xlsxОбычный пользователь
Печатная форма (счёт, ТОРГ-12, УПД)Кнопка Сохранить в форме печатиОбычный пользователь
Выборка из нескольких таблицКонсоль запросов (внешняя обработка)Право открывать внешние обработки
Регулярная выгрузка по расписаниюКод на встроенном языке, регламентное заданиеРазработчик
Excel сам тянет свежие данныеOData или COM-соединениеАдминистратор
Что вам нужно получить в Excel?

«Вывести список»: выгрузка любого списка из 1С в Excel

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

  1. Откройте нужный список, например Справочники → Контрагенты.
  2. Настройте отбор, если нужны не все строки: поиск, отбор по колонке или кнопка Ещё → Настроить список….
  3. Нажмите Ещё → Вывести список….
  4. В диалоге снимите галочки с лишних колонок. Если выделили строки заранее, отметьте «Только выделенные».
  5. Оставьте вывод в табличный документ и нажмите ОК.
  6. В открывшемся документе нажмите значок дискеты или Ctrl+S, выберите тип «Лист Excel 2007-…» и укажите папку.

Колонок в списке мало? Сначала добавьте их через Ещё → Изменить форму… или в настройках списка, а потом выводите. «Вывести список» берёт только те колонки, что видны в форме.

Когда нужного списка нет в меню

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

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

Если пункта «Все функции» нет даже после флажка, у пользователя урезаны права. Это решает администратор базы.

Как сохранить отчёт или печатную форму 1С в файл Excel

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

Отчёт

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

Печатная форма

В форме предварительного просмотра (после команды Печать в документе) есть кнопка Сохранить. Она предлагает выбрать формат, а в типовых конфигурациях ещё и куда сохранить: на компьютер или присоединить файлом к документу. Отметьте xlsx и при необходимости флажок упаковки в архив.

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

Как получить из отчёта «плоскую» таблицу

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

  1. Откройте Настройки… отчёта и переключитесь на расширенный вид.
  2. На вкладке структуры удалите группировки и оставьте только «Детальные записи».
  3. Отключите общие итоги, если они не нужны.
  4. Сформируйте отчёт и сохраните в xlsx.

Получится таблица, где каждая строка — одна запись, а каждая колонка — одно поле. Именно такую таблицу Excel лучше всего превращает в сводную.

Консоль запросов и внешние обработки для сложных выгрузок

Когда данных нет ни в одном отчёте (например, «контрагенты с ИНН и суммой отгрузок за квартал»), помогает консоль запросов. Это внешняя обработка, которую распространяет фирма 1С для разработчиков; есть и бесплатные аналоги от сообщества.

Порядок работы:

  1. Откройте обработку через Файл → Открыть… в главном меню.
  2. Напишите запрос или соберите его конструктором.
  3. Выполните его и выведите результат в табличный документ.
  4. Сохраните табличный документ в xlsx так же, как отчёт.

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

Консоль только читает данные, если в ней выполняется запрос. Запрос на языке 1С не умеет менять записи, поэтому сам по себе безопасен. Опасны обработки, у которых есть свои кнопки «Выполнить» или «Записать».

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

Выгрузка в Excel кодом на встроенном языке

Программная выгрузка нужна, когда файл должен появляться без участия человека: по расписанию, по кнопке в документе, в общую папку. Основа — объект ТабличныйДокумент и его метод Записать() с типом ТипФайлаТабличногоДокумента.XLSX.

Пример серверной процедуры: выбирает номенклатуру и пишет файл с заголовками колонок. Числа кладутся как числа, а не текстом, чтобы в Excel по ним считались суммы.

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

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

	Таблица = Запрос.Выполнить().Выгрузить();
	ТабДок = Новый ТабличныйДокумент;

	// Заголовки колонок в первой строке
	Для Индекс = 0 По Таблица.Колонки.Количество() - 1 Цикл
		ТабДок.Область(1, Индекс + 1).Текст = Таблица.Колонки[Индекс].Имя;
	КонецЦикла;

	// Данные со второй строки
	НомерСтроки = 1;
	Для Каждого СтрокаТаблицы Из Таблица Цикл
		НомерСтроки = НомерСтроки + 1;
		Для Индекс = 0 По Таблица.Колонки.Количество() - 1 Цикл
			Значение = СтрокаТаблицы[Индекс];
			Ячейка = ТабДок.Область(НомерСтроки, Индекс + 1);
			Если ТипЗнч(Значение) = Тип("Число") Тогда
				Ячейка.СодержитЗначение = Истина;
				Ячейка.Значение = Значение;
			Иначе
				Ячейка.Текст = Строка(Значение);
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;

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

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

Что учесть при внедрении:

  • 📁 Код на сервере пишет файл в файловую систему сервера. В клиент-серверной базе путь C:\Выгрузка\ окажется на сервере 1С, а не на компьютере пользователя. Чтобы отдать файл пользователю, запишите его во временный файл (ПолучитьИмяВременногоФайла("xlsx")), поместите во временное хранилище и скачайте на клиенте.
  • ⏱ Для регламентного задания укажите сетевую папку, к которой есть доступ у пользователя, от имени которого запущена служба сервера 1С.
  • 🧮 Для больших объёмов быстрее выводить результат через схему компоновки данных с выводом в табличный документ, чем заполнять ячейки в цикле.

Старый путь через Новый COMОбъект("Excel.Application") тоже работает, но требует установленного Excel, только Windows и заметно медленнее. Им имеет смысл пользоваться, если нужно что-то, чего не умеет табличный документ: например, заполнить готовый шаблон Excel с формулами.

Excel тянет данные из 1С сам: OData, COM и прямой доступ к SQL

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

Стандартный интерфейс OData

Платформа 8.3 умеет отдавать данные по протоколу OData. Excel читает его встроенным Power Query.

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

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

COM-соединение из Excel

Из макроса VBA можно подключиться к базе через объект V83.COMConnector и выполнить запрос. Компонента comcntr.dll должна быть зарегистрирована на компьютере, а разрядность Excel и установленной платформы 1С должна совпадать. Способ рабочий, но капризный: держится на макросах и локальной установке 1С у каждого пользователя.

Почему не стоит читать таблицы SQL напрямую

В клиент-серверной базе данные лежат в MS SQL или PostgreSQL, и к ним технически можно подключить Excel через ODBC. Таблицы там называются вроде _Reference25 и _Document112, ссылки хранятся в двоичном виде, а структура меняется после обновления конфигурации. Права пользователей 1С при этом не действуют. Фирма 1С такой доступ не поддерживает, поэтому для отчётов лучше OData.

Почему выгрузка из 1С в Excel ломается и как это исправить

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

Отдельно про картинки и диаграммы. Диаграммы 1С при сохранении в xlsx переносятся как рисунок, а не как диаграмма Excel. Если её нужно править, постройте диаграмму заново в Excel по выгруженным данным.

Как привести выгруженную таблицу в рабочий вид

Файл из 1С открывается сразу, но для работы его обычно доводят. Порядок, который экономит время:

  1. Удалите «шапку» отчёта. Строки с названием организации, периодом и параметрами отбора над таблицей мешают фильтрам. Оставьте одну строку заголовков.
  2. Снимите объединение ячеек. Главная → Объединить и поместить в центре (отжать). С объединёнными ячейками не работают сортировка и сводные таблицы.
  3. Раскройте группировки. Отчёты 1С переносят уровни группировок в структуру Excel. Кнопки уровней «1, 2, 3» слева от номеров строк сворачивают и раскрывают их; лишнюю структуру убирает Данные → Разгруппировать → Удалить структуру.
  4. Оформите диапазон как таблицу (Ctrl+T). Появятся фильтры, а формулы сами растянутся на новые строки.
  5. Проверьте контрольную сумму. Сравните итог колонки в Excel с итогом в отчёте 1С. Расхождение почти всегда означает строки с числами-текстом.

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

Для больших выгрузок удобнее не открывать xlsx, а подключить его в Power Query (Данные → Получить данные → Из файла → Из книги). Там очистку настраивают один раз: удалить первые строки, сменить типы колонок, убрать пробелы. В следующем месяце достаточно заменить файл и нажать «Обновить».

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

Нужен ли установленный Excel, чтобы сохранить файл из 1С в xlsx?
Нет. Платформа 1С:Предприятие 8.3 сама записывает файлы xlsx. Excel или другая программа для таблиц нужна только чтобы открыть результат.
Можно ли выгрузить из 1С сразу в Google Таблицы?
Напрямую — нет. Сохраните файл в xlsx и загрузите его в Google Диск, при открытии он конвертируется. Для автоматического обмена нужна доработка на встроенном языке.
Как выгрузить в Excel ОСВ так, чтобы каждый счёт был отдельной строкой без итогов?
В настройках ведомости отключите детализацию по субконто и итоги, затем сохраните в xlsx. Для полностью «плоской» таблицы удобнее отчёт «Анализ субконто» или универсальный отчёт с одной группировкой.
Почему вместо xlsx пользователю доступны только mxl и pdf?
Скорее всего, в окне сохранения выбран не тот тип файла: раскройте список «Тип файла», xlsx там есть всегда. Если окна выбора нет, вы работаете в веб-клиенте: файл уходит в папку загрузок браузера, формат выбирается в самой 1С перед сохранением.
Можно ли выгрузить сразу несколько печатных форм в один файл Excel?
При печати нескольких документов форма просмотра собирает их в один табличный документ, и сохраняется он одним файлом. Каждый документ окажется на своей «странице» внутри листа.