Многие разработчики сталкиваются с необходимостью автоматизировать выполнение определенных действий в файловых информационных базах 1С без участия пользователя. Чаще всего задача звучит так: «нужно, чтобы по расписанию запускался обмен или обновление, база работала в фоне, а затем сама закрывалась». Давайте разберем, как реализовать это решение максимально эффективно и стабильно.
Важно помнить, что в файловом варианте работы 1С регламентные задания не выполняются «сами по себе» на сервере, как это происходит в клиент-серверном варианте (SQL). Для работы планировщика регламентных заданий 1С требуется запущенный сеанс. Если пользователей в системе нет, задачи не выполняются. Именно поэтому мы вынуждены прибегать к запуску отдельного сеанса через планировщик Windows.
Для запуска 1С из командной строки используйте исполняемый файл 1cestart.exe. Чтобы избежать лишних диалоговых окон и обеспечить «тихий» режим работы, используйте следующие ключи:
/F — путь к информационной базе./N и /P — имя пользователя и пароль (рекомендуется создать отдельного технического пользователя)./RunModeManagedApplication — принудительный запуск в режиме управляемого приложения./DisableStartupMessages и /DisableStartupDialogs — отключение служебных сообщений и окон приветствия.Базовая команда будет выглядеть следующим образом:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"C:\ПутьКБазе" /N"Администратор" /P"Пароль" /RunModeManagedApplication /DisableStartupMessages /DisableStartupDialogs
Поскольку запуск встроенного планировщика заданий не всегда предсказуем в файловом режиме, оптимальным решением является запуск внешней обработки, которая содержит код для выполнения нужных вам процедур (например, обмена данными). Для этого добавьте в строку запуска параметр /Execute.
Рассмотрим пример использования командного файла (bat-файла) с проверкой условий:
@echo off
set PathTo1C="C:\Program Files\1cv8\common\1cestart.exe"
set BasePath="C:\База"
set PathToEPF="C:\Scripts\Exchange.epf"
if exist "d:\Obmen\data.xml" (
%PathTo1C% ENTERPRISE /F%BasePath% /N"Robot" /P"123" /RunModeManagedApplication /DisableStartupMessages /Execute %PathToEPF% /C"ЗапускОбмена"
)
Чтобы система не оставляла «зависшие» процессы 1С, которые могут мешать последующим запускам или блокировать файл базы, необходимо корректно завершать работу сеанса. В модуле объекта вашей внешней обработки пропишите следующий код:
Процедура ПриОткрытии()
ПараметрЗапуска = ПараметрЗапуска();
Если ПараметрЗапуска = "ЗапускОбмена" Тогда
// Выполняем основную логику обмена
ВыполнитьОбменДанными();
// Корректно завершаем работу
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
if exist для проверки наличия файла-флага./Out в командной строке, чтобы перенаправить вывод ошибок в текстовый файл: /Out"C:\Logs\ErrorLog.txt"./AllowExecuteScheduledJobs. Это даст разрешение текущему сеансу на выполнение заданий, находящихся в очереди.Используя данный подход, вы сможете добиться надежной автоматизации любых процессов в файловой базе 1С, обеспечив при этом чистоту в процессах операционной системы и стабильное выполнение всех регламентных операций.