Выгрузка из 1С в Excel: буфер, «Сохранить как» и автоматизация
Содержание
Скопировать данные из 1С в Excel можно тремя путями: выделить ячейки и вставить через буфер, сохранить отчёт или печатную форму файлом .xlsx, либо выгрузить данные обработкой. Для разовой таблицы хватает буфера. Для отчёта с форматированием лучше сохранение файлом. Для регулярной выгрузки нужна обработка или регламентное задание.
Чем больше строк и чем важнее формат ячеек, тем меньше смысла копировать вручную. Разберём каждый способ, а потом то, что чаще всего ломается: слипшиеся числа, пропавшие нули в начале кодов, «кракозябры» в CSV.
Всё ниже относится к платформе 8.3 с интерфейсом «Такси». Названия пунктов в вашей конфигурации могут чуть отличаться, но принцип одинаков в Бухгалтерии, ЗУП, УТ и других.
Быстрое копирование через буфер обмена
Самый короткий путь. Подходит для отчётов, печатных форм и обычных списков.
Из отчёта или печатной формы
Отчёт и печатная форма — это табличный документ. Он копируется как обычная таблица.
- Сформируйте отчёт.
- Выделите нужную область мышью. Весь документ сразу выделяет
Ctrl+A. - Нажмите
Ctrl+C. - В Excel встаньте в ячейку
A1и нажмитеCtrl+V.
Объединённые ячейки и заголовки отчёта перенесутся как есть. Для дальнейшей обработки формулами это неудобно: сводные таблицы не любят объединённых ячеек и пустых строк. Если планируете анализ, сначала уберите лишнее в самом отчёте (о настройках ниже).
Из списка (справочника, журнала документов)
В списке выделите строки: щелчок на первой, Shift и щелчок на последней, либо Ctrl+A для всех строк, которые уже подгружены. Затем Ctrl+C и вставка в Excel. Копируются те колонки, которые сейчас показаны на экране.
Две оговорки:
- ⚠️ Список в 1С подгружается порциями.
Ctrl+Aберёт то, что загружено, а не все записи справочника. Для длинных списков используйте вывод списка (следующий раздел). - 💡 Нужна одна колонка — выделите её ячейки. Для списка с многими колонками иногда проще скопировать всё и удалить лишнее уже в Excel.
Если вставка в Excel даёт одну колонку с текстом через табуляции, проверьте, что вставляете в обычную ячейку, а не в строку формул. В строку формул Excel вставляет весь текст как единую строку.
Вывод списка и «Сохранить как»: когда нужен файл
Буфер не годится, когда данные нужно передать другому человеку или загрузить в другую программу. Здесь выручает сохранение в файл.
Сохранение отчёта или печатной формы
Откройте сформированный отчёт или печатную форму. В табличном документе есть команда сохранения (значок дискеты в панели формы, либо пункт Файл → Сохранить как... в главном меню, если оно включено в вашем интерфейсе). Откроется стандартное окно выбора файла. В списке «Тип файла» выберите формат Excel.
Какой формат выбрать:
| Формат | Когда брать | Риски |
|---|---|---|
.xlsx | Почти всегда: открывается в любом современном Excel | Нет, если не нужны макросы |
.xls | Нужна совместимость со старым Excel и программами-приёмниками | Лимит 65 536 строк, больший отчёт обрежется |
.mxl | Нужно вернуть файл в 1С (родной формат табличного документа) | Excel его не откроет |
.pdf | Показать, не править | Данные не скопировать в таблицу |
.csv / .txt | Загрузка в другую систему | Кодировка и разделители (см. ниже) |
Набор форматов в списке зависит от конфигурации и версии платформы. Если нужного формата нет, сохраните в .xlsx и преобразуйте в Excel.
Вывод списка в табличный документ
Для справочника, журнала документов или любого списка есть отдельная команда. В форме списка откройте меню Ещё в командной панели (в старых формах оно называлось Все действия) и выберите Вывести список....
Откроется окно настройки:
- Выводить в: выберите «Табличный документ».
- Колонки: галочками отметьте, какие поля нужны. Можно изменить порядок стрелками.
- Количество строк: программа предлагает вывести всё. Если в списке установлен отбор, выведутся только отобранные записи.
После нажатия ОК откроется табличный документ. Его можно сохранить файлом, как описано выше, или выделить и скопировать.
Вывод списка с сотнями тысяч строк займёт заметное время и память клиента. Сначала отфильтруйте список по периоду или группе, потом выводите.
Настройка табличного документа перед выгрузкой
От того, как построен отчёт, зависит, насколько удобной будет таблица в Excel. Правильная подготовка экономит час чистки.
Что поправить в отчёте
- Уберите лишние колонки и итоги в настройках отчёта (кнопка
НастройкиилиПоказать настройки). Чем проще таблица, тем легче строить по ней сводные. - Отключите группировки, если нужна плоская таблица. Для анализа в Excel плоский список обычно удобнее иерархии. Если в отчёте есть переключатель вида (например, «Без группировки» или «Детальные записи»), используйте его.
- Не выводите шапку и заголовок отчёта там, где это возможно. Шапка с параметрами занимает несколько строк над таблицей и мешает фильтрам Excel.
- Проверьте период и отборы до формирования. Отчёт, сформированный на другой период, придётся делать заново.
Что учесть при печати в файл
Печатная форма (счёт, накладная, ведомость) рассчитана на бумагу. Её колонки подогнаны под ширину страницы. После сохранения в Excel ширину и переносы текста придётся поправить.
Если нужна именно таблица данных, а не бумажная форма, возьмите отчёт или вывод списка. Печатные формы для этого не предназначены.
Числа и даты
Табличный документ 1С хранит число как число, если ячейка так заполнена. Но в некоторых отчётах и печатных формах числа выведены текстом (например, с пробелами для красоты). Тогда Excel увидит строку, и сумма в такой колонке покажет ноль. Признак: данные выровнены по левому краю и в углу ячейки зелёный треугольник.
Сравнение методов экспорта данных
Сведём всё в одну таблицу, чтобы быстро выбрать.
| Способ | Объём | Сохраняет формат | Подходит для |
|---|---|---|---|
Ctrl+C из отчёта | до нескольких тысяч строк | частично | быстрая разовая работа |
Ctrl+C из списка | только загруженные строки | нет | короткие списки |
| Вывод списка + сохранение | любой, но медленно на больших | частично | справочники, журналы |
Сохранение отчёта в .xlsx | зависит от отчёта | да | передача файла коллеге, в банк, налоговую |
| Обработка выгрузки | любой | вы задаёте | регулярные задачи, большие объёмы |
Простое правило выбора: один раз и мало — буфер; один раз и нужен файл — «Сохранить как»; каждый день — автоматизация.
Решение проблем с кодировкой и форматами
Большинство жалоб после выгрузки укладывается в четыре случая. Начнём с наиболее частых.
Вместо русских букв «кракозябры»
Классика при открытии CSV или TXT двойным щелчком. Excel ждёт одну кодировку, а файл записан в другой. Файл в UTF-8 без служебной метки Excel может прочитать как Windows-1251, и наоборот.
Что делать:
- Не открывайте файл двойным щелчком. В Excel выберите
Данные → Получить данные → Из текста/CSV(в старых версиях —Данные → Из текста). - В окне предварительного просмотра смените «Источник файла» на нужную кодировку:
1251: кириллица (Windows)или65001: Юникод (UTF-8). Пока текст не станет читаемым, подбирайте. - Укажите разделитель. Для CSV из российских программ обычно точка с запятой.
Если можно выбрать, сохраняйте сразу в .xlsx: там кодировки нет совсем.
Пропали нули в начале
Код 000123, артикул 00457, ИНН физлица или номер телефона после вставки превращаются в 123, 457. Excel считает их числами и отбрасывает нули.
Исправление: до вставки отформатируйте колонку как текстовую (Формат ячеек → Текстовый). При импорте через Из текста/CSV в мастере для нужной колонки задайте тип «Текст». Для уже испорченных данных проще вставить заново, чем восстанавливать нули формулами.
Числа стали текстом, а дробная часть уехала
Два симптома одной природы:
- Число с пробелом между разрядами (
1 250 000,50) Excel может принять за текст. Причина — в 1С разделитель разрядов бывает неразрывным пробелом (код 160), а не обычным. - В Excel с английскими региональными настройками дробный разделитель — точка. Запятая из 1С превращает число в текст или в дату.
Лечится заменой: выделите колонку, Ctrl+H, найдите неразрывный пробел (скопируйте его из ячейки в поле поиска), заменить на пустоту. Для запятой — поменяйте региональный разделитель в Excel или замените запятую на точку.
Число превратилось в дату
Значение вида 3,5 или 1-2 Excel «из лучших побуждений» превращает в 3 мая и 1 февраля. Это неисправимо после вставки: исходное значение потеряно. Заранее задайте колонке текстовый формат, как для нулей.
Если вы сохраняете выгрузку для загрузки в другую систему, перед отправкой откройте файл и проверьте первые и последние строки, суммы по колонкам и количество строк. Сравните их с исходным отчётом в 1С. Разница в один знак в ИНН или артикуле потом обходится дорого.
Автоматизация выгрузки через внешние обработки
Когда выгрузка нужна регулярно или данных слишком много для ручных операций, пишут обработку. Обработка — файл .epf, который открывается без изменения конфигурации: Файл → Открыть (если пункт скрыт, включите его в настройках интерфейса).
Самый надёжный вариант: запись табличного документа в файл
Из запроса формируем табличный документ и записываем его в .xlsx. Excel на компьютере не нужен, подходит и для серверного кода.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|УПОРЯДОЧИТЬ ПО
| Номенклатура.Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Таблица = Новый ТабличныйДокумент;
Таблица.Область(1, 1).Текст = "Код";
Таблица.Область(1, 2).Текст = "Наименование";
НомерСтроки = 2;
Пока Выборка.Следующий() Цикл
Таблица.Область(НомерСтроки, 1).Текст = Выборка.Код;
Таблица.Область(НомерСтроки, 2).Текст = Выборка.Наименование;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
Таблица.Записать("C:\Выгрузка\номенклатура.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Код записан в текстовом виде, поэтому код номенклатуры с нулями сохранится как строка. Для больших объёмов цикл с обращением к ячейкам работает медленно. Тогда формируют область из макета и заполняют её параметрами, либо пишут CSV через текстовый документ.
Запись в CSV с нужной кодировкой
Если приёмная система требует CSV, используйте ТекстовыйДокумент: добавляйте строки через ДобавитьСтроку, а при записи задавайте кодировку вторым параметром метода Записать, например ТекстДок.Записать(Путь, КодировкаТекста.ANSI) для Windows-1251 или КодировкаТекста.UTF8. Разделитель между значениями склеивайте сами, и заключайте текст в кавычки, если в нём может быть точка с запятой.
Прямая передача в открытый Excel через COM
Обработка может запустить Excel как COM-объект и заполнить ячейки. На компьютере должен быть установлен Excel, а код нужно выполнять на клиенте. Для веб-клиента и сервера этот путь обычно закрыт. Поэтому, если нет особой причины, запись файла проще и устойчивее.
Регулярный запуск
Если выгрузка нужна каждый день, то обработку вызывают из регламентного задания, а готовый файл кладут в сетевую папку. Серверный код не видит диск вашего компьютера: папка должна быть доступна учётной записи, от имени которой работает сервер 1С.
Перед тем как писать свою обработку, проверьте, нет ли в конфигурации готовой выгрузки. Для многих задач (остатки, взаиморасчёты, прайс-листы) уже есть отчёты с нужными колонками, и достаточно настроить их и сохранить в .xlsx.
Частые вопросы
Почему в Excel попало меньше строк, чем в списке 1С?
Ctrl+A берёт только загруженную часть. Используйте Вывести список..., предварительно задав отбор.Можно ли сохранить отчёт 1С в Excel вместе с расшифровками?
Почему формулы Excel не считают выгруженные суммы?
Какой формат лучше для передачи данных коллеге?
.xlsx: нет проблем с кодировкой, форматирование сохраняется, лимита на 65 536 строк нет.Как скопировать только значения без формата в Excel?
Специальная вставка → Значения (или Ctrl+Alt+V, затем «Значения»). Заливка и границы из 1С не перенесутся.