Из 1С в Excel без потерь: буфер обмена, файл xlsx и выгрузка обработкой

· 10 мин

Содержание

Чтобы скопировать таблицу из 1С в Excel, выделите строки списка или ячейки отчёта, нажмите Ctrl+C и вставьте в Excel через Ctrl+V. Для больших объёмов надёжнее другой путь: отчёт сохранить в файл .xlsx, а список документов или справочника сначала вывести командой Ещё → Вывести список…, а уже потом сохранить.

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

Откуда копируем: три вида таблиц в 1С

Перед переносом стоит понять, с чем именно вы работаете. От этого зависит способ.

  • 📋 Список — журнал документов , справочник контрагентов или номенклатуры. Это динамический список: строки подгружаются порциями по мере прокрутки.
  • 📑 Табличная часть — строки внутри документа: товары в реализации, сотрудники в начислении зарплаты.
  • 📊 Табличный документ — сформированный отчёт или печатная форма: ОСВ, анализ счёта, ТОРГ-12, расчётный листок.
Что копируемБыстрый способСпособ для больших объёмов
Список (справочник, журнал)Выделить строки → Ctrl+CЕщё → Вывести список… → сохранить в xlsx
Табличная часть документаВыделить строки → Ctrl+CЕщё → Вывести список… прямо из табличной части
Отчёт, печатная формаВыделить ячейки → Ctrl+CСохранить отчёт как .xlsx

Копирование через буфер обмена: Ctrl+C и Ctrl+V

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

Из списка или табличной части

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

В Excel попадут только видимые колонки, в том порядке, в каком они стоят на экране. Значения разделяются табуляцией, поэтому каждое поле ложится в свою ячейку.

Нужна колонка, которой нет на экране, например ИНН в списке контрагентов? Добавьте её через Ещё → Изменить форму…, поставив флажок у нужного поля. После этого колонка скопируется вместе с остальными.

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

Из отчёта или печатной формы

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

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

Если оформление не нужно, вставляйте в Excel через Специальная вставка (правый клик → «Параметры вставки») и выбирайте вариант «Значения» или «Текст». Получите чистые данные без рамок.

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

Вывод списка и сохранение файла в формате xlsx

Этот путь даёт полноценный файл Excel с заголовками колонок. Скорость не зависит от того, сколько строк вы видите на экране.

Шаг 1. Выведите список в табличный документ

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

1С откроет новую вкладку с таблицей. В ней уже есть строка заголовков и все строки, попавшие под отбор.

Команды «Вывести список…» нет в меню «Ещё»? У пользователя нет права на вывод. Его выдаёт администратор базы в настройках групп доступа или профилей.

Шаг 2. Сохраните таблицу в файл

Выведенный список и любой сформированный отчёт сохраняются одинаково:

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

Файл .xlsx 1С создаёт сама. Установленный Excel для этого не нужен: можно сохранить на компьютере без офиса, а открыть на другом.

Какой формат выбрать при сохранении

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

Настройки отчёта перед копированием в Excel

Перенести отчёт в Excel проще, если заранее подготовить его в самой 1С. Иначе потом придётся час чистить таблицу.

  • 🔧 Уберите лишние группировки. Отчёт с иерархией «счёт → субконто → документ» превратится в Excel в лесенку с промежуточными итогами. Для расчётов оставьте одну группировку на нужном уровне.
  • 🔧 Отключите итоги, если будете считать сами. Строки «Итого» внутри таблицы мешают формулам СУММЕСЛИ и сводным таблицам.
  • 🔧 Разверните все уровни. Если в отчёте свёрнуты группы, проверьте, что в файл попадут все строки, а не только заголовки групп.
  • 🔧 Выберите нужные колонки. В отчётах на СКД (почти все отчёты типовых конфигураций) колонки и поля меняются в «Настройках». Лишнее отключите до формирования.

Настроили отчёт под выгрузку? Сохраните вариант отчёта под отдельным именем, например «Для Excel». В следующий раз не придётся повторять настройку.

Для печатных форм (счёт, накладная, акт) настроек нет: это готовый макет. Его лучше сохранять целиком в .xlsx или PDF, а не копировать кусками.

Кракозябры, числа-текст и пропавшие нули: проблемы при переносе в Excel

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

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

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

Выгрузка таблицы в Excel внешней обработкой

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

Рассылка отчётов по расписанию

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

После этого в рассылке указывают:

  • какой отчёт и с каким вариантом настроек формировать;
  • формат вложения — выбирайте xlsx;
  • куда отправлять: на почту или в сетевую папку;
  • расписание: например, каждый понедельник в 8:00.

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

Своя внешняя обработка

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

Пример выгрузки контрагентов с ИНН. Код помещается в модуль формы обработки, на форме — команда «Выгрузить».

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

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

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

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

    ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
    ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
    Данные = Новый ДвоичныеДанные(ИмяФайла);
    УдалитьФайлы(ИмяФайла);

    Возврат ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);

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

&НаКлиенте
Процедура Выгрузить(Команда)
    Адрес = СформироватьФайлНаСервере();
    ПолучитьФайл(Адрес, "Контрагенты.xlsx", Истина);
КонецПроцедуры

Как это работает:

  1. Файл формируется на сервере во временной папке.
  2. Его содержимое кладётся во временное хранилище, а сам файл удаляется.
  3. Клиент забирает данные из хранилища, и пользователь выбирает, куда сохранить файл.

ПолучитьФайл — синхронный метод. Если в свойствах конфигурации запрещены синхронные вызовы, платформа выдаст ошибку. Тогда используйте асинхронный аналог из справки вашей версии платформы (раздел «Работа с файлами»).

ИНН здесь записывается как строка, поэтому в Excel он останется текстом и не потеряет ведущий ноль. Суммы для расчётов лучше выводить числом, иначе в Excel их придётся конвертировать.

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

Через COM-объект Excel.Application тоже можно выгружать, но тогда Excel должен стоять на том компьютере, где выполняется код. На сервере 1С это лишняя зависимость. Метод Записать табличного документа обходится без неё.

Какой способ переноса таблицы выбрать

СпособКогда подходитОбъёмМинусы
Ctrl+C из спискаРазово, нужны значенияДо нескольких сотен строкНет заголовков, только видимые колонки
Ctrl+C из отчётаКусок отчёта в письмо или в свою таблицуНебольшойПереносятся рамки и объединения
«Вывести список» + xlsxВыгрузка справочника или журналаТысячи строкНужно право на вывод
Сохранение отчёта в xlsxОтчёт целиком, с оформлениемЛюбой в пределах листаГруппировки и итоги мешают расчётам
Рассылка отчётовРегулярная выгрузка по расписаниюЛюбойНужна настройка регламентных заданий
Внешняя обработкаНестандартный набор полей, интеграцияЛюбойНужен программист
Что вам нужно сделать с таблицей из 1С?

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

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