Как сделать выгрузку из 1С в Excel автоматически
Запрос «выгрузка из 1С в Excel автоматически» почти всегда означает одно: надоело каждое утро открывать отчёт, жать «Сохранить как» и рассылать файл по почте. Ниже — три способа это убрать и условия, при которых каждый из них реально работает.
Сначала определите, кто нажимает кнопку
Автоматизация выгрузки распадается на три сценария, и выбор между ними определяется не желанием, а доступами. Разберитесь с этим до того, как писать код.
- Изнутри 1С. База считает отчёт сама по расписанию и кладёт файл в папку или отправляет его. Нужен доступ к конфигурации и к серверу 1С.
- Снаружи. Отдельный скрипт ходит в базу по OData или HTTP-сервису, забирает данные и сам собирает таблицу. Конфигурацию не трогаем, но нужен опубликованный веб-сервер и пользователь с правами на чтение.
- Через рабочее место человека. Если база в чужом облаке без API и без доступа к серверу — остаётся робот на компьютере сотрудника, который открывает 1С и повторяет действия. Это самый хрупкий вариант, но иногда единственный.
Параллельно ответьте на четыре вопроса: база файловая или клиент-серверная, есть ли свободная лицензия под фоновый сеанс, куда должен попасть готовый файл (папка, почта, телеграм, гугл-таблица) и кто узнает, что выгрузка не состоялась.
Способ 1: регламентное задание внутри 1С
Самый предсказуемый путь. Отчёт формируется штатными средствами платформы, поэтому цифры совпадают с теми, что видит бухгалтер на экране — это важнее, чем кажется: пересчитанные вручную регистры и итоги почти всегда расходятся с типовыми отчётами.
Механика простая: табличный документ записывается методом Записать с типом файла XLSX, а запуск вешается на регламентное задание. В клиент-серверном варианте задание выполняется на сервере само. В файловой базе фоновые задания работают только при запущенном сеансе, поэтому обычно поднимают отдельный сеанс 1С и дёргают его планировщиком Windows с ключом запуска обработки.
Логику лучше держать не в правках конфигурации, а во внешней обработке или расширении: типовая конфигурация остаётся на поддержке и обновляется без ручного слияния.
Способ 2: забрать данные снаружи по API
Если в конфигурацию лезть нельзя или выгрузка нужна не в один файл, а в несколько мест сразу, данные удобнее вытаскивать наружу. У платформы есть стандартный интерфейс OData: справочники, документы и регистры публикуются на веб-сервере как обычные HTTP-ресурсы. Более тяжёлые случаи закрывают собственным HTTP-сервисом в 1С — он отдаёт уже посчитанный результат запроса, а не сырые таблицы. На Windows работает и COM-соединение, но оно капризно к разрядности и версии платформы.
Читать SQL-базу 1С напрямую не стоит: имена таблиц нечитаемы и меняются при обновлении, а часть значений (итоги, виртуальные таблицы регистров) вычисляется платформой, а не хранится готовой.
Что даёт внешний вариант, кроме файла:
- выгрузка идёт по расписанию на отдельном сервере и не зависит от того, включён ли чей-то компьютер;
- данные можно одновременно класть в Excel, в базу и в телеграм-бот — руководителю не файл, а сводку тремя строками;
- копится история. Мы для своих задач держим базу истории цен примерно на 3,8 ГБ, и именно она позволяет отвечать не «сколько сейчас», а «как менялось».
Для доступа заведите отдельного пользователя 1С с правами только на чтение нужных объектов и ограничьте состав публикуемых данных — не публикуйте всю конфигурацию целиком.
Где это ломается
Проблемы у автоматических выгрузок повторяются от проекта к проекту.
- Лицензии и сеансы. Фоновый сеанс занимает лицензию. В маленьких базах выгрузка в 9 утра отбирает место у живого сотрудника.
- Формат файла. XLSX, сделанный для человека, плох для машины: объединённые ячейки, многоуровневая шапка, подписи внутри данных. Если файл дальше читает другая программа, делайте второй, плоский макет — одна строка заголовков и никакого оформления.
- Время запуска. Тяжёлый отчёт за год в рабочие часы кладёт базу. Ставьте ночью и ограничивайте период.
- Молчаливый сбой. Худший вариант — выгрузка перестала выполняться, а все продолжают открывать вчерашний файл. Контроль обязателен: не появился свежий файл к нужному часу — приходит сообщение.
- Обновление конфигурации. После него внешняя обработка может отвалиться. Проверка выгрузки должна входить в регламент обновления.
- Персональные данные. Если в выгрузке ФИО, телефоны или адреса клиентов, размещать её на зарубежном сервере нельзя — по 152-ФЗ первичное хранение должно быть в России.
Отдельный случай — когда в Excel нужны не только данные 1С, но и внешние: цены конкурентов, остатки на маркетплейсах, заявки с сайта. Такие источники защищены антиботом и с серверных адресов часто не отдаются вовсе; собирать их приходится настоящим браузером с российского адреса, а в общую таблицу класть уже результат.
Соберём под ваш случай и покажем на ваших данных.
Сбор данных →