Экспорт из 1С 8.3 в Excel: от списка в два клика до выгрузки по расписанию

· 9 мин

Содержание

Чтобы выгрузить данные из 1С в Excel, откройте нужный список или отчёт и выберите Ещё → Вывести список…. Для отчёта нажмите «Сформировать». Затем сохраните полученный табличный документ в формате xlsx через Главное меню → Файл → Сохранить как или по Ctrl+S. Этот способ работает в любой типовой конфигурации на платформе 8.3: в Бухгалтерии, ЗУП, УТ и других.

Многие сначала ищут отдельную кнопку «Экспорт в Excel» и не находят её. Её и не нужно: 1С собирает данные в собственный табличный документ, а уже его можно сохранить в формат Excel. Программная выгрузка (CSV, OLE, внешняя обработка) нужна, только если файл надо делать регулярно или по особому шаблону.

Как вывести в Excel любой список из 1С

Команда Вывести список есть в каждом динамическом списке: в справочниках, журналах документов, регистрах. Она выгружает то, что вы видите на экране, с учётом отборов и сортировки.

Пошагово

  1. Откройте список, например Справочники → Товары и услуги → Номенклатура в Бухгалтерии.
  2. Задайте отбор, если нужна не вся таблица: строка поиска, отбор по колонке, «Отбор» в меню Ещё.
  3. Выберите Ещё → Вывести список….
  4. В окне снимите флажки с лишних колонок. Оставьте вывод в «Табличный документ».
  5. Нажмите «ОК». Откроется таблица со всеми строками списка.
  6. Сохраните её: Главное меню → Файл → Сохранить как, тип файла «Лист Excel 2007-…» (xlsx).

Если колонки, которая нужна в Excel, нет в окне вывода, сначала добавьте её в сам список: Ещё → Изменить форму…. Потом повторите вывод.

Иерархические справочники

В справочнике с группами 1С выводит только содержимое открытой группы. Чтобы получить все элементы одним списком, переключите вид: Ещё → Режим просмотра → Список. После этого Вывести список отдаст все позиции без разбивки по папкам.

Копирование через буфер обмена

Для пары десятков строк быстрее обойтись без файла:

  • 📋 выделите строки в списке (Shift или Ctrl + клик, Ctrl+A — все видимые);
  • нажмите Ctrl+C;
  • в Excel встаньте в ячейку A1 и нажмите Ctrl+V.

Колонки разойдутся по ячейкам сами. Минус способа: копируются только загруженные на экран строки, а числа могут вставиться как текст (как это исправить — в разделе о проблемах).

Выгрузка отчётов и печатных форм в Excel

Любой отчёт в 1С 8.3 — это табличный документ. Значит, его можно сохранить в Excel так же, как список.

Стандартные отчёты

Оборотно-сальдовая ведомость, анализ счёта, карточка счёта, отчёты по продажам и остаткам выгружаются одинаково:

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

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

Универсальный отчёт для «плоской» таблицы

Если данные нужны для дальнейшей обработки в Excel, соберите их в универсальном отчёте (в Бухгалтерии он лежит в разделе «Отчёты»). Выберите источник — справочник, документ или регистр — и настройте вывод детальных записей без промежуточных итогов. Получится таблица «одна строка — одна запись», которую Excel сразу принимает в сводную.

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

Счёт, накладную, акт или расчётный листок можно получить в Excel из формы печати:

  • нажмите «Печать» в документе и выберите форму;
  • в окне печатной формы нажмите «Сохранить»;
  • отметьте формат «Лист Microsoft Excel 2007» и укажите, куда сохранить.

В этом же окне можно выбрать сразу несколько форматов, например xlsx и pdf. Удобно, когда контрагенту нужен файл для правки и файл для подписи.

Какой формат файла выбрать

Табличный документ 1С сохраняет в несколько форматов. Для Excel важны первые четыре строки таблицы.

ФорматКогда братьОграничения
xlsxОсновной выбор для любой выгрузкиДо 1 048 576 строк и 16 384 колонок на листе
xlsТолько для старых программ, которые не читают xlsxДо 65 536 строк и 256 колонок — большие списки обрежутся
csvЗагрузка в другие системы, очень большие объёмыНет оформления; 1С не сохраняет в csv из меню, нужен код или пересохранение в Excel
odsLibreOffice, «Мой Офис»Excel открывает, но формулы и оформление иногда сбиваются
mxlПередать таблицу другому пользователю 1СExcel не открывает
pdfОтправить без возможности правкиДанные в Excel не перенести

Выгрузка в xls списка из 100 тысяч строк даст неполный файл. Если строк больше 65 536, сохраняйте только в xlsx.

Для CSV есть обходной путь без программирования: сохраните xlsx, откройте его в Excel и сохраните как «CSV (разделители — запятые)». В русской локали Excel поставит разделителем точку с запятой.

Выгрузка из 1С в Excel программно: табличный документ и CSV

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

Через табличный документ

Это самый надёжный путь: не нужен установленный Excel, работает и на сервере, и в веб-клиенте. Сервер формирует таблицу, клиент её показывает, пользователь сохраняет в xlsx.

&НаСервереБезКонтекста
Функция СформироватьТаблицуНоменклатуры()

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

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

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

	Возврат ТД;

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

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

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

CSV через запись текста

Для выгрузки в сторонние системы проще всего текстовый файл с разделителем ;:

Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Запись.ЗаписатьСтроку("Наименование;Артикул");
Пока Выборка.Следующий() Цикл
	Наименование = СтрЗаменить(Выборка.Наименование, ";", ",");
	Запись.ЗаписатьСтроку(Наименование + ";" + Выборка.Артикул);
