Выгрузка отчётов из 1С по расписанию: четыре рабочих способа
Выгрузить отчёт из 1С по расписанию можно встроенными средствами, через интерфейс OData или внешним скриптом. Разберём, когда подходит каждый способ, где он обычно ломается и как сделать так, чтобы выгрузка не останавливалась незаметно.
Способ 1. Встроенная «Рассылка отчётов»
В типовых конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, Управление торговлей 11, Комплексная автоматизация, ERP) уже есть механизм «Рассылки отчётов». Обычно он находится в администрировании, в разделе печатных форм, отчётов и обработок. Путь в меню зависит от конфигурации и её версии.
В рассылке выбирают отчёт с нужными настройками, формат файла (xlsx, pdf, html, mxl и другие), получателя и расписание. Файл можно отправить на почту, положить в сетевую папку или на FTP.
- Плюсы: не нужно программировать, настраивается за полчаса, права пользователей учитываются.
- Минусы: на выходе получается отдельный файл за каждую дату, а не таблица с накопленной историей. Сравнивать периоды придётся вручную.
- Рассылка работает на регламентных заданиях, поэтому у неё те же ограничения (о них ниже).
Почему расписание в 1С иногда молчит
Чаще всего на выгрузку по расписанию жалуются так: «настроили, а файлы не приходят». Причина почти всегда в регламентных заданиях.
- Файловая база. Здесь регламентные задания выполняет сеанс пользователя. Если 1С ни у кого не открыта, например ночью или в выходные, задание не запустится.
- Клиент-серверная база. Задания выполняет кластер серверов. В свойствах информационной базы должна быть снята «Блокировка регламентных заданий». После копирования базы или разворачивания тестовой копии её часто включают и забывают выключить.
- Почта. Учётная запись для отправки настроена с ошибкой, сменился пароль, или почтовый сервер отклоняет вложения больших размеров.
Проверить, что произошло, можно в журнале регистрации с отбором по событиям регламентных заданий. Если никто не следит за выгрузкой специально, сбой обычно замечают через неделю, когда отчёт понадобился.
Способ 2 и 3. Забирать данные снаружи: OData и HTTP-сервисы
Если данные нужны не в виде файла, а в таблице или другой системе, удобнее забирать их извне. Платформа 1С поддерживает стандартный интерфейс OData. Базу публикуют на веб-сервере и указывают, какие справочники, документы и регистры будут доступны. После этого внешняя программа по расписанию запрашивает данные по HTTP.
- Через OData приходят данные объектов и регистров, а не готовый отчёт с группировками. Сводить и считать их придётся на своей стороне.
- Запросы идут под отдельным пользователем 1С. Ему лучше выдать права только на чтение нужных объектов.
- Обращения к опубликованной базе могут занимать клиентские лицензии. Как это работает в вашей схеме лицензирования, стоит уточнить заранее.
Второй вариант — HTTP-сервис, который отдаёт готовый результат, например остатки по складам в формате JSON. Его добавляют расширением конфигурации, поэтому основная конфигурация остаётся на поддержке. Но нужен разработчик 1С, и сервис придётся сопровождать при обновлениях.
Способ 4. Внешний запуск и куда складывать результат
Если веб-публикации нет и делать её не хотят, остаётся запуск 1С из командной строки. Планировщик (cron или Планировщик заданий Windows) запускает клиент с параметром /Execute и внешней обработкой. Обработка формирует отчёт и сохраняет его в файл. Способ рабочий, но требует машины, где можно запустить клиент 1С, и отдельной учётной записи.
Какой бы способ вы ни выбрали, надёжность выгрузки зависит не столько от 1С, сколько от того, что происходит после неё.
- Дописывать, а не перезаписывать. Если каждая выгрузка добавляет строки с датой в таблицу (Google Таблицы, Excel в общей папке или базу данных), со временем накапливается история и можно смотреть динамику.
- Проверять свежесть. Отдельная проверка смотрит, пришли ли данные за сегодня и нет ли нулей там, где их быть не должно.
- Сообщать о сбоях. Короткое уведомление в Телеграм вида «выгрузка остатков не прошла, ошибка авторизации» сэкономит неделю простоя. Туда же удобно присылать краткую сводку по цифрам.
- Запускать на сервере, а не на чьём-то компьютере. Ноутбук бухгалтера выключают, обновляют и увозят в отпуск.
Мы так и работаем со своими задачами. Сбор и выгрузка данных крутятся на нашем сервере как службы по таймеру, результат пишется в таблицы, а при сбое приходит сообщение в Телеграм. Для 1С схема та же. Отличается только источник: рассылка в папку, OData или HTTP-сервис.
Соберём под ваш случай и покажем на ваших данных.
Сбор данных →