Запуск внешней обработки в качестве регламентного задания по расписанию
По теме из базы знаний
- Как создать регламентное задание для удаления помеченных объектов
- Настройка регламентных заданий с использованием bat-файлов или vbs-скриптов через механизм Task Scheduler Windows
- Удаление неактивных и повторно запущенных пользователем сеансов - обработкой в фоне или внешней обработкой
- Выполнение внешней обработки по расписанию для управляемого и обычного приложения
- Конфигурирование новых регламентных заданий с помощью расширения
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Создаешь регламентное задание в одном из общих модулей прописываешь запуск в виде процедуры экспортной, что-то типа такого ну и с помощью консоли регламентных заданий с диска ИТС задаешь все остальные нюансы. ну или в конфигураторе
Внешняя = ВнешниеОтчеты.Создать("D:\пусть.ерт);
Форма = Внешняя.ПолучитьФорму();
Форма.Открыть();
Когда кстати пишешь форма.выполнить() процедура выполнить должна быть экспортной!
Внешняя = ВнешниеОтчеты.Создать("D:\пусть.ерт);
Форма = Внешняя.ПолучитьФорму();
Форма.Открыть();
Когда кстати пишешь форма.выполнить() процедура выполнить должна быть экспортной!
Внешняя обработка должна храниться в справочнике внешних обработок. Так не запутаешся в версиях.
Перед выполнением кода внешней обработки - выгрузить обработку на диск во временный файл.
Выставить глобальный флаг ака "РегламентноеЗадание1 = истина". Чтобы не запустить второе задание в момент работы первого.
Открыть внешний файл, запустить нужную цепочку функций.
Снять флаг "РегламентноеЗадание1", если необходимо вызвать это-же задание в конкретное время - рассчитать таймаут от текущего.
Выставить параметр "ВремяВыполненияРегламентногоЗадания1" = Дата,время.
Если задание периодечиное - Повторить собственный вызов через таймаут.
Убиться, нас вызовут через таймаут или когда поднимется сервер.
Самое удобное и выживаемое (отключение света, падение сервера) для сервера под виндой - создание пользователя ака "Служебный".
Под которым и будут выполнятся все регламентные задания.
Пользователь заходит - сразу отрабатывает код, который проверяет не были ли пропущены какие-либо регламентные задания по флагам "ВремяВыполненияРегламентногоЗадания1". Если пропустили тут уж кодом определяйся, какие запустить немедленно, какие в конкретное время.
Пользователь должен торчать в базе вечно, кроме времени бэкапов.
Расписание регламентных заданий настраивать виндовым планировщиком заданий.
Настроить его так: пытаться выполнить таск каждые 15 минут, если таск запущен, ничего не делать.
Перед выполнением кода внешней обработки - выгрузить обработку на диск во временный файл.
Выставить глобальный флаг ака "РегламентноеЗадание1 = истина". Чтобы не запустить второе задание в момент работы первого.
Открыть внешний файл, запустить нужную цепочку функций.
Снять флаг "РегламентноеЗадание1", если необходимо вызвать это-же задание в конкретное время - рассчитать таймаут от текущего.
Выставить параметр "ВремяВыполненияРегламентногоЗадания1" = Дата,время.
Если задание периодечиное - Повторить собственный вызов через таймаут.
Убиться, нас вызовут через таймаут или когда поднимется сервер.
Самое удобное и выживаемое (отключение света, падение сервера) для сервера под виндой - создание пользователя ака "Служебный".
Под которым и будут выполнятся все регламентные задания.
Пользователь заходит - сразу отрабатывает код, который проверяет не были ли пропущены какие-либо регламентные задания по флагам "ВремяВыполненияРегламентногоЗадания1". Если пропустили тут уж кодом определяйся, какие запустить немедленно, какие в конкретное время.
Пользователь должен торчать в базе вечно, кроме времени бэкапов.
Расписание регламентных заданий настраивать виндовым планировщиком заданий.
Настроить его так: пытаться выполнить таск каждые 15 минут, если таск запущен, ничего не делать.
День добрый.
Я в своё время решил проблему следующим образом.
1. Создал на сервере отдельного пользователя. Под ним у нас будет запускаться 1С-ка с обработкой.
2. Дописываем в обработке
3. Делаем текстовый файлик
4. И бат файл
5. Бат файл загоняем в планировщик винды. Под пользователем который мы создали в первом пункте.
Я в своё время решил проблему следующим образом.
1. Создал на сервере отдельного пользователя. Под ним у нас будет запускаться 1С-ка с обработкой.
2. Дописываем в обработке
Процедура ПриОткрытии()
Если Найти(ПараметрЗапуска,"-exchange")>0 Тогда
ВыполнитьОбменПоПараметрам(ПараметрЗапуска); // Это то что делает обработка
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
3. Делаем текстовый файлик
/F "Путь к файловой БД"
/N "Логин 1С"
/P "Пароль"
/DisableStartupMessages
/C-exchange("133",Y,Y)
/Execute "C:\Reglament\АвтОбменДанными.epf"
4. И бат файл
CD "Путь к 1С-ке"
Start 1cv8.exe /@Путь к файлику из пункта 3
5. Бат файл загоняем в планировщик винды. Под пользователем который мы создали в первом пункте.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот