Из 1С в таблицу Excel: от кнопки в списке до выгрузки по расписанию
Содержание
Выгрузить данные из 1С в Excel проще всего так: откройте список или отчёт, нажмите Еще → Вывести список… (для списков) или кнопку сохранения (для отчётов) и выберите формат «Лист Microsoft Excel 2007-…» (*.xlsx). Программировать для этого ничего не нужно, а сам Excel на компьютере даже не обязателен: 1С пишет файл xlsx сама.
Частое заблуждение — что выгрузить можно только отчёт, а справочники и журналы документов «не выгружаются». Выгружается любая таблица, которую 1С показывает на экране. Код, обработки и планировщик нужны, когда выгрузку надо повторять каждый день, собирать нестандартный набор полей или отдавать файл без участия человека. Всё ниже — для платформы 8.3 с интерфейсом «Такси»; способы общие для БП 3.0, ЗУП 3.1, УТ 11 и других типовых конфигураций.
Какой способ выгрузки из 1С в Excel выбрать
Сначала определитесь, что именно нужно и как часто. От этого зависит способ.
| Способ | Когда подходит | Нужен Excel на ПК | Сложность |
|---|---|---|---|
Еще → Вывести список… | Справочник, журнал документов, любой список | Нет | Минимальная |
| Сохранение отчёта в xlsx | ОСВ, анализ счёта, отчёты по продажам, остаткам | Нет | Минимальная |
Копирование Ctrl+C → Ctrl+V | Нужен кусок таблицы на 20–200 строк | Да | Минимальная |
Внешняя обработка с ТабличныйДокумент.Записать | Свой набор полей, регулярная выгрузка | Нет | Средняя |
COM-объект Excel.Application | Нужны формулы, форматирование, готовый шаблон книги | Да, Windows | Средняя |
| Рассылка отчётов / запуск по расписанию | Файл должен появляться сам: каждый день, в папку или на почту | Нет | Средняя |
💡 Если сомневаетесь, начните с первых двух строк таблицы. Они закрывают большую часть задач бухгалтера и кладовщика без помощи программиста.
Выгрузка списка через меню «Еще»
Этот способ работает в любом списке: номенклатура, контрагенты, журнал счетов-фактур, список сотрудников.
- Откройте нужный список, например
Справочники → Товары и услуги → Номенклатурав БП 3.0. - Если нужны не все строки — установите отбор или поиск. Выгрузится то, что видно после отбора.
- Нажмите
Еще → Вывести список…. - В окне отметьте колонки, которые нужны, и оставьте вариант вывода «Табличный документ».
- Нажмите «ОК». Откроется таблица 1С с выбранными колонками.
- Сохраните её: кнопка с дискетой в командной панели таблицы или главное меню (кнопка
≡слева вверху)Файл → Сохранить как…. - В поле «Тип файла» выберите «Лист Microsoft Excel 2007-…» (
*.xlsx), укажите имя и папку.
Как вывести колонки, которых нет в списке
Окно «Вывести список » показывает только поля, доступные в форме. Если нужного реквизита нет:
- 🔧 сначала добавьте колонку в сам список:
Еще → Изменить форму…, затем повторите вывод; - 🔍 для справочника без привычной формы используйте режим «Все функции»: включите флажок «Отображать команду Все функции» в
≡ → Сервис → Параметры, затем≡ → Все функции → Справочникии откройте нужный объект. Там список с полным набором реквизитов.
Иерархия и группы
У справочников с группами вывод идёт по текущему уровню. Чтобы получить все элементы сразу, переключите список в режим «Список» (без дерева групп) через Еще → Режим просмотра. Иначе в файл попадёт только содержимое открытой папки.
Сохранение отчёта в Excel
Отчёты на системе компоновки (ОСВ, анализ субконто, «Остатки и обороты», «Ведомость по товарам на складах») сохраняются напрямую.
- Сформируйте отчёт с нужными периодом и отбором.
- Нажмите кнопку «Сохранить» (дискета) на панели отчёта или
Еще → Сохранить как…. - Выберите формат
xlsx, имя файла и папку.
Доступные форматы табличного документа:
| Формат | Для чего |
|---|---|
*.xlsx | Основной вариант для Excel 2007 и новее |
*.xls | Старый Excel, ограничение 65 536 строк |
*.ods | LibreOffice / OpenOffice Calc |
*.pdf | Печать и отправка, без редактирования |
*.mxl | Внутренний формат 1С, откроется только в 1С |
Копирование части таблицы
Нужен фрагмент — выделите ячейки мышью, нажмите Ctrl+C и вставьте в Excel через Ctrl+V. Для всей таблицы выделите левый верхний угол и с Shift щёлкните правый нижний.
При копировании суммы часто попадают в Excel как текст: 1С отделяет разряды неразрывным пробелом. Если формулы СУММ дают ноль, читайте раздел про ошибки ниже. Сохранение в xlsx этой проблемы обычно не создаёт.
Группировки отчёта
Свёрнутые группировки при сохранении в xlsx становятся группами строк Excel со значками +/− слева. Если нужна плоская таблица для сводной — в настройках отчёта уберите промежуточные итоги или выберите вариант без группировок, а потом уже сохраняйте.
Внешняя обработка: своя выгрузка из 1С в Excel кодом
Когда штатного списка мало (например, нужна номенклатура с ценами, остатками и штрихкодами в одной строке), пишут внешнюю обработку
.epf. Главный приём специалиста — не трогать Excel вообще, а собрать ТабличныйДокумент на сервере и записать его в xlsx методом Записать. Это работает на сервере 1С, в веб-клиенте и на Linux, где Excel нет.
Пример серверной процедуры в форме обработки:
&НаСервере
Процедура ВыгрузитьНоменклатуруНаСервере(ПутьКФайлу)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа
| И НЕ Номенклатура.ПометкаУдаления
|УПОРЯДОЧИТЬ ПО
| Наименование";
Выборка = Запрос.Выполнить().Выбрать();
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область(1, 1, 1, 1).Текст = "Код";
ТабДок.Область(1, 2, 1, 2).Текст = "Наименование";
ТабДок.Область(1, 3, 1, 3).Текст = "Артикул";
НомерСтроки = 1;
Пока Выборка.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Выборка.Код;
ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Выборка.Наименование;
ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3).Текст = Выборка.Артикул;
КонецЦикла;
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Поля запроса подставьте под свою конфигурацию: реквизит «Артикул» есть в номенклатуре БП 3.0 и УТ 11, но в нетиповой базе может называться иначе. Проверить имена можно в Конфигураторе или в режиме «Все функции».
💡 Путь в ПутьКФайлу относится к серверу 1С, а не к компьютеру пользователя. В клиент-серверной базе указывайте сетевую папку, на которую у учётной записи службы 1С есть права записи. Иначе файл «пропадёт» на диске сервера или запись упадёт с ошибкой доступа.
Как подключить готовую обработку
- 📂 разово:
≡ → Файл → Открыть…и выберите файл.epf; - 📌 постоянно:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, добавить из файла. Так обработка будет доступна всем пользователям с правами и попадёт в резервную копию базы .
Не запускайте обработки из непроверенных источников. Внешняя обработка выполняет любой код с правами вашего пользователя, включая изменение и удаление данных. Платформа предупреждает об этом при открытии файла — не отключайте предупреждение ради удобства.
Прямая запись в Excel через COM (OLE-автоматизация)
COM нужен, если файл должен выглядеть строго определённым образом: формулы, условное форматирование, заполнение готового шаблона с логотипом. 1С запускает сам Excel и управляет им командами.
Ограничения сразу:
- 🖥 работает только на Windows и только там, где установлен Microsoft Excel;
- 🐢 запись по одной ячейке медленная: на 10–20 тысячах строк выгрузка может занимать минуты;
- 🚫 запускать Excel на сервере 1С не рекомендует и сама Microsoft: зависшие процессы
EXCEL.EXEкопятся и съедают память.
Пример клиентской процедуры (тонкий клиент на Windows):
&НаКлиенте
Процедура ЗаписатьВExcel(Команда)
Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = Ложь;
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
Лист.Cells(1, 1).Value = "ИНН";
Лист.Cells(1, 2).Value = "Контрагент";
// Колонка ИНН — текстовая, чтобы не потерять ведущие нули
Лист.Columns(1).NumberFormat = "@";
Лист.Cells(2, 1).Value = "0274062111";
Лист.Cells(2, 2).Value = "ООО Пример";
Книга.SaveAs("C:\Выгрузка\Контрагенты.xlsx");
Книга.Close();
Excel.Quit();
КонецПроцедуры
В рабочей обработке данные для строк получают серверным вызовом (массив структур), а на клиенте только раскладывают по ячейкам. Обязательно оборачивайте код в Попытка … Исключение и вызывайте Excel.Quit() в обеих ветках, иначе при ошибке процесс Excel останется висеть в диспетчере задач.
💡 Комбинированный приём: соберите данные через ТабличныйДокумент и сохраните в xlsx (быстро), а COM используйте только для финального оформления уже готового файла: открыть, задать формулы итогов, сохранить.
Выгрузка в веб-клиенте и через браузер
В веб-клиенте 1С (база открывается в Chrome, Edge, Firefox или Яндекс Браузере) работают те же команды: Вывести список… и сохранение отчёта. Отличается только последний шаг: файл не записывается в выбранную папку, а скачивается браузером.
- Сформируйте список или отчёт и нажмите «Сохранить».
- Выберите
xlsx. - Браузер сохранит файл в папку загрузок или спросит, куда сохранить, — по его настройкам.
Что учесть:
- 🔒 если скачивание не начинается, проверьте, не заблокировал ли браузер всплывающее окно или загрузку с этого адреса, и разрешите их для сайта базы;
- 🧩 для некоторых операций с файлами (выбор папки, работа с несколькими файлами) 1С может предложить установить расширение для работы с файлами — это штатный компонент, его можно поставить по запросу программы;
- ☁️ в облачной 1С (fresh, сервисы партнёров) всё работает так же, как в веб-клиенте: COM-объект там недоступен, остаётся
ТабличныйДокумент.
Автоматическая выгрузка в Excel по расписанию
Если один и тот же отчёт нужен каждое утро, ручную выгрузку можно убрать совсем. Есть три пути.
Рассылка отчётов (без программиста)
В типовых конфигурациях на БСП есть механизм рассылки: Администрирование → Печатные формы, отчеты и обработки → Рассылки отчетов.
- Создайте рассылку, добавьте нужный отчёт с сохранённым вариантом и настройками.
- Выберите формат вложения
xlsx. - Укажите доставку: на электронную почту получателям или в сетевую папку.
- Включите расписание — например, ежедневно в 7:00.
Рассылка выполняется регламентным заданием на сервере. В файловой базе регламентные задания идут только пока кто-то работает в программе, поэтому для надёжной рассылки нужна клиент-серверная база или постоянно открытый сеанс.
Регламентное задание в расширении
Программист добавляет в расширение конфигурации
регламентное задание, которое вызывает код из раздела про обработку и пишет файл в сетевую папку. Настройки расписания затем меняются без доработок: через Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
Планировщик Windows и параметр /Execute
Для файловой базы без сервера подойдёт запуск 1С по расписанию с внешней обработкой. Обработка в обработчике открытия формы делает выгрузку и закрывает программу командой ЗавершитьРаботуСистемы(Ложь).
@echo off
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F "D:\Base\Buh" /N "Выгрузка" /P "пароль" /Execute "D:\Обработки\ВыгрузкаВExcel.epf" /DisableStartupDialogs
Номер платформы в пути замените на свой. Для серверной базы вместо /F "путь" используется /S "сервер\база". Задачу создайте в «Планировщике заданий» Windows на нужное время.
Пароль в bat-файле лежит открытым текстом. Заведите для выгрузки отдельного пользователя 1С с правами только на чтение нужных данных и закройте доступ к папке с bat-файлом. Каждый запуск занимает лицензию на время работы.
Ошибки при выгрузке из 1С в Excel и как их исправить
Ещё две вещи, о которых узнают только после первой выгрузки:
- 📅 даты из отчёта иногда приходят строкой «01.10.2025 0:00:00». Если Excel не распознал дату, используйте «Данные → Текст по столбцам» с форматом «ДМГ»;
- 🔗 объединённые ячейки в шапке отчёта мешают сортировке и сводным таблицам. Для анализа удаляйте шапку или выбирайте вариант отчёта без объединения.