КонецЦикла;
Запись.Закрыть();

Кодировка UTF-8 с меткой BOM (1С ставит её сама) позволяет Excel открыть файл без «кракозябр». Точку с запятой внутри значений заменяем, иначе строка разъедется на лишние колонки. Числа в такой файл выводите через Формат(Число, "ЧГ=0"), чтобы не попали пробелы-разделители разрядов.

OLE-автоматизация: как управлять Excel из 1С напрямую

OLE (COM) нужен, когда файл должен выглядеть как готовый документ компании: заполнить существующий шаблон, раскрасить ячейки, поставить формулы, разнести данные по листам. 1С запускает Excel и командует им построчно.

Условия для работы:

  • 🖥️ на компьютере, где выполняется код, установлен Microsoft Excel;
  • 🪟 клиент работает под Windows — в веб-клиенте и на Linux способ не работает ;
  • 🐢 запись по одной ячейке медленная: тысячи строк выгружаются минутами, а не секундами.

Пример: выгрузка табличной части «Товары» открытого документа.

&НаКлиенте
Процедура ВыгрузитьТоварыЧерезOLE(Команда)

	Попытка
		Excel = Новый COMОбъект("Excel.Application");
	Исключение
		Сообщить("Не удалось запустить Excel: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;

	Excel.DisplayAlerts = Ложь;
	Книга = Excel.Workbooks.Add();
	Лист = Книга.Worksheets(1);

	Лист.Cells(1, 1).Value = "Номенклатура";
	Лист.Cells(1, 2).Value = "Количество";
	Лист.Cells(1, 3).Value = "Сумма";

	НомерСтроки = 1;
	Для Каждого СтрокаТовара Из Объект.Товары Цикл
		НомерСтроки = НомерСтроки + 1;
		Лист.Cells(НомерСтроки, 1).Value = Строка(СтрокаТовара.Номенклатура);
		Лист.Cells(НомерСтроки, 2).Value = СтрокаТовара.Количество;
		Лист.Cells(НомерСтроки, 3).Value = СтрокаТовара.Сумма;
	КонецЦикла;

	Книга.SaveAs("C:\Temp\Товары.xlsx", 51);
	Книга.Close();
	Excel.Quit();

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

Число 51 в SaveAs — код формата xlsx в Excel. Числа передаются в ячейки как числа, поэтому суммы в файле сразу считаются формулами.

Всегда вызывайте Excel.Quit(), в том числе в ветке обработки ошибок. Если код упадёт посередине, в диспетчере задач останется висеть процесс EXCEL.EXE, и следующие запуски начнут сбоить.

Запускать Excel через OLE на сервере 1С не стоит: Microsoft не поддерживает такую схему для служб, процессы зависают, а при нескольких пользователях мешают друг другу. Для серверной выгрузки берите табличный документ.

Автоматизация выгрузки через внешние обработки

Код из предыдущих разделов удобно оформить внешней обработкой (файл .epf). Её можно открыть разово через Главное меню → Файл → Открыть или подключить в базу постоянно.

В конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) постоянное подключение делают так:

  1. Включите флажок дополнительных отчётов и обработок в Администрирование → Печатные формы, отчеты и обработки.
  2. Откройте там же «Дополнительные отчеты и обработки» и нажмите «Добавить из файла».
  3. Укажите разделы, где появится команда, и пользователей, которым она доступна.

Обработка, написанная по правилам БСП, может выполнять серверную команду по расписанию. Так настраивают ночную выгрузку остатков или продаж в общую папку: утром файл уже лежит на месте. Расписание задаётся в карточке обработки, если разработчик предусмотрел такую команду.

Открыть внешнюю обработку может только пользователь с соответствующим правом. Если пункт меню неактивен, это настройка ролей, а не ошибка программы.

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

Почему файл выгружается не так: типовые проблемы

Большинство жалоб на экспорт сводится к пяти ситуациям.

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

Отдельно о кракозябрах в CSV. Если кириллица в Excel превратилась в набор символов, файл записан не в той кодировке, которую ждёт Excel. Сохраняйте в UTF-8 с BOM или в Windows-1251, а при открытии укажите кодировку явно в мастере импорта.

В веб-клиенте сохранение идёт через браузер: файл попадает в папку загрузок. Если ничего не скачивается, проверьте, не блокирует ли браузер всплывающие окна и загрузки с адреса базы.

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

Можно ли выгрузить в Excel сразу весь справочник со всеми реквизитами?
Через «Вывести список» — только колонки, которые есть в форме списка. Добавьте нужные через «Изменить форму». Для реквизитов, которых в списке нет, используйте универсальный отчёт или запрос.
Выгрузится ли в Excel табличная часть документа?
Да. Встаньте в табличную часть, выберите «Ещё → Вывести список…» именно в её командной панели. Выгрузятся строки только этого документа.
Как выгрузить из 1С в Excel несколько отчётов в один файл на разные листы?
Стандартными средствами — нет: каждый табличный документ сохраняется отдельным файлом. Разнести данные по листам можно через OLE или собрать листы вручную в Excel.
Сохранится ли оформление отчёта при выгрузке?
Шрифты, границы, заливка и объединения ячеек переносятся в xlsx. Расшифровки и интерактивные группировки 1С в Excel не работают.
Нужен ли Microsoft Excel на компьютере для выгрузки?
Нет. 1С сама записывает файл xlsx. Excel нужен только для способа через OLE и чтобы потом открыть файл.