Как выгрузить данные из 1С в Excel: 7 проверенных способов с примерами

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

В этой статье мы разберём все актуальные способы выгрузки — от стандартных функций платформы до специализированных обработок и программирования на 1С:Предприятие 8.3. Вы узнаете, как сохранить структуру таблиц, избежать ошибок при работе с большими объёмами данных и автоматизировать рутинные операции. А для тех, кто хочет углубиться, мы приведём примеры кода и расскажем, как настроить экспорт под специфические задачи вашей компании.

Особое внимание уделим типовым ошибкам: почему Excel не открывает выгруженный файл, как исправить "битые" символы (вроде □ или ÿ) и что делать, если данные в файле отображаются в одном столбце. Все решения протестированы на актуальных версиях 1С:Бухгалтерия 3.0, 1С:Управление торговлей 11 и 1С:Зарплата и управление персоналом 3.1 (релизы 2023–2026 гг.).

Новичкам мы рекомендуем начать со стандартных методов выгрузки, а опытным пользователям будет полезен раздел про универсальные обработки и COM-соединение с Excel. Если вам нужно выгружать данные регулярно — не пропустите главу об автоматизации через Планы обмена и Регламентные задания.

Стандартные способы выгрузки: без программирования

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

Самый очевидный вариант — использовать кнопку "Выгрузить в Excel" (или аналогичную), которая есть в большинстве отчётов и списков. Например, в отчёте "Оборотно-сальдовая ведомость" или в журнале документов "Реализация товаров и услуг". Однако у этого метода есть ограничения:

  • 📊 Выгружаются только те данные, которые отображаются на экране (если в таблице 100 строк, а вы видите 20 — в Excel попадёт только 20).
  • 🔄 Форматирование часто теряется: даты превращаются в числа, суммы — в текст без разделителей.
  • 🚫 Нет возможности выгрузить данные с группировкой или дополнительными полями, которых нет в стандартном отчёте.

Чтобы выгрузить все строки (а не только видимые), перед экспортом нажмите Ещё → Настройки → Отображать по 1000 на страницу (или другое максимальное значение). Для отчётов с группировкой используйте кнопку "Показать настройки" и отключите группировку перед выгрузкой.

⚠️ Внимание: Если при выгрузке появляется ошибка "Не удалось сохранить файл", проверьте права доступа к папке, куда сохраняете файл. может блокировать запись в системные каталоги (например, C:\Program Files). Сохраняйте файлы на рабочий стол или в Документы.

Ещё один стандартный способ — сохранение через "Печать". Многие отчёты в поддерживают экспорт в Excel через меню печати:

  1. Откройте нужный отчёт (например, Обороты по счётам).
  2. Нажмите Печать → Сохранить как....
  3. В списке форматов выберите Microsoft Excel (*.xlsx).
  4. Укажите папку и имя файла, нажмите Сохранить.

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

📊 Какой способ выгрузки из 1С в Excel вы используете чаще?
Стандартную кнопку "Выгрузить в Excel"
Сохранение через меню "Печать"
Универсальные обработки
Собственные обработки на 1С
COM-соединение с Excel

Выгрузка через универсальные обработки

Если стандартные методы не подходят (например, нужно выгрузить данные из справочника или документа с нестандартной структурой), на помощь приходят универсальные обработки. Их можно скачать бесплатно или купить на портале Infostart или в каталоге 1С-Отчётность.

Самые популярные обработки для экспорта:

  • 📋 "Универсальный экспорт в Excel" (от Алексея Лукина) — поддерживает выгрузку любых таблиц, включая динамические списки и отчёты с группировкой.
  • 🔄 "Выгрузка данных в Excel (с сохранением форматирования)" — позволяет настроить шрифты, цвета и автофильтры в результирующем файле.
  • 📊 "Экспорт в Excel для управляемых форм" — специализированная обработка для конфигураций на управляемых формах (например, 1С:ERP).

Как работать с универсальной обработкой:

  1. Скачайте и установите обработку в вашу базу (через Файл → Открыть...).
  2. Откройте обработку и выберите источник данных (например, справочник Номенклатура или документ Поступление товаров).
  3. Настройте поля для выгрузки: добавьте нужные колонки, укажите порядок и формат (например, для дат или чисел).
  4. Задайте параметры файла: имя, путь сохранения, формат (.xlsx или .xls).
  5. Нажмите Выгрузить и дождитесь завершения операции.

Преимущества универсальных обработок:

  • 🔹 Гибкая настройка выгружаемых полей (можно добавить даже те, которые не отображаются в стандартных отчётах).
  • 🔹 Сохранение форматирования (цвета, шрифты, границы ячеек).
  • 🔹 Возможность выгружать данные с отбором (например, только активную номенклатуру или документы за текущий месяц).
