Из 1С в Excel без потерь: буфер обмена, файл xlsx и выгрузка обработкой
Содержание
Чтобы скопировать таблицу из 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
Самый быстрый способ. Подходит, когда нужно перенести десятки или пару сотен строк.
Из списка или табличной части
- Откройте список или документ и щёлкните по любой строке таблицы.
- Выделите строки:
Ctrl+A— все,Shift+клик— диапазон,Ctrl+клик— выборочно. - Нажмите
Ctrl+C. - В Excel встаньте в ячейку
A1и нажмитеCtrl+V.
В Excel попадут только видимые колонки, в том порядке, в каком они стоят на экране. Значения разделяются табуляцией, поэтому каждое поле ложится в свою ячейку.
Нужна колонка, которой нет на экране, например ИНН в списке контрагентов? Добавьте её через Ещё → Изменить форму…, поставив флажок у нужного поля. После этого колонка скопируется вместе с остальными.
Заголовки колонок при таком копировании не переносятся. Их придётся вписать в Excel вручную или воспользоваться выводом списка, о котором ниже.
Из отчёта или печатной формы
- Сформируйте отчёт.
- Выделите мышью диапазон ячеек. Чтобы взять весь отчёт, щёлкните в любую ячейку и нажмите
Ctrl+A. Ctrl+C→ переход в Excel →Ctrl+V.
Из отчёта переносится и оформление: шрифты, рамки, заливка, объединённые ячейки. Для печати это удобно, а для расчётов мешает. Объединённые ячейки ломают сортировку и автофильтр.
Если оформление не нужно, вставляйте в Excel через Специальная вставка (правый клик → «Параметры вставки») и выбирайте вариант «Значения» или «Текст». Получите чистые данные без рамок.
У динамического списка с десятками тысяч строк копирование через буфер может работать медленно и подвешивать окно. Для таких объёмов используйте вывод списка или сохранение в файл.
Вывод списка и сохранение файла в формате xlsx
Этот путь даёт полноценный файл Excel с заголовками колонок. Скорость не зависит от того, сколько строк вы видите на экране.
Шаг 1. Выведите список в табличный документ
- Откройте нужный список: журнал документов, справочник или табличную часть.
- Если нужно, отберите строки: установите отбор по периоду, организации или контрагенту.
- Нажмите
Ещё → Вывести список…. - В открывшемся окне снимите флажки с лишних колонок и отметьте нужные.
- В поле «Выводить в» оставьте «Табличный документ».
- Нажмите «ОК».
1С откроет новую вкладку с таблицей. В ней уже есть строка заголовков и все строки, попавшие под отбор.
Команды «Вывести список…» нет в меню «Ещё»? У пользователя нет права на вывод. Его выдаёт администратор базы в настройках групп доступа или профилей.
Шаг 2. Сохраните таблицу в файл
Выведенный список и любой сформированный отчёт сохраняются одинаково:
- Сделайте активной вкладку с таблицей.
- Нажмите кнопку с дискетой в панели отчёта или откройте главное меню (кнопка с тремя полосками в заголовке окна) →
Файл → Сохранить как…. - В поле «Тип файла» выберите «Лист Microsoft Excel 2007-…» (
*.xlsx). - Укажите папку и имя файла, нажмите «Сохранить».
Файл .xlsx 1С создаёт сама. Установленный Excel для этого не нужен: можно сохранить на компьютере без офиса, а открыть на другом.
Какой формат выбрать при сохранении
| Формат | Когда брать | Ограничения |
|---|---|---|
.xlsx | Почти всегда | До 1 048 576 строк на лист |
.xls (Excel 97) | Получатель работает в очень старом Excel | До 65 536 строк, остальное обрежется |
.ods | LibreOffice, «Мой Офис» | Excel тоже откроет, но форматирование иногда съезжает |
.csv / .txt | Загрузка в другую программу | Нет оформления, риск проблем с кодировкой |
.mxl | Передать другому пользователю 1С | Excel такой файл не открывает |
Настройки отчёта перед копированием в Excel
Перенести отчёт в Excel проще, если заранее подготовить его в самой 1С. Иначе потом придётся час чистить таблицу.
- 🔧 Уберите лишние группировки. Отчёт с иерархией «счёт → субконто → документ» превратится в Excel в лесенку с промежуточными итогами. Для расчётов оставьте одну группировку на нужном уровне.
- 🔧 Отключите итоги, если будете считать сами. Строки «Итого» внутри таблицы мешают формулам
СУММЕСЛИи сводным таблицам. - 🔧 Разверните все уровни. Если в отчёте свёрнуты группы, проверьте, что в файл попадут все строки, а не только заголовки групп.
- 🔧 Выберите нужные колонки. В отчётах на СКД (почти все отчёты типовых конфигураций) колонки и поля меняются в «Настройках». Лишнее отключите до формирования.
Настроили отчёт под выгрузку? Сохраните вариант отчёта под отдельным именем, например «Для Excel». В следующий раз не придётся повторять настройку.
Для печатных форм (счёт, накладная, акт) настроек нет: это готовый макет. Его лучше сохранять целиком в .xlsx или PDF, а не копировать кусками.
Кракозябры, числа-текст и пропавшие нули: проблемы при переносе в Excel
После вставки в Excel таблица выглядит нормально, но формулы не считают или часть данных искажена. Причины почти всегда одни и те же.
Данные → Из текстового/CSV-файла, укажите кодировку «65001: Юникод (UTF-8)» и разделитель. Ещё проще — сохранить из 1С сразу в xlsx.Ctrl+H, в поле «Найти» введите неразрывный пробел (Alt+0160 на цифровой клавиатуре), поле «Заменить» оставьте пустым.Ctrl+H. Второй вариант — Данные → Текст по столбцам с выбором разделителя.Номера счетов, штрихкоды, ИНН и СНИЛС проверяйте после каждого переноса: 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", Истина);
КонецПроцедуры
Как это работает:
- Файл формируется на сервере во временной папке.
- Его содержимое кладётся во временное хранилище, а сам файл удаляется.
- Клиент забирает данные из хранилища, и пользователь выбирает, куда сохранить файл.
ПолучитьФайл — синхронный метод. Если в свойствах конфигурации запрещены синхронные вызовы, платформа выдаст ошибку. Тогда используйте асинхронный аналог из справки вашей версии платформы (раздел «Работа с файлами»).
ИНН здесь записывается как строка, поэтому в Excel он останется текстом и не потеряет ведущий ноль. Суммы для расчётов лучше выводить числом, иначе в Excel их придётся конвертировать.
Открывают такую обработку через Файл → Открыть (нужно право на интерактивное открытие внешних обработок) или подключают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
Через COM-объект Excel.Application тоже можно выгружать, но тогда Excel должен стоять на том компьютере, где выполняется код. На сервере 1С это лишняя зависимость. Метод Записать табличного документа обходится без неё.
Какой способ переноса таблицы выбрать
| Способ | Когда подходит | Объём | Минусы |
|---|---|---|---|
Ctrl+C из списка | Разово, нужны значения | До нескольких сотен строк | Нет заголовков, только видимые колонки |
Ctrl+C из отчёта | Кусок отчёта в письмо или в свою таблицу | Небольшой | Переносятся рамки и объединения |
| «Вывести список» + xlsx | Выгрузка справочника или журнала | Тысячи строк | Нужно право на вывод |
| Сохранение отчёта в xlsx | Отчёт целиком, с оформлением | Любой в пределах листа | Группировки и итоги мешают расчётам |
| Рассылка отчётов | Регулярная выгрузка по расписанию | Любой | Нужна настройка регламентных заданий |
| Внешняя обработка | Нестандартный набор полей, интеграция | Любой | Нужен программист |
Ctrl+C, в Excel — вставка значений. Это займёт полминуты.Ещё → Вывести список…, затем сохраните результат в xlsx.Частые вопросы
Можно ли вставить таблицу из Excel обратно в 1С?
Ctrl+V несколько строк в табличную часть не попадут. В типовых конфигурациях у табличных частей товаров есть загрузка из файла Excel: команда находится в командной панели над таблицей.Почему при копировании из списка в Excel попадают не все колонки?
Ещё → Изменить форму… или выгрузите список командой «Вывести список…», где колонки выбираются флажками.