Регламентные и фоновые задания. Универсальное регламентное задание Создать регламентное задание
Проблема не новая и время от времени обсуждается на всевозможных 1С-ных форумах. Самое простое и популярное решение - это перезагрузка сервера 1С. К сожалению, этот вариант не всегда допустим или крайне нежелателен. На такой случай существуют более деликатные решения.
Вот один из таких способов в виде краткой пошаговой инструкции:
1. С помощью консоли администрирования серверов 1С ищем проблемное ф оновое задание в списке соединений (например, по времени начала его работы, сравнив с временем начала работы регламентированного задания в консоли заданий). Определяем рабочий процесс, в котором находится зависшее соединение.
2. Открываем свойства этого процесса и отмечаем его как неиспользуемый (если используется один единственный процесс, то предварительно необходимо создать новый рабочий процесс - для того, чтобы все активные соединения переподключились к нему). Запоминаем номер PID данного процесса.
3. Дожидаемся когда все текущие соединения переместятся из отключенного процесса в один из используемых. В конечном итоге в нашем процессе должны остаться только проблемные соединения, которые мы и хотим удалить.
4. На компьютере с сервером 1С с помощью диспетчера задач ищем соответствующий ему процесс rphost.exe по PID отключенного рабочего процесса и удаляем его.
5 . На всякий случай можно удалить отключенный нами рабочий процесс 1С с пощью админ. консоли и, при необходимости, создать новый.
6. Готово. Можно войти в консоль заданий и проверить работоспособность регламентного задания.
Наверное, ни одна серьезная конфигурация на 1С 8.3 или 8.2 не обойдется без использования регламентных и фоновых заданий. Они очень удобны, так как по четко заданному расписанию будут выполняться без вмешательства пользователя и программиста.
Например, вам нужно раз в сутки вам нужно совершать обмен данными с другой программой. Используя регламентные и фоновые задания, 1С сможет производить данные действия самостоятельно, например, в нерабочее время. Такой способ никак не повлияет на работу пользователей и поможет сэкономить время.
Для начала разберемся, что же они обозначают и в чем их отличие:
- Регламентное задание позволяет запускать на выполнение какие-либо конкретные действия по заранее настроенному расписанию.
- Фоновое задание – это объект, в котором содержатся выполняемые действия.
Предположим, что наша фирма что-нибудь продает и имеет собственный сайт, на котором расположены цены. Раз в сутки мы хотим их выгружать для поддержания актуальности.
Откройте конфигурацию и добавьте регламентное задание.
Настройка свойств
Рассмотрим самые важные параметры, которые необходимо заполнить в его свойствах.
- В поле «Имя метода » выбирается та процедура какого-то определенного общего модуля, которая будет непосредственно выполняться. В ней будут указаны все действия по выгрузке цен на наш сайт. Обратите внимания, что выполнение будет происходить на сервере. Это логично, ведь регламентные операции выполняются без участия пользователя.
- Регламентное задание можно отключать или включать по необходимости. Не нужно каждый раз править его расписание. Для этого в палитре свойств установите или снимите флаг «Использование ».
- Еще одной немаловажной является настройка, будет ли являться данное регламентное задание предопределенным , или нет. Предопределенные регламентные задания запускаются автоматически. Если данный признак не установлен, то вам будет нужно запускать их программно, либо воспользоваться обработкой «Консоль заданий» с ИТС.
- Так же вы можете указать количество повторов и интервал между ними при аварийном завершении. Под аварийным завершением подразумеваются те ситуации, когда задания не отработали по причине возникновения ошибки.
Настройка расписания
Завершающим шагом мы настроим расписание нашей выгрузки на сайт по соответствующей гиперссылке в палитре свойств.
Перед вами откроется типовая настройка расписания в 1С 8.3. Здесь нет ничего сложного. В рамках данного примера мы настроили запуск нашей выгрузки цен на сайт ежедневно с пяти до семи утра. В том случае, если регламентное задание не успеет отработать до 7:00, оно будет выполнено уже на следующий день.
Блокировка регламентных заданий
Запустите стандартную утилиту «Администрирование серверов 1С Предприятия» и откройте свойства той информационной базы, где вы создали регламентное задание (для клиент-серверных версий 1С).
В открывшемся окне (после ввода логина и пароля для доступа к ИБ) проверьте, чтобы не был установлен флаг на пункте «Блокировка регламентных заданий включена». Если вы столкнулись ситуацией, когда задание не отрабатывает, первым делом проверяйте эту настройку.
Таким же образом можно полностью отключить регламентные задания в 1С 8.3. Для отключения конкретных фоновых заданий можно воспользоваться встроенной в последние релизы обработкой «Консоль фоновых заданий».
Фоновые и регламентные задания в файловом режиме
В данном режиме настройку и запуск данных заданий намного труднее организовать. Чаще всего создается дополнительная учетная запись, сеанс которой всегда будет открыт.
Активация регламентных заданий в данном случае производится при использовании метода «ВыполнитьОбработкуЗаданий()».
Так же вы можете воспользоваться следующей конструкцией:
В качестве имени процедуры необходимо указать имя клиентской процедуры, которая должна будет выполниться. Интервал показывает, через сколько секунд будет произведено выполнение. Параметр «Однократно» не обязателен к заполнению. Он отражает, будет ли выполнена данная процедура однократно, либо несколько раз.
Отслеживание ошибок в фоновых заданиях
Посмотреть ход выполнения фоновых заданий, а так же наличие возможных ошибок можно в журнале регистрации. В фильтре установите отбор приложению «Фоновое задание» и при необходимости выберите интересующую важность, например, только «Ошибки».
В журнале регистрации будут показаны все записи, соответствующие вашему отбору с указанием комментария, по которому вы можете понять причину ошибки.
Механизм заданий - один из инструментов администрирования 1С. Он включает:
- регламентные задания, как общий объект конфигурации, необходимый для указания, что именно делать, и с какой периодичностью;
- и фоновые задания, как объект встроенного языка, порождаемый регламентными заданиями.
Вопрос 09.59 экзамена 1С:Профессионал по платформе. Экземпляр регламентного задания:
- может быть создан программно
- может быть создан в форме списка, доступной через команду главного меню программы ("Операции/Регламентные задания")
- создается всегда только один экземпляр (при создании соответствующего объекта конфигурации)
- определяется только в режиме конфигурирования на закладке Прочее по кнопке "Состав"
- верны ответы 1 и 2
Вопрос 09.60 экзамена 1С:Профессионал по платформе. Количество одновременно выполняющихся регламентных заданий может быть:
- любым без ограничения
- любое количество, но не будут выполняться два задания с одинаковым ключем и именем метода
- любое количество, но не будут выполняться два задания с одинаковым ключем и наименованием
- любое количество, но не будут выполняться два задания с одинаковым ключем и связанные с одним и тем же объектом метаданных
Вопрос 09.62 экзамена 1С:Профессионал по платформе. В качестве метода регламентного задания может использоваться процедура у которой:
- не должно быть параметров
- может быть только один параметр (список значений)
- может быть только один параметр (структура)
- может быть только один параметр (массив)
- может быть любое количество параметров
Вопрос 09.63 экзамена 1С:Профессионал по платформе. Для создания регламентного задания пользователь должен обладать:
- правами администратора
- правами на использование данного объекта конфигурации (настраивается в роли)
- правами на создание новых экземпляров данного объекта конфигурации (настраивается в роли)
- любыми правами, метод регламентного задания исполняется в привилегированном режиме
Вопрос 09.64 экзамена 1С:Профессионал по платформе. Если регламентное задание определено в конфигураторе (в соответствующем объекте конфигурации) как предопределенное, то для него характерно (выберите наиболее полный ответ):
- нельзя создать не предопределенный экземпляр регламентного задания с привязкой к объекту метаданных предопределенного регламентного задания
- предопределенный экземпляр регламентного задания нельзя пометить на удаление и удалить
- только предопределенные экземпляры регламентных заданий хранятся в информационной базе, не предопределенные экземпляры являются сеансовыми объектами и в базе не хранятся
- верны ответы 1 и 2
- верны ответы 2 и 3
- верны ответы 1, 2, 3
Вопрос 09.67 экзамена 1С:Профессионал по платформе. Если в качестве метода регламентного задания используется функция, то:
- возвращаемое функцией значение игнорируется
- при попытке исполнения задания возникает ошибка
- система будет ожидать исполнения данного задания (исполнение будет происходить не асинхронно)
- значение будет возвращено в соответствующий параметр регламентного задания
Вопрос 09.61 экзамена 1С:Профессионал по платформе. Как могут быть связаны между собой регламентные и фоновые задания?
- Регламентное задание может породить фоновое задание
- Регламентное задание в обязательном порядке порождает фоновое задание
- Фоновое задание в обязательном порядке порождает регламентное задание
- Нет никакой взаимосвязи
Вопрос 09.65 экзамена 1С:Профессионал по платформе. Для обеспечения работы регламентных и фоновых заданий необходимо:
- наличие запуска 1С:Предприятие с установленным при запуске флагом "Планировщик"
- наличие запуска 1С:Предприятие с периодически исполняющимся соответствующим методом системы
- наличие запуска 1С:Предприятие с периодически исполняющимся соответствующим методом системы (но только в файловом варианте функционирования системы)
- как в файловом, так и в клиент-серверном вариантах нет необходимости в запуске экземпляра 1С:Предприятие
По ответам, верный ответ четвертый.
Вопрос 09.57 экзамена 1С:Профессионал по платформе. Фоновые задания позволяют:
- выполнять процедуру по расписанию
- выполнять процедуру асинхронно
- производить перезапуск в случае аварийного завершения
- верны ответы 1 и 2
- верны ответы 2 и 3
- верны ответы 1, 2, 3
Вопрос 09.58 экзамена 1С:Профессионал по платформе. Количество одновременно запущенных фоновых заданий может быть:
- любым без ограничения
- только одно задание на информационную базу
- только по одному заданию на пользовательский сеанс
- любое количество, но нельзя запустить два задания с одинаковым ключем и именем метода
- любое количество, но нельзя запустить два задания с одинаковым ключем и наименованием
- любое количество, но нельзя запустить два задания с одинаковым ключем и связанные с одним и тем же объектом метаданных
Вопрос 09.66 экзамена 1С:Профессионал по платформе. Завершившиеся фоновые задания:
- сохраняется в информационной базе
- являются сеансовыми объектами, хранятся некоторое время (в информационной базе не сохраняются)
- не хранятся ни в каком виде
Вопрос: Аварийно завершился процесс фонового задания...
Всем доброго дня и хорошей недели!)
Бухгалтерия предприятия, редакция 3.0 (3.0.46.11).
Платформа 8.3.9.2033.
При групповом проведении документов возникает ошибка "Аварийно завершился процесс фонового задания". Никаких причин не выдаётся...
Перезагрузка сервера SQL, сервера 1С (мало ли) не помогает... Может, кто сталкивался с подобной проблемой??? Даже сложно сказать после чего появилась данная ошибка ибо групповым проведением (закрытием месяца) давно не пользовались...
Ответ:
() () Ещё раз добрый день) Включил технологический журнал и обнаружил вот такие интересные вещи (может в курсе с чем проблема?):
Сделана попытка выполнить операцию на объекте, не являющемся сокетом...
Процесс завершается. Исходящий вызов запрещен...
Не найдено ни одного сервера с размещенным сервисом...
Вопрос: Фоновые задания
Ответ:
Вопрос: Как передать файл в фоновое задание
Платформа 8.3.6.2152
Нужно из УФ передать файл в фоновое задание для последующей обработки.
Делал так:
&НаКлиенте
Процедура Команда1(Команда) ФайлДД = Новый ДвоичныеДанные(ИмяФайла); АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(ФайлДД, УникальныйИдентификатор); ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) КонецПроцедуры &НаСервере Функция ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(АдресХранилищаДляФонового); Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода); КонецФункции
В общем модуле:
Процедура МоеФоновое(АдресХранилища) Экспорт
ФайлДД = ПолучитьИзВременногоХранилища(АдресХранилища);
Если
ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда
ЗаписьЖурналаРегистрации
ЗаписьЖурналаРегистрации
("Отладка","Нет ДД");
КонецЕсли
;
КонецПроцедуры
Пробовал так:
ПомещаемыеФайлы = Новый
Массив;
ПомещаемыеФайлы.Добавить(Новый
ОписаниеПередаваемогоФайла(ИмяФайла));
ПомещенныеФайлы = Новый
Массив;
Если
НЕ
ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, Ложь
, УникальныйИдентификатор) Тогда
Возврат
;
КонецЕсли
;
АдресХранилищаДляФонового = ПомещенныеФайлы.Хранение;
Пробовал так:
АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(Неопределено
, УникальныйИдентификатор);
ПоместитьФайл(АдресХранилищаДляФонового, ИмяФайла, Ложь
);
Из фонового на клиент через временное хранилище нормально передается, а вот с клиента в фоновое - никак почему-то.
Ответ:
В общем все оказалось довольно просто. Получается можно тупо передавать ДвоичныеДанные как параметр к фоновому заданию. Для неквалифицированных любителей цитировать справку и рассказывать что "так и задумано" рабочий код:
&НаКлиенте
Процедура Команда1(Команда)
ЗапуститьВыгрузкуЗагрузкуНаСервере(Новый
ДвоичныеДанные(ИмяФайла))
КонецПроцедуры
&НаСервере
Функция
ЗапуститьВыгрузкуЗагрузкуНаСервере(ДД)
ПараметрыМетода = Новый
Массив;
ПараметрыМетода.Добавить(ДД);
Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода);
КонецФункции
Процедура
МоеФоновое(ФайлДД) Экспорт
Если
ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда
ЗаписьЖурналаРегистрации
("Отладка","Есть ДД");
Иначе
ЗаписьЖурналаРегистрации
("Отладка","Нет ДД");
КонецЕсли
;
КонецПроцедуры
Вопрос: Запуск фонового задания под нужным пользователем
Ответ:
Вопрос: Отладка фонового задания
Фоновое задание выполняется с ошибкой. Решил отладить.
запускаю через внешнюю обработку с одной строкой:
ФоновыеЗадания.Выполнить("МойМодуль.МоеЗадание");
На точку останова в модуле не выходит.
Отладка на сервере разрешена, галка в отладке, автоматическое подключение, фоновые задания - стоит. В чем может быть ещё проблема?
Ответ:
В общих модулях было обращение к функциям требующих клиентского а не серверного выполнения. Пришлось посадить их в скобки #Если Клиент Тогда. Отработало и фоновое.
Вопрос: Ошибка при выполнении обмена
Добрый день Подскажите, куда копать:
выполняю обмен в бухгалтерской базе. Из УТ-шки выгружается порядка трех десятков документов через типовой обмен. Долго думат (около часа) и завершается с сообщением:
аварийно завершился процесс фонового задания Фоновые задания в «1С» могут запускаться автоматически по расписанию (т.е. являться экземплярами регламентных заданий), или разработчик сам может инициировать запуск фонового задания для выполнения произвольного алгоритма (яркий пример формирование отчетов в фоне).
ВАЖНО!!! Для файловых баз, начиная с версии платформы 8.3.3.641, не требуется запуск отдельного сеанса, в котором будут выполняться фоновые задания. Т.е. раньше в файловых базах для запуска фоновых заданий требовалось выполнять метод глобального контекста «ВыполнитьОбработкуЗаданий()» . Подробности по этой ссылке .
Процедура запуска произвольного алгоритма в фоновом задании
Для запуска нашего алгоритма в отдельном фоновом задании, мы будем использовать метод «Выполнить()» менеджера фоновых заданий: Синтаксис: Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)- <ИмяМетода> (обязательный); Тип: Строка
Имя экспортируемой процедуры или функции неглобального общего модуля, который может быть выполнен на сервере, в форме ИмяМодуля.ИмяМетода. - <Параметры> (необязательный); Тип: Массив
Массив параметров, передаваемых в метод. Количество и типы параметров должны соответствовать параметрам метода. (подробнее в Синтакс-помощнике) - <Ключ> (необязательный); Тип: Строка
Если ключ задан, то он должен быть уникальным среди ключей активных фоновых заданий, имеющих такое же имя метода, что и у данного фонового задания. - <Наименование> (необязательный); Тип: Строка.
Описание задания.
Процедура выполнения фонового задания
В нашем случае мы будем использовать экспортную процедуру расположенную в общем модуле «ОбщийМодульСервер» (думаю излишне пояснять что модуль должен быть серверным) Процедура ЗаписатьИнформациюОТоварахВФоне(ПараметрФоновогоЗадания) Экспорт ЗапросДанных = Новый Запрос("ВЫБРАТЬ | Товары.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Товары"); Выборка = ЗапросДанных.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МЗ = РегистрыСведений.ДанныеОТоварах.СоздатьМенеджерЗаписи(); МЗ.Период = ТекущаяДата(); МЗ.Номенклатура = Выборка.Номенклатура; МЗ.Информация = ПараметрФоновогоЗадания; МЗ.Записать(); КонецЦикла; КонецПроцедуры В целях демонстрации работы фонового задания, мы будем формировать записи в нашем регистре сведений, для каждой номенклатуры, при этом параметр будет передаваться из формы в которой происходит запуск фонового задания.Команда запуска фонового задания
Параметр который будем передавать в процедуру выполнения, будем брать из реквизита управляемой формы (реквизит с типом «Строка»):Код модуля управляемой формы будет выглядеть следующим образом: &НаКлиенте Процедура ЗапускФоновогоЗадания(Команда) ЗапускФоновогоЗаданияНаСервере(); КонецПроцедуры &НаСервере Процедура ЗапускФоновогоЗаданияНаСервере() // Формируем массив с параметрами ПараметрыЗадания = Новый Массив; ПараметрыЗадания.Добавить(ПараметрЗадания); // Запускаем фоновое выполнение алгоритма ФоновыеЗадания.Выполнить(// Наш экспортный метод в общем модуле "ОбщийМодульСервер.ЗаписатьИнформациюОТоварахВФоне", // Передаем массив с параметрами ПараметрыЗадания, // Указываем ключ задания Новый УникальныйИдентификатор, // Указываем наименование фонового задания "Наше фоновое задание"); КонецПроцедуры