Как перенести списки, отчёты и печатные формы 1С в Excel без потерь

· 10 мин

Содержание

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

Код нужен в двух случаях: когда выгрузка повторяется каждый день по одному шаблону и когда в Excel требуется особое оформление — формат столбцов, формулы, несколько листов. Ниже — все способы по нарастанию сложности, на платформе 8.3 с интерфейсом «Такси». Механизм общий для платформы, поэтому работает в Бухгалтерии, ЗУП, УТ и других типовых конфигурациях.

Встроенные способы: сохранить в Excel любую таблицу 1С

Всё, что 1С показывает в виде табличного документа, сохраняется в Excel штатно. Это отчёты, печатные формы, результат команды «Вывести список ».

Отчёт или печатная форма

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

В окне печати документов есть ещё кнопка «Сохранить» со списком форматов. Там можно отметить xlsx и сразу сохранить несколько печатных форм отдельными файлами.

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

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

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

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

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

Для пары десятков строк проще всего выделить ячейки в табличном документе мышью, нажать Ctrl+C и вставить в Excel. Минус в том, что числа иногда вставляются как текст, а объединённые ячейки ломают структуру. Для регулярной работы этот способ не подходит.

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

ФорматКогда братьОграничения
xlsxПочти всегдаДо 1 048 576 строк на листе
xls (Excel 97)Получатель работает в очень старом ExcelДо 65 536 строк, файл крупнее
odsLibreOffice, «МойОфис»В Excel открывается, но оформление может съехать
mxlПередать таблицу другому пользователю 1СExcel его не открывает

Обработка «Универсальный обмен данными в формате XML»: когда она нужна

Эту обработку часто называют способом выгрузить данные из 1С «куда угодно». Для Excel она почти бесполезна, и важно понимать почему.

Обработка выгружает объекты (документы, справочники, остатки) в XML-файл по правилам обмена. Правила готовят в конфигурации «Конвертация данных ». Файл рассчитан на загрузку той же обработкой в другую базу 1С. Внутри — вложенная структура: объект, его реквизиты, табличные части, ссылки на другие объекты.

Excel умеет открыть XML (Файл → Открыть → «Как XML-таблицу»), но такой файл превратится в сотни столбцов с повторами. Анализировать его неудобно.

ЗадачаЧем пользоваться
Перенести справочники и документы в другую базу 1СУниверсальный обмен данными в формате XML
Отдать таблицу бухгалтеру, аудитору, руководителюТабличный документ → xlsx
Регулярная выгрузка по шаблонуВнешняя обработка или рассылка отчётов
Обратное направление: из Excel в 1СОбработка «Загрузка данных из табличного документа»

Не запускайте загрузку XML из чужой базы в рабочую «для проверки». Обработка создаёт и перезаписывает объекты. Сначала сделайте копию базы и проверяйте на ней.

Как подготовить отчёт и таблицу к выгрузке в Excel

Чаще всего жалуются не на сам экспорт, а на то, что в Excel «всё кривое». Таблица выгружается ровно такой, какой её построила 1С. Значит, править нужно отчёт до сохранения.

Настройки отчёта

Откройте Настройки… в форме отчёта (переключитесь в расширенный режим, если доступен только простой) и проверьте:

  • 📌 Группировки. Многоуровневые группировки дают строки-подытоги вперемешку с данными. Для сводной таблицы в Excel оставьте плоский список: одна группировка или «Детальные записи».
  • 📌 Итоги. Отключите промежуточные итоги, если будете считать в Excel. Иначе суммы задвоятся при фильтрации.
  • 📌 Заголовок и параметры. Шапку отчёта с периодом и отборами можно не выводить. Тогда первая строка файла сразу станет строкой заголовков столбцов.
  • 📌 Развёрнутое сальдо и субсчета. В оборотно-сальдовой ведомости решите заранее, нужны ли субсчета отдельными строками.

Что происходит с ячейками

Что в 1СЧто будет в ExcelКак поправить
Сумма в ячейке-значенииЧисло, суммируетсяНичего
Сумма, собранная в текст («1 250,00 руб.»)Текст, формулы не считаютДанные → Текст по столбцам или вывод числа отдельной ячейкой
Объединённые ячейки шапкиОбъединение сохранитсяМешает сортировке: снимите объединение в Excel
Иерархия (+/- группы строк)Группировка строк ExcelОбычно сохраняется, проверьте уровни
ИНН, коды с нулями в началеКак правило, текстЕсли стали числами, верните формат «Текстовый»

Excel хранит не больше 15 значащих цифр числа. Если штрихкод или номер счёта из 20 цифр попал в Excel как число, хвост превратится в нули без возможности восстановления. Такие поля должны уходить строкой.

Выгрузка в Excel через COM-объект: полный контроль над файлом

COM-объект Excel.Application позволяет из кода 1С открыть сам Excel, заполнить ячейки, задать формат столбцов и сохранить книгу. Это работает только в Windows и только там, где установлен Microsoft Excel. Обычно это клиентский компьютер пользователя.

Пример команды формы обработки, выполняется на клиенте:

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

    Excel = Новый COMОбъект("Excel.Application");
    Excel.DisplayAlerts = Ложь;
    Книга = Excel.Workbooks.Add();
    Лист = Книга.Worksheets(1);

    // Столбец B — текстовый, чтобы ИНН не потеряли нули
    Лист.Columns(2).NumberFormat = "@";

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

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

    Лист.Columns("A:C").AutoFit();
    Книга.SaveAs("C:\Выгрузка\контрагенты.xlsx");
    Книга.Close();
    Excel.Quit();

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

