Навеяно собственным опытом настройки регламентного задания в типовую УТ без добавления в конфигурацию и обещанием себе в процессе внедрения собрать и систематизировать все материалы, которые были найдены в различных источниках.
Автоматические регламентные задания для конфигураций приложения настраиваются с помощью бат-файлов (файлы с расширением .bat) или скриптами через стандартный механизм Windows (Выполнение задания по расписанию или Task Scheduler), при этом в качестве параметров можно передать неограниченное количество параметров для инициализации нужных процедур.
Процесс настройки разделяется на четыре этапа:
- Написание самой обработки для запуска;
- Выбор способа исполнения регламентного задания;
- Настройки параметров пользователя 1С для запуска;
- Настройка регламентного задания в Task Scheduler Windows.
По первому пункту, видимо тут для каждого будет своя обработка, так, собственно, пример своей обработки я прикреплю к статье. Постарался написать универсальный код, который способен выполнить последовательно несколько процедур.
Далее следует выбор, как запускать данную обработку.
Ниже я привожу различные вариации как bat - файлов, так и vbs - скриптов.
Каждый из вариантов имеет свои плюсы, так и минусы. Например, использование первого варианта предполагает полный запуск 1С с интерфейсом.
bat_file.bat
"ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1С\bin\1cv8.exe" ENTERPRISE /F "ПУТЬ_К_БАЗЕ "/N "ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С" /P "ПАРОЛЬ" /DisableStartupMessages /Execute"ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf" /C"ПАРАМЕТР1, ПАРАМЕТР2"
bat_serv.bat
"ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1С\bin\1cv8.exe" ENTERPRISE /S "ИМЯ_СЕРВЕРА\ИМЯ_БАЗЫ "/N "ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С" /P "ПАРОЛЬ" /DisableStartupMessages /Execute"ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf" /C"ПАРАМЕТР1, ПАРАМЕТР2"
Так, хочется отметить, что одна из трудностей, с которой я столкнулся, это то, что сначала не указал параметр /DisableStartupMessages, подавляющего сообщения о несоответствии сохраненной конфигурации и конфигурации базы данных. Из-за его отсутствия у меня стопорился процессы выполнения.
scr_file.vbs
Set t = CreateObject("V83.Application")
t.Connect("File=""ПУТЬ_К_БАЗЕ_1С"";Usr=""ИМЯ_ПОЛЬЗОВАТЕЛЯ"";pwd=""ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ""")
r = t.ExternalDataProcessors.Create("ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf", FALSE).ThisObject.Example("""""""ПАРАМЕТР1, ПАРАМЕТР2""""""")
If r = 1 Then
MsgBox("Ok")
End If
t.Exit(False)
set t = Nothing
scr_serv.vbs
Set t = CreateObject("V83.Application")
t.Connect("Srvr=ИМЯ_СЕРВЕРА;Ref=ИМЯ_БАЗЫ;Usr=""ИМЯ_ПОЛЬЗОВАТЕЛЯ"";pwd=""ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ""")
r = t.ExternalDataProcessors.Create("ПУТЬ_К_ОБРАБОТКЕ\САМА_ОБРАБОТКА.epf", FALSE).ThisObject.Example("""""""ПАРАМЕТР1, ПАРАМЕТР2""""""")
If r = 1 Then
MsgBox("Ok")
End If
t.Exit(False)
set t = Nothing
Лично по своему опыту, мне понравился вариант с vbs - скриптами. Поскольку "V83.Application" по моим субъективным ощущениям работает быстрее, однако, я столкнулся с тем, что часть методов оказалась недоступной, поскольку в типовой УТ на модулях которые были задействованы при записи не стояло галочки "внешнее соединение", потому при записи документов, у меня возникали ошибки, связанные с необнаружением процедур. Потому для себя я решил, для аналитики и чтения он подходит прекрасно, а для записи, все-таки bat-файлы с полноценным запуском. Если тут я не прав, прошу меня поправить.
Информационное сообщение имеет смысл только на этапе отладки скрипта, при последующей настройке регламентного задания советую это сообщение убрать.
Далее немного о пользователях, от имени которых будет производиться запуск, ему нужны права на "Открытие внешних отчетов и обработок" и думаю, будет не лишним снять галку "Защита от опасных действий" для этого пользователя в конфигураторе.
На следующем этапе встаем на тропу админов.
Требуется добавить задание в Task Scheduler Windows.
В моем случае это был Win Server, хотя это совсем не принципиально, интерфейс планировщика задач одинаков и не менялся уже очень давно.
Очень важно, чтобы Была выбрана опция "Выполнять для всех пользователей" и была установлена галка "Выполнить с наивысшими правами".
1С все таки, хочешь быстро, устанавливай монопольный режим))
Переходим к настройке расписания, здесь я не испытал трудностей, тут все просто.
На следующем шаге выбираем, что делать, так в нашем случае это будет запуск программы, и когда мы через "Обзор" прикрепим подготовленный bat - файл, планировщик самостоятельно растянет программу и аргументы в нужные поля.
Все остальные реквизиты я оставил по умолчанию.
Нажимаем ОК, наблюдаем как задача добавилась в список и начала исполняться.
Все описанное в статье можно более детально изучить на скриптах, которые прикреплены к статье, а также подробнее изучить принцип передачи различного количества параметров для множественного запуска процедур внешней обработки.