⚠️ Внимание: При использовании обработок от сторонних разработчиков всегда проверяйте их на тестовой базе перед работой с реальными данными. Некоторые обработки могут содержать ошибки или конфликтовать с вашей конфигурацией.

Сделать резервную копию базы|Проверить совместимость обработки с вашей версией 1С|Настроить права доступа для пользователя|Указать корректный путь сохранения файла|Проверить свободное место на диске (Excel-файлы могут занимать много места)

-->

Экспорт через COM-соединение: для опытных пользователей

Если вам нужно автоматизировать выгрузку или настраивать сложные отчёты с формулами и сводными таблицами, лучший способ — COM-соединение между и Microsoft Excel. Этот метод требует знаний 1С:Предприятие 8.3 и VBA, но даёт максимальную гибкость.

Пример кода для выгрузки таблицы документов в Excel:

Процедура ВыгрузитьВExcel()

// Создаём объект Excel

Excel = Новый COMОбъект("Excel.Application");

Книга = Excel.Workbooks.Add();

Лист = Книга.Worksheets(1);

// Задаём заголовки колонок

Лист.Cells(1, 1).Value = "Дата";

Лист.Cells(1, 2).Value = "Номер";

Лист.Cells(1, 3).Value = "Сумма";

// Получаем данные из 1С (пример для документа "РеализацияТоваровУслуг")

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РеализацияТоваровУслуг.Дата КАК Дата,

| РеализацияТоваровУслуг.Номер КАК Номер,

| РеализацияТоваровУслуг.СуммаДокумента КАК Сумма

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг";

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

// Заполняем данные в Excel

Строка = 2;

Пока Выборка.Следующий() Цикл

Лист.Cells(Строка, 1).Value = Выборка.Дата;

Лист.Cells(Строка, 2).Value = Выборка.Номер;

Лист.Cells(Строка, 3).Value = Выборка.Сумма;

Строка = Строка + 1;

КонецЦикла;

// Форматируем столбцы

Лист.Columns("A:A").NumberFormat = "dd.mm.yyyy";

Лист.Columns("C:C").NumberFormat = "# ##0.00";

// Сохраняем файл

ПутьКФайлу = "C:\Temp\Реализация.xlsx";

Книга.SaveAs(ПутьКФайлу);

Excel.Quit();

Сообщить("Файл сохранён: " + ПутьКФайлу);

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

Преимущества COM-соединения:

  • 🔹 Полный контроль над структурой файла (можно создавать несколько листов, сводные таблицы, графики).
  • 🔹 Автоматическое форматирование данных (даты, числа, валюты).
  • 🔹 Возможность интеграции с другими системами (например, выгружать данные в шаблоны отчётности).

Недостатки:

  • 🔸 Требует знаний программирования на и VBA.
  • 🔸 Может работать медленно при больших объёмах данных (более 50 000 строк).
  • 🔸 На сервере должен быть установлен Microsoft Excel (или использовать OpenOffice в качестве альтернативы).
⚠️ Внимание: При работе с COM-объектами всегда освобождайте ресурсы с помощью Excel.Quit(), иначе процесс Excel может остаться висеть в памяти и тормозить систему. Для надёжности добавьте проверку: Если Excel <> Неопределёно Тогда Excel.Quit(); КонецЕсли;
Как ускорить выгрузку больших данных через COM?

Для ускорения выгрузки используйте массив данных вместо построчной записи:

1. Соберите все данные в массив МассивДанных.

2. Запишите массив в Excel за один раз: Лист.Range("A2").Resize(UBound(МассивДанных, 1), UBound(МассивДанных, 2)).Value = МассивДанных;

3. Отключите обновление экрана во время записи: Excel.ScreenUpdating = Ложь;

Это сократит время выгрузки в 5–10 раз.

Выгрузка через внешние отчёты и обработки

Если в вашей компании часто требуется выгружать данные в Excel по одним и тем же шаблонам, имеет смысл создать собственные внешние отчёты. Их можно разработать самостоятельно или заказать у партнёров .

Пример структуры внешнего отчёта для выгрузки:

  1. Создайте новый отчёт в Конфигураторе (меню Файл → Новый → Отчёт).
  2. Добавьте параметры отбора (например, период, организация, тип документов).
  3. Напишите запрос для получения данных (аналогично примеру в разделе про COM-соединение).
  4. Добавьте кнопку "Выгрузить в Excel" и напишите обработчик события, который будет сохранять данные в файл.
  5. Скомпилируйте отчёт и подключите его к базе через Администрирование → Печатные формы, отчёты и обработки.

Преимущества внешних отчётов:

  • 📌 Стандартизация выгрузки (все сотрудники используют один и тот же шаблон).
  • 📌 Возможность добавлять логотип компании, заголовки и другой брендинг.
  • 📌 Автоматическое обновление при изменении структуры базы (в отличие от статических обработок).