Здесь ПолучитьДанныеНаСервере() — ваша серверная функция. Она возвращает массив структур с полями «Контрагент», «ИНН», «Сумма», то есть простые значения, а не ссылки.

Что знать перед тем, как выбрать этот путь:

  • 🐢 Скорость. Каждое обращение к Cells — отдельный вызов между процессами. 10 000 строк по 3 колонки — это 30 000 вызовов и минуты ожидания. Для больших объёмов заполняйте диапазон целиком массивом или выбирайте табличный документ.
  • 🖥 Сервер. На сервере 1С, запущенном как служба, Excel через COM работает нестабильно, и Microsoft такой сценарий не поддерживает. Держите COM на клиенте.
  • 🧹 Зависшие процессы. Если код упал до Excel.Quit(), в диспетчере задач остаётся процесс EXCEL.EXE. Оборачивайте работу в Попытка … Исключение и закрывайте Excel в обеих ветках.

Кодировка и спецсимволы при выгрузке в CSV

Табличный документ, сохранённый в xlsx, с кодировкой проблем не даёт: формат хранит текст в Юникоде. «Кракозябры» появляются, когда выгрузку делают в CSV или TXT кодом и открывают файл двойным щелчком.

Причина простая. Excel при открытии CSV угадывает кодировку. Без подсказки он читает UTF-8 как Windows-1251, и кириллица превращается в набор знаков вроде Контрагент.

Как выгрузить CSV правильно

Текст = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8, , Ложь);
Текст.ЗаписатьСтроку("Контрагент;ИНН;Сумма");
// ... строки данных ...
Текст.Закрыть();

КодировкаТекста.UTF8 записывает в начало файла метку BOM, и Excel по ней распознаёт UTF-8. Второй вариант — КодировкаТекста.ANSI: в русской Windows это Windows-1251, Excel откроет файл без вопросов. Но символы вне кириллицы (₽, умлауты, иероглифы в названиях) потеряются.

Чек-лист для CSV

  • 🔣 Разделитель. В русской локали Excel ждёт точку с запятой, а не запятую. С запятой весь текст ляжет в столбец A.
  • 💬 Кавычки. Если в наименовании есть ; или кавычки, поле берут в двойные кавычки, а кавычки внутри удваивают: "ООО ""Ромашка""".
  • ↩️ Переносы строк. Перенос внутри комментария разорвёт строку CSV. Заменяйте Символы.ПС на пробел перед записью.
  • 🔢 Дробные числа. Пишите их с запятой: 1250,50. С точкой русская локаль превратит сумму в дату или текст.

Если файл уже получен и открывается криво, не открывайте его двойным щелчком. В Excel выберите Данные → Из текстового/CSV-файла и задайте кодировку вручную.

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

Когда одну и ту же таблицу просят каждый понедельник, логично собрать внешнюю обработку (.epf). Excel для неё не нужен: табличный документ сам пишет xlsx, и это работает и на клиенте, и на сервере.

Пример: остатки номенклатуры в xlsx

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

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

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

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

    Возврат ТД;

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

&НаКлиенте
Процедура Выгрузить(Команда)
    ТД = СформироватьТаблицуНаСервере();
    ТД.Записать("C:\Выгрузка\номенклатура.xlsx", ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры

Для числовых колонок не пишите сумму в .Текст. Тогда в Excel она станет текстом. Установите у области СодержитЗначение = Истина, ТипЗначения = Новый ОписаниеТипов("Число") и передайте число в .Значение.

Как запускать по расписанию

  • 🗂 Через дополнительные обработки. В типовых конфигурациях на БСП обработку подключают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Обработку вида «Дополнительная обработка», написанную под этот механизм, можно запускать по расписанию.
  • 📧 Рассылка отчётов. Если нужен готовый отчёт, а не своя таблица, проще настроить рассылку отчётов в том же разделе. Отчёт уйдёт на почту или в сетевую папку в xlsx без строчки кода.
  • 📁 Права на папку. При запуске на сервере файл пишет пользователь, от имени которого работает служба сервера 1С. Ему нужны права на запись в целевую папку, путь указывайте сетевой (\\server\obmen\), а не диск пользователя.

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

Быстрый способ без своей обработки

Для разовой выборки, которой нет ни в одном отчёте, подойдёт консоль запросов. Напишите запрос, выполните его, выведите результат в табличный документ и сохраните в xlsx через Ctrl+S. Пять минут, и никакой разработки.

Частые ошибки при экспорте из 1С в Excel и их причины

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

Частые вопросы о выгрузке из 1С в Excel

Можно ли выгрузить из 1С в Excel сразу несколько отчётов на разные листы?
Штатным сохранением — нет, каждый табличный документ даёт отдельный файл. Несколько листов в одной книге собирают через COM-объект или объединяют файлы уже в Excel.
Работает ли выгрузка в Excel в веб-клиенте и в 1С:Фреш?
Да. Команда сохранения формирует файл, и браузер скачивает его в папку загрузок. COM-объект в веб-клиенте недоступен.
Нужен ли установленный Excel, чтобы сохранить отчёт в xlsx?
Нет. Платформа формирует xlsx сама, файл можно сохранить на компьютере, где Excel нет, и открыть потом в любой программе.
Почему в Excel пропали цвета и рамки отчёта?
Обычно оформление сохраняется. Если пропало, файл, скорее всего, сохранили в ods, txt или CSV. Сохраните заново в xlsx.
Как выгрузить из 1С в Excel табличную часть одного документа?
Откройте документ, щёлкните в табличной части и выполните Ещё → Вывести список…. Получится таблица только с этими строками, её сохраняют в xlsx как обычно.