Как настроить автоматическую периодическую выгрузку данных из 1С без изменения конфигурации?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе сопровождения и интеграции учетных систем нередко возникает задача регулярного извлечения данных (например, остатков товаров или взаиморасчетов) без внесения изменений в основную конфигурацию. Проанализируем ситуацию: как настроить фоновую или регламентную выгрузку по расписанию так, чтобы процесс выполнялся автономно, стабильно и не вызывал конфликтов с существующей инфраструктурой.

Рассмотрим подробно основные технические решения, их ограничения, а также тонкости практической реализации.

Способ 1. Запуск внешней обработки через планировщик задач и командную строку

Наиболее распространенный и гибкий вариант — создание внешней обработки (файл с расширением .epf), которая выполняет выборку данных и сохраняет результат в требуемом формате. Запуск такой обработки по расписанию настраивается через планировщик операционной системы (например, Планировщик заданий Windows) с использованием командного файла.

Разберем по шагам ключевые параметры командной строки платформы 1С:Предприятие:

  1. Параметр /EXECUTE <ПутьКФайлу> — указывает платформе на необходимость запуска внешней обработки сразу после входа в программу.
  2. Параметр /C <СтрокаПараметров> — передает текстовые параметры внутрь сеанса 1С. В коде обработки их можно получить через глобальное свойство ПараметрыЗапуска (например, путь к каталогу выгрузки).
  3. Параметр /DisableStartupMessages — подавляет стартовые информационные и диалоговые окна платформы, предотвращая зависание неинтерактивного процесса.

Посмотрим на пример командной строки для запуска выгрузки:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\Trade" /N "RobotUser" /P "Password123" /EXECUTE "C:\Scripts\ExportBalances.epf" /C "OutDir=C:\Export" /DisableStartupMessages

Разберем важный нюанс работы с командными файлами (.bat или .cmd). При передаче кириллических путей к информационной базе, имен пользователей или паролей командная строка Windows может некорректно интерпретировать символы. Выясним причину: по умолчанию текстовые редакторы часто сохраняют файлы в кодировке UTF-8, в то время как интерпретатор команд ожидает кодировку ANSI (Windows-1251) или OEM (CP866). Для корректного запуска убедитесь, что сам командный файл сохранен в кодировке ANSI.

Обязательно обратим внимание на завершение работы платформы. При интерактивном открытии обработки окно 1С не закрывается само по себе. Чтобы сеанс не зависал в памяти и не занимал лицензию, в коде модуля внешней обработки необходимо обязательно предусмотреть программный выход:


Процедура ПриОткрытии(Отказ)
    ВыполнитьЭкспортДанных();
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Способ 2. Фоновое подключение через COM-соединение

Если на предприятии развернута вспомогательная база или имеется внешний сервер автоматизации, данные можно получать с помощью подключения через внешнее соединение. Рассмотрим, как это работает: во внешней базе создается регламентное задание, которое периодически подключается к рабочей базе по COM и напрямую считывает остатки через запросы.

Посмотрим на пример программного кода для COM-подключения:


COMСоединитель = Новый COMОбъект("V83.COMConnector");
ПараметрыПодключения = "File=""C:\Bases\Trade""; Usr=""RobotUser""; Pwd=""Password123"";";
Попытка
    БазаИсточник = COMСоединитель.Connect(ПараметрыПодключения);
    Запрос = БазаИсточник.NewObject("Запрос");
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ТоварыНаСкладахОстатки.Номенклатура.Наименование КАК Номенклатура,
        |   ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
        |ИЗ
        |   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
    Результат = Запрос.Выполнить().Выгрузить();
    // Обработка и сохранение полученной таблицы
Исключение
    ЗаписьЖурналаРегистрации("COM-выгрузка", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;

Этот способ удобен тем, что запуск происходит полностью в фоновом режиме, не открывая графический интерфейс клиента 1С.

Ограничения платформы и вопросы заметности

Проанализируем технические следы, которые оставляют различные варианты выгрузки:

  1. Записи в Журнале регистрации: Каждый запуск внешней обработки через параметр /EXECUTE фиксирует факт открытия файла обработки и путь к нему на диске. Использование COM-соединения регистрирует сеанс с типом подключения «COM-соединение». Если администраторы базы регулярно проверяют журнал регистрации с отбором по внешним обработкам или сеансам, эти действия будут видны.
  2. Потребление лицензий: Запуск клиента 1С через командную строку или COM-соединение расходует одну клиентскую лицензию платформы на время выполнения. Если количество лицензий строго ограничено, запуск тяжелой выгрузки в разгар рабочего дня может временно заблокировать вход пользователей.
  3. Безопасный режим: Если в системе включен строгий контроль безопасности, внешняя обработка может запускаться с ограничениями, запрещающими запись файлов на диск или доступ к сети. В таком случае запуск следует выполнять от имени пользователя с административными правами либо отключать безопасный режим.

Альтернативные штатные механизмы выгрузки

Если необходимо свести к минимуму подозрения во внешнем вмешательстве, обратите внимание на стандартные подсистемы конфигурации:

  1. Подсистема «Рассылка отчетов» (БСП): В типовых решениях можно настроить стандартный отчет по остаткам (или вариант универсального отчета) и задать расписание его автоматической отправки на локальный почтовый ящик или во внутреннюю сетевую папку. В журнале регистрации такие действия выглядят как штатная работа регламентных заданий конфигурации.
  2. Стандартный интерфейс OData (REST API): Если база опубликована на веб-сервере с включенным протоколом OData, внешнее приложение может забирать данные таблиц обычными GET-запросами по протоколу HTTP, не запуская клиентские сеансы и не выполняя внешние файлы обработки.
← На главную