Навеяно собственным опытом настройки регламентного задания в типовую УТ без добавления в конфигурацию и обещанием себе в процессе внедрения собрать и систематизировать все материалы, которые были найдены в различных источниках.
Автоматические регламентные задания для конфигураций приложения настраиваются с помощью бат-файлов (файлы с расширением .bat) или скриптами через стандартный механизм Windows (Выполнение задания по расписанию или Task Scheduler), при этом в качестве параметров можно передать неограниченное количество параметров для инициализации нужных процедур.
Процесс настройки разделяется на четыре этапа:
- Написание самой обработки для запуска;
- Выбор способа исполнения регламентного задания;
- Настройки параметров пользователя 1С для запуска;
- Настройка регламентного задания в Task Scheduler Windows.
По первому пункту, видимо тут для каждого будет своя обработка, так, собственно, пример своей обработки я прикреплю к статье. Постарался написать универсальный код, который способен выполнить последовательно несколько процедур.
Далее следует выбор, как запускать данную обработку.
Ниже я привожу различные вариации как bat — файлов, так и vbs — скриптов.
Каждый из вариантов имеет свои плюсы, так и минусы. Например, использование первого варианта предполагает полный запуск 1С с интерфейсом.
bat_file.bat
"ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1Сin1cv8.exe" ENTERPRISE /F "ПУТЬ_К_БАЗЕ "/N "ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С" /P "ПАРОЛЬ" /DisableStartupMessages /Execute"ПУТЬ_К_ОБРАБОТКЕСАМА_ОБРАБОТКА.epf" /C"ПАРАМЕТР1, ПАРАМЕТР2"
bat_serv.bat
"ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1Сin1cv8.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 — файл, планировщик самостоятельно растянет программу и аргументы в нужные поля.
Все остальные реквизиты я оставил по умолчанию.
Нажимаем ОК, наблюдаем как задача добавилась в список и начала исполняться.
Все описанное в статье можно более детально изучить на скриптах, которые прикреплены к статье, а также подробнее изучить принцип передачи различного количества параметров для множественного запуска процедур внешней обработки.
(0) Явный вызов 1cv8 давно уже устарел.
Мы и многие из коллег юзаем удобный и мощный инструмент для автоматизации 1С.
Очень рекомендую vanessa-runner
https://github.com/silverbulleters/vanessa-runner
Запускать 1С стало совсем просто
Работает давно, удобно и быстро, используются штатные возможности командной строки 1С и навороты над ней.
+ Файлы настройки
+ командная строка
+ параметризация
+ относительные пути файлов
+ поддержка кучи операций
+ никаких длинных страшных ключей и командных строк 1С
+ и т.п. и т.д.
Никакие устаревшие явные вызовы 1cv8.exe, который еще найти предстоит, не нужны!
(4) Я не против прогресса, и скорее всего vanessa-runner закономерный этап эволюции. И она обязательна для изучения, но я старался написать статью в помощь людям, которые повседневно сталкиваются с автоматизацией очередного обмена их торговой системы с системой поставщика или покупателя. Статья, с которой можно скопипастить код и быстренько, а главное прозрачненько решить локальную задачу.
Хотя не воспримите мой месседж как отрицание качественности функционала Ванессы.
t.Connect(«File=»»ПУТЬ_К_БАЗЕ_1С»»;Usr=»»ИМЯ_ПОЛЬЗОВАТЕЛЯ»»;pwd=»»ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ«»»)
Хорошо, что речь идет всего лишь о запуске 1С, а не банк-клиента.
(8)Тут имеет значение под какими правами запускается скрипт, а то еще неизвестно где больше вреда от утекания пароля
(8) Крайне признателен, за такое важное уточнение, и действительно хранение в открытом виде паролей, это нарушение всего мыслимых и немыслимых правил. Даже если этот запуск осуществляется с закрытого на семь замков сервера.
И ведь мы с Вами прекрасно знаем, что есть возможность скомпилировать BAT в EXE. Не стал об этом писать, чтобы не перегружать статью. Но пожалуй это будет моим следующей мини публикацией.
(9) И Вы справедливо подметили, тут действительно верным решением будет именно компиляция в exe и запуск уже его.
(4) видео можете снять — как вы используете лучшие инструменты по 1с? прикрепить
лучше один раз увидеть, чем сто раз читать гитхаб 🙂