Пример кода для выгрузки из внешнего отчёта:

Процедура ВыгрузитьВExcelНаСервере()

// Получаем данные из отчёта

Данные = ПолучитьДанныеДляВыгрузки();

// Создаём Excel-файл на сервере

Excel = Новый COMОбъект("Excel.Application");

Книга = Excel.Workbooks.Add();

Лист = Книга.Worksheets(1);

// Заполняем заголовки

Для Каждого Колонка Из Данные.Колонки Цикл

Лист.Cells(1, Колонка.Индекс).Value = Колонка.Заголовок;

КонецЦикла;

// Заполняем данные

Для Строка = 0 По Данные.Строки.Количество() - 1 Цикл

Для Колонка = 0 По Данные.Колонки.Количество() - 1 Цикл

Лист.Cells(Строка + 2, Колонка + 1).Value = Данные.Строки[Строка][Колонка];

КонецЦикла;

КонецЦикла;

// Сохраняем файл в временную папку

ПутьКФайлу = КаталогВременныхФайлов() + "Отчёт.xlsx";

Книга.SaveAs(ПутьКФайлу);

Excel.Quit();

// Отправляем файл пользователю

Возврат Новый Файл(ПутьКФайлу);

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

Автоматизация выгрузки: регламентные задания и планы обмена

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

Способы автоматизации:

Метод Когда использовать Преимущества Недостатки
Регламентное задание Для выгрузки по расписанию (например, каждый день в 20:00) Не требует участия пользователя, работает в фоновом режиме Нужно настроить права доступа для фонового задания
План обмена Для синхронизации данных между 1С и внешними системами Поддерживает инкрементальную выгрузку (только изменённые данные) Сложнее в настройке, требует доработки конфигурации
Внешняя обработка + powershell Для интеграции с другими программами (например, отправка файла по FTP) Максимальная гибкость (можно отправлять файлы по почте, загружать в облако) Требует знаний скриптов и администрирования сервера

Как настроить регламентное задание для выгрузки в Excel:

  1. Откройте Администрирование → Регламентные задания.
  2. Создайте новое задание с типом "Выполнение кода".
  3. В поле Код вставьте процедуру выгрузки (аналогично примеру из раздела про COM-соединение).
  4. Настройте расписание (например, ежедневно в 18:00).
  5. Укажите пользователя, от имени которого будет выполняться задание (у него должны быть права на экспорт данных).
  6. Сохраните и запустите задание в тестовом режиме.

Для настройки плана обмена:

  1. Создайте новый план обмена в Конфигураторе (меню Общие → Планы обмена).
  2. Добавьте узел обмена (например, "ExcelExport").
  3. Напишите обработчик события ПриЗаписи, который будет сохранять данные в файл.
  4. Настройте расписание синхронизации в Администрирование → Синхронизация данных.
⚠️ Внимание: При автоматизации выгрузки всегда проверяйте, что файлы не перезаписываются случайно. Например, добавьте в имя файла текущую дату: "Отчёт_"+Формат(ТекущаяДата(), "ДФ=yyyyMMdd")+".xlsx". Это поможет избежать потери данных.

Решение типовых ошибок при выгрузке

Даже при правильной настройке экспорта могут возникать ошибки. Рассмотрим самые частые проблемы и способы их решения.

1. Файл не открывается или открывается с ошибкой

  • 🔹 Причина: Файл сохранён в неверной кодировке или повреждён при записи.
  • 🔹 Решение: Попробуйте сохранить файл в формате .xls вместо .xlsx или используйте обработку "Проверка и восстановление файлов Excel".

2. Русские буквы отображаются как "ÿ" или "□"

  • 🔹 Причина: Неправильная кодировка при сохранении (например, UTF-8 вместо Windows-1251).
  • 🔹 Решение: В обработке или коде выгрузки явно укажите кодировку:
    ТекстДанных = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.Windows, Истина);

3. Данные в Excel отображаются в одном столбце

  • 🔹 Причина: Файл сохранён как .csv без разделителей или с неверным разделителем (например, точка с запятой вместо запятой).
  • 🔹 Решение: При сохранении укажите правильный разделитель:
    Данные.Записать(ПутьКФайлу, РазделительСтрок.ПС, РазделительКолонок.Запятая);

    Или сохраняйте сразу в .xlsx через COM-объект.

4. Даты отображаются как числа (например, 44197 вместо 01.01.2021)

  • 🔹 Причина: Excel хранит даты в виде чисел (количество дней с 1900 года), а передаёт их как строки.
  • 🔹 Решение: В обработке выгрузки явно преобразуйте даты в строковый формат:
    Лист.Cells(Строка, 1).Value = Формат(Выборка.Дата, "ДФ=dd.MM.yyyy");

    Или настройте формат ячейки в Excel:

    Лист.Columns("A:A").NumberFormat = "dd.mm.yyyy";

