INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Зябликов Дмитрий | Senior ios developer | ЦРПТ

«Модуль ЭДО для 1С»

Полностью удаленный проект от прототипа до продакшна: - специфика законодательства - командная работа - интеграционные фишки (лайфхаки) Итог: довольный заказчик

Настройка регламентных заданий с использованием bat-файлов или vbs-скриптов через механизм Task Scheduler Windows

Администрирование - Системное

20
Развернутое описание всех нюансов настройки регламентных заданий без редактирования конфигурации через внешние обработки 1С с использованием bat-файлов или скриптами через механизм Task Scheduler Windows.

Навеяно собственным опытом настройки регламентного задания в типовую УТ без добавления в конфигурацию и обещанием себе в процессе внедрения собрать и систематизировать все материалы, которые были найдены в различных источниках.

Автоматические регламентные задания для конфигураций приложения настраиваются с помощью бат-файлов (файлы с расширением .bat) или скриптами через стандартный механизм Windows (Выполнение задания по расписанию или Task Scheduler), при этом в качестве параметров можно передать неограниченное количество параметров для инициализации нужных процедур.  

Процесс настройки разделяется на четыре этапа:

  1. Написание самой обработки для запуска;
  2. Выбор способа исполнения регламентного задания;
  3. Настройки параметров пользователя 1С для запуска;
  4. Настройка регламентного задания в 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 - файл, планировщик самостоятельно растянет программу и аргументы в нужные поля.

Все остальные реквизиты я оставил по умолчанию.

Нажимаем ОК, наблюдаем как задача добавилась в список и начала исполняться.

Все описанное в статье можно более детально изучить на скриптах, которые прикреплены к статье, а также подробнее изучить принцип передачи различного количества параметров для множественного запуска процедур внешней обработки.

 

20

Скачать файлы

Наименование Файл Версия Размер
Примеры bat-файлов и vbs-скриптов и внешняя обработка запуска
.zip 5,57Kb
16.04.18
1
.zip 5,57Kb 1 Скачать

См. также

Комментарии
Сортировка: Древо
4. artbear 1054 19.04.18 17:25 Сейчас в теме
(0) Явный вызов 1cv8 давно уже устарел.

Мы и многие из коллег юзаем удобный и мощный инструмент для автоматизации 1С.

Очень рекомендую vanessa-runner
Запускать 1С стало совсем просто
https://github.com/silverbulleters/vanessa-runner

Работает давно, удобно и быстро, используются штатные возможности командной строки 1С и навороты над ней.

+ Файлы настройки
+ командная строка
+ параметризация
+ относительные пути файлов
+ поддержка кучи операций
+ никаких длинных страшных ключей и командных строк 1С
+ и т.п. и т.д.

Никакие устаревшие явные вызовы 1cv8.exe, который еще найти предстоит, не нужны!
Evil Beaver; vlhown; Gobbledegook; +3 Ответить
5. plebedinskiy 29 20.04.18 10:20 Сейчас в теме
(4) Я не против прогресса, и скорее всего vanessa-runner закономерный этап эволюции. И она обязательна для изучения, но я старался написать статью в помощь людям, которые повседневно сталкиваются с автоматизацией очередного обмена их торговой системы с системой поставщика или покупателя. Статья, с которой можно скопипастить код и быстренько, а главное прозрачненько решить локальную задачу.
Хотя не воспримите мой месседж как отрицание качественности функционала Ванессы.
14. Rustig 977 24.04.18 16:22 Сейчас в теме
(4) видео можете снять - как вы используете лучшие инструменты по 1с? прикрепить
лучше один раз увидеть, чем сто раз читать гитхаб :)
8. vlhown 21.04.18 07:57 Сейчас в теме
"ПУТЬ_К_ТЕКУЩЕЙ_ВЕРСИИ_1С\bin\1cv8.exe" ENTERPRISE /F "ПУТЬ_К_БАЗЕ "/N "ИМЯ_ПОЛЬЗОВАТЕЛЯ_1С" /P "ПАРОЛЬ"

t.Connect("File=""ПУТЬ_К_БАЗЕ_1С"";Usr=""ИМЯ_ПОЛЬЗОВАТЕЛЯ"";pwd=""ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ""")


Хорошо, что речь идет всего лишь о запуске 1С, а не банк-клиента.
9. webester 28 21.04.18 14:34 Сейчас в теме
(8)Тут имеет значение под какими правами запускается скрипт, а то еще неизвестно где больше вреда от утекания пароля
13. plebedinskiy 29 23.04.18 09:37 Сейчас в теме
(9) И Вы справедливо подметили, тут действительно верным решением будет именно компиляция в exe и запуск уже его.
10. plebedinskiy 29 21.04.18 15:41 Сейчас в теме
(8) Крайне признателен, за такое важное уточнение, и действительно хранение в открытом виде паролей, это нарушение всего мыслимых и немыслимых правил. Даже если этот запуск осуществляется с закрытого на семь замков сервера.
И ведь мы с Вами прекрасно знаем, что есть возможность скомпилировать BAT в EXE. Не стал об этом писать, чтобы не перегружать статью. Но пожалуй это будет моим следующей мини публикацией.
Оставьте свое сообщение