В платформе 1С:Предприятие 7.7 отсутствует встроенный механизм фоновых и регламентных заданий, привычный пользователям системы 1С 8.x. Чтобы автоматизировать выполнение задач (например, ежедневную выгрузку прайс-листа, отправку отчетов по электронной почте или обмен с интернет-магазином), необходимо организовать запуск клиентского приложения снаружи — с помощью стандартного Планировщика задач Windows (Task Scheduler).
Рассмотрим по шагам два проверенных способа решения этой задачи: через командную строку (bat-файл) с доработкой глобального модуля и через внешний VBScript с использованием COM-объекта.
Разберем классический подход. Он заключается в том, что планировщик Windows запускает 1С 7.7 от имени специального служебного пользователя. При запуске программы срабатывает предопределенная процедура ПриНачалеРаботыСистемы в глобальном модуле, которая определяет пользователя, выполняет нужный отчет и завершает работу системы.
Шаг 1. Параметры командной строки для запуска 1С 7.7
Для авторизации и открытия нужной информационной базы без вывода диалоговых окон вызова интерфейса применяются следующие ключи запуска 1cv7.exe (или 1cv7s.exe):
MODE — режим работы (для запуска программы указывается enterprise);/D — путь к каталогу информационной базы;/N — имя пользователя 1С;/P — пароль пользователя;/M — запуск базы в монопольном режиме (опционально).Пример команды для bat-файла:
"C:\Program Files\1Cv77\BIN\1cv7s.exe" enterprise /D"C:\1C_Bases\MainBase" /NРоботРегламент /PPassword123
Шаг 2. Настройка логики в Глобальном модуле
Откроем конфигуратор и проанализируем процедуру ПриНачалеРаботыСистемы. Добавим условие, проверяющее имя вошедшего пользователя с помощью функции ИмяПользователя():
Процедура ПриНачалеРаботыСистемы()
// Проверяем, запущен ли сеанс служебным пользователем
Если ИмяПользователя() = "РоботРегламент" Тогда
// Запускаем необходимый отчет или обработку
// Обработка должна автоматически сформировать данные, сохранить их или отправить
ОткрытьФормуМодально("Отчет", "ВыгрузкаНаСайт", КаталогИБ() + "ExtForms\Выгрузка.ert");
// Завершаем работу программы без вывода интерактивных запросов
ЗавершитьРаботуСистемы(0);
КонецЕсли;
КонецПроцедуры
Вызов метода ЗавершитьРаботуСистемы(0) с параметром 0 позволяет сразу закрыть приложение без дополнительного подтверждения со стороны пользователя.
Если нет желания вносить изменения в глобальный модуль конфигурации, можно использовать запуск через 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".
Предупреждение() или Вопрос(). Если в автоматическом режиме появится модальное окно, регламентный процесс зависнет в ожидании клика пользователя.BIN платформы или путь к базе данных. Иначе 1С может не загрузить необходимые системные библиотеки.