5. Выгрузка занимает слишком много времени

  • 🔹 Причина: Построчная запись данных в Excel или большие объёмы (более 100 000 строк).
  • 🔹 Решение: Используйте массивы для пакетной записи (см. спойлер в разделе про COM-соединение) или разбейте выгрузку на части.

Альтернативные форматы выгрузки: CSV, JSON, XML

Иногда вместо Excel удобнее использовать другие форматы, особенно если данные потом будут обрабатываться автоматически (например, загружаться в другую систему).

1. Выгрузка в CSV

  • 🔹 Подходит для обмена данными между программами.
  • 🔹 Легче обрабатывать большие файлы (нет ограничений Excel на 1 млн строк).
  • 🔹 Пример кода:
    Процедура ВыгрузитьВCSV()
    

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ ... "; // Ваш запрос

    Результат = Запрос.Выполнить();

    Запись = Новый ЗаписьТекста("C:\Temp\Данные.csv", КодировкаТекста.UTF8);

    Выборка = Результат.Выбрать();

    // Записываем заголовки

    Запись.ЗаписатьСтроку("Дата;Номер;Сумма");

    // Записываем данные

    Пока Выборка.Следующий() Цикл

    Запись.ЗаписатьСтроку(Формат(Выборка.Дата, "ДФ=dd.MM.yyyy") + ";" +

    Выборка.Номер + ";" +

    Формат(Выборка.Сумма, "ЧГ=0.00"));

    КонецЦикла;

    Запись.Закрыть();

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

2. Выгрузка в JSON

  • 🔹 Удобно для интеграции с веб-сервисами или мобильными приложениями.
  • 🔹 Пример кода:
    Процедура ВыгрузитьВJSON()
    

    Данные = Новый Массив;

    Запрос = Новый Запрос("ВЫБРАТЬ ... ");

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Строка = Новый Структура;

    Строка.Вставить("Дата", Выборка.Дата);

    Строка.Вставить("Номер", Выборка.Номер);

    Данные.Добавить(Строка);

    КонецЦикла;

    ЗаписьJSON.ЗаписатьJSON(Данные, "C:\Temp\Данные.json");

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

3. Выгрузка в XML

  • 🔹 Подходит для обмена с государственными системами (например, отчётность в ФНС).
  • 🔹 Пример кода:
    Процедура ВыгрузитьВXML()
    

    ЗаписьXML = Новый ЗаписьXML;

    ЗаписьXML.ОткрытьФайл("C:\Temp\Данные.xml");

    ЗаписьXML.ЗаписатьОбъявлениеXML();

    ЗаписьXML.ЗаписатьНачалоЭлемента("Данные");

    Запрос = Новый Запрос("ВЫБРАТЬ ... ");

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    ЗаписьXML.ЗаписатьНачалоЭлемента("Строка");

    ЗаписьXML.ЗаписатьАтрибут("Дата", Формат(Выборка.Дата, "ДФ=yyyy-MM-dd"));

    ЗаписьXML.ЗаписатьАтрибут("Номер", Выборка.Номер);

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Строка

    КонецЦикла;

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Данные

    ЗаписьXML.Закрыть();

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

Сравнение форматов:

Формат Когда использовать Плюсы Минусы
Excel (.xlsx) Для ручного анализа данных, отчётности Удобный интерфейс, поддержка формул и графиков Ограничение на 1 млн строк, большие файлы
CSV Для обмена между программами, больших объёмов Лёгкий формат, быстро обрабатывается Нет поддержки формул, проблемы с кодировкой
JSON Для интеграции с веб-сервисами Легко парсится, поддерживает вложенные структуры Неудобен для ручного просмотра
XML Для отчётности в госорганы Стандартизирован, поддерживает схемы (XSD) Сложнее в обработке, большие файлы

FAQ: Ответы на частые вопросы

Можно ли выгрузить данные из 1С в Excel без потери форматирования (цвета, шрифты)?

Да, но стандартными средствами это сделать сложно. Используйте:

  • Универсальные обработки с поддержкой форматирования (например, "Выгрузка в Excel с сохранением стилей" с Infostart).
  • COM-соединение с ручной настройкой стилей ячеек через Excel.Cells(1,1).Font.Bold = Истина;.
  • Внешние отчёты, где форматирование задаётся в макете.

Обратите внимание, что при выгрузке через стандартную кнопку "Выгрузить в Excel" форматирование теряется всегда.

Как выгрузить данные из 1С в Excel с сохранением иерархии (например, справочник номенклатуры с группами)?

Для выгрузки иерархических данных:

  1. Используйте обработку "Выгрузка дерева в Excel" (доступна на Infostart).
  2. В COM-соединении рекурсивно обходите группы и подгруппы, добавляя отступы:
    Процедура ВыгрузитьГруппу(Г