Как настроить запуск 1С 7.7 и выполнение отчета по расписанию?

Программист 1С v7.7 1С:Комплексная автоматизация IT и автоматизация бизнеса
← На главную

В платформе 1С:Предприятие 7.7 отсутствует встроенный механизм фоновых и регламентных заданий, привычный пользователям системы 1С 8.x. Чтобы автоматизировать выполнение задач (например, ежедневную выгрузку прайс-листа, отправку отчетов по электронной почте или обмен с интернет-магазином), необходимо организовать запуск клиентского приложения снаружи — с помощью стандартного Планировщика задач Windows (Task Scheduler).

Рассмотрим по шагам два проверенных способа решения этой задачи: через командную строку (bat-файл) с доработкой глобального модуля и через внешний VBScript с использованием COM-объекта.

Способ 1. Запуск 1С 7.7 через командную строку и обработка при старте

Разберем классический подход. Он заключается в том, что планировщик Windows запускает 1С 7.7 от имени специального служебного пользователя. При запуске программы срабатывает предопределенная процедура ПриНачалеРаботыСистемы в глобальном модуле, которая определяет пользователя, выполняет нужный отчет и завершает работу системы.

Шаг 1. Параметры командной строки для запуска 1С 7.7

Для авторизации и открытия нужной информационной базы без вывода диалоговых окон вызова интерфейса применяются следующие ключи запуска 1cv7.exe (или 1cv7s.exe):

  1. MODE — режим работы (для запуска программы указывается enterprise);
  2. /D — путь к каталогу информационной базы;
  3. /N — имя пользователя 1С;
  4. /P — пароль пользователя;
  5. /M — запуск базы в монопольном режиме (опционально).

Пример команды для bat-файла:


"C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /D"C:\1C_Bases\MainBase" /NРоботРегламент /PPassword123

Шаг 2. Настройка логики в Глобальном модуле

Откроем конфигуратор и проанализируем процедуру ПриНачалеРаботыСистемы. Добавим условие, проверяющее имя вошедшего пользователя с помощью функции ИмяПользователя():


Процедура ПриНачалеРаботыСистемы()
    // Проверяем, запущен ли сеанс служебным пользователем
    Если ИмяПользователя() = "РоботРегламент" Тогда
        // Запускаем необходимый отчет или обработку
        // Обработка должна автоматически сформировать данные, сохранить их или отправить
        ОткрытьФормуМодально("Отчет", "ВыгрузкаНаСайт", КаталогИБ() + "ExtForms\Выгрузка.ert");
        
        // Завершаем работу программы без вывода интерактивных запросов
        ЗавершитьРаботуСистемы(0);
    КонецЕсли;
КонецПроцедуры

Вызов метода ЗавершитьРаботуСистемы(0) с параметром 0 позволяет сразу закрыть приложение без дополнительного подтверждения со стороны пользователя.

Способ 2. Запуск внешнего отчета через COM-объект (VBScript)

Если нет желания вносить изменения в глобальный модуль конфигурации, можно использовать запуск через VBScript. Скрипт подключается к 1С 7.7 через OLE/COM-объект V77.Application (или V1CEnterprise.Application), открывает форму внешней обработки методом ExecuteBatch и закрывает сеанс.

Посмотрим на пример VBS-скрипта (файл с расширением .vbs):


Dim v7
Set v7 = CreateObject("V1CEnterprise.Application")

' Инициализация подключения к базе данных
Dim res
res = v7.Initialize(v7.RMTrade, "/D""C:\1C_Bases\MainBase"" /NРоботРегламент /PPassword123", "NO_SPLASH_SHOW")

If res Then
    ' Выполнение команды открытия внешней обработки
    v7.ExecuteBatch("ОткрытьФорму(""Обработка"",, ""C:\1C_Bases\MainBase\ExtForms\Обработка.ert"")")
Else
    WScript.Echo "Не удалось подключиться к базе 1С."
End If

Такой скрипт можно сохранить на диске и прописать его запуск в Планировщике задач Windows командой wscript.exe "C:\Scripts\RunTask.vbs".

Важные технические нюансы и рекомендации

  1. Модальные окна и предупреждения: Убедитесь, что внутри запускаемого отчета не используются вызовы Предупреждение() или Вопрос(). Если в автоматическом режиме появится модальное окно, регламентный процесс зависнет в ожидании клика пользователя.
  2. Заполнение «Рабочей папки» в планировщике: В свойствах задачи Windows Task Scheduler в поле «Рабочая папка» («Start in») обязательно указывайте путь к каталогу BIN платформы или путь к базе данных. Иначе 1С может не загрузить необходимые системные библиотеки.
  3. Резервное копирование и активные сеансы: Если резервное копирование баз данных выполняется средствами MS SQL Server, просто присутствие фонового пользователя в базе не блокирует создание бэкапа. Ошибки возникают только в случае, если сеанс удерживает незавершенную транзакцию или выполняет блокировку таблиц.
  4. Восстановление индексации в файловом режиме: В случае нештатного завершения работы 1С 7.7 при следующем запуске выводится диалог реиндексации. Чтобы избежать сбоев регламентных задач в файловом варианте, запуск от имени робота должен производиться только при гарантированно корректно завершенных предыдущих сеансах.
← На главную