Некоторые задачи в документообороте и учете бывает необходимо выполнять периодически. Например, по двадцатым числам. Или ежедневно.
Обычно в компании стараются создать правила о выполнении таких задач – кто, когда и как должен выполнить задачу, кто проконтролировать.
Такие задачи называют – регламентированными, то есть выполняемые согласно регламента.
В ИТ часто регламентированно выполняется мониторинг.
Это хорошо знакомо системным администратором – есть специальные программы, которые периодически проверяют работоспособность серверов и сетевой инфрастуктуры и сообщают смс или электронным письмом администратору.
Аналогичные вещи существуют для вебмастеров – для проверки доступности сайта в течении суток.
В 1С задачи мониторинга и любые другие периодические задачи, которые должны выполняться автоматически по расписанию, выполняются с помощью механизма Регламентые задания 1С.
Поговорим сегодня про них.
Регламентные задания 1С
Регламентные задания 1С – это , который позволяет выполнять , как это делает , а по расписанию.
Само регламентное задание 1С в конфигураторе – это способ указать настройки и задать расписание. Кстати, расписание можно менять динамически потом в режиме 1С Предприятие.
Фоновые задания можно создавать из текста программы на языке 1С произвольно без регламентного задания 1С – для параллельных вычислений на сервере.
Выполнение регламентных заданий 1С можно отключить временно – в .
Добавление регламентного задания 1С
Регламентные задания 1С находятся в конфигурации в ветке Общие/Регламентные задания 1С. Добавим новое регламентное задание 1С, укажем его имя.
В свойстве регламентного задания 1С Имя метода – указывается , также как и в . Функция будет находиться в общем модуле с установленной галочкой Сервер в свойствах, то есть модуль должен быть добавлен заранее.
Свойство регламентного задания 1С — Наименование задания – определяет название, под которым будет фигурировать задание в средствах управления заданиями.
Свойство регламентного задания 1С – Ключ – позволяет сгруппировать несколько разных регламентных заданий 1С. Одновременно может быть запущено только одно задание с одинаковым значением ключа. Само значение может быть произвольным. Пустое значение не учитывается при контроле (то есть считается не заполненным).
Свойство регламентного задания 1С – Предопределенное – определяет, что при запуске 1С Предприятия такое задание будет создано и в единственном экземпляре с указанными в конфигураторе расписанием. Не предопределенные задания появляются в момент наступления расписания программно.
В типовых конфигурациях, например Бухгалтерии редакции 2.0, такие регламентные задания 1С как Обновление конфигурации и Пересчет итогов – предопределенные, а такие как Обмен данными или Отложенные движения – не предопределенные.
Использование – включает задание (то есть оно будет выполняться только если галочка Использование установлена).
Повтор при аварийном завершении – как легко догадаться означает перезапуск задания, если оно не смогло выполниться успешно с первого раза – указывается сколько раз перезапускать и через сколько после аварийного завершения.
Управление регламентным заданием 1С и мониторинг
Для управления регламентными заданиями 1С существует специальная типовая обработка Консоль заданий. Ее можно найти в том числе на .
Эта обработка относится к так называемым универсальным внешним типовым обработкам 1С, которые часто не включаются в конфигурации, а распространяются отдельно, например, на дисках ИТС.
С помощью обработки консоль заданий можно:
- Включить/выключить выполнение регламентного задания 1С
- Назначить/изменить расписание регламентного задания 1С (да и другие параметры)
- Указать пользователя 1С, от имени которого будет выполнена регламентное задание 1С
- Посмотреть — какие задачи когда были выполнены и с каким результатом, ошибки выполнения заданий 1С
- Выполнить задание.
Копии баз данных и регламентные задания 1С
Если используется серверная 1С, то бывает следующая ситуация:
- В своих целях (например, для программирования) делается копия рабочей базы
- В копии базы работается, тестируется и так далее
- Забывается выключить регламентные задания 1С в такой тестовой базе.
Пока регламентные задания 1С выполняют задачи, связанные только со своей информационной базой, то ничего в этом нет.
Однако частенько регламентные задания 1С могут сохранять какие-либо файлы, данные в другие базы, проводить обмен, высылать электронные письма.
В этом случае может получится интересная смесь между результатом выполнения регламентных заданий 1С в рабочей базе и копиях.
Регламентные задачи 1С для в копиях рабочей базы нужно отключать в .
Выполнение и невыполнение регламентных задач 1С
При создании регламентных заданий 1С необходимо помнить:
- Задачи выполняются сами собой – их необходимо мониторить
- Задачи выполняются в модуле на сервере
- Задачи выполняются под другим пользователем Windows, под другими правами.
Во-первых нужно проверить, что задача выполняется и может быть выполнена как регламентное задание 1С.
Во-вторых серверный модуль значит, что недоступны многие вещи, которые доступны на клиенте. Например, иногда, не все документы могут быть проведены только на сервере, так как в их алгоритме может быть предусмотрено, что проведение запускается пользователем вручную и могут быть использованы не серверные функции, например
Предупреждение(«Привет!»)
В-третьих, если задача имеет дело с чем-то вне базы 1С, то важное значение приобретают права пользователя Windows, под которым выполняется задание.
Особенно важен при разработке третий пункт. Если модуль не может быть выполнен на сервере – задание не будет выполняться в принципе. Для проверки нужно хотя бы раз запустить задание и посмотреть результат «Задание выполнено» в обработке Консоль заданий.
Регламентные задания в 1С предназначены для выполнения определенных процедур по расписанию, с некоторой периодичностью.
Регламентные задания хранятся в информационной базе, имеют расписание запуска. Сам запуск производится полностью автоматически, если режим работы информационной базы клиент-серверный. Если же база файловая, то необходимо выполнить следующие действия:
- выделить специального пользователя для выполнения регламентных заданий;
- должна быть открыта база под этим пользователем, в которой периодически должна выполняться функция ВыполнитьОбработкуЗаданий().
Создание регламентного задания
Регламентные задания — объект метаданных конфигурации 1С. Находится в группе Общие. Рассмотрим параметры и свойства регламентных заданий.
Имя метода — путь к экспортной процедуре в общем модуле, которая будет выполняться по заданному расписанию. Процедура должна выполняться на сервере. В этом регламентные задания чем-то похожи на объект Подписка на событие.
Ключ — позволяет создать несколько регламентных заданий одного типа. Например, выполнение синхронизации данных между несколькими информационными базами может быть реализовано с помощью одного объекта метаданных РегламентноеЗадание , при этом самих регламентных заданий будет создано несколько (по количеству баз для обмена). Различаться эти регламентные задания будут с помощью свойства Ключ. Одновременно может выполняться только одно задание с одинаковым ключом.
Использование — флаг, показывающий, включено ли регламентное задание.
Предопределенное — здесь можно провести аналогию с предопределенными элементами справочника. Предопределенные элементы создаются в конфигураторе и применяются пользователями в работе. Обычные элементы пользователь создает сам. С регламентными заданиями точно так же: если оно предопределенное, то оно существует и может выполняться по расписанию сразу после создания в конфигураторе. Если же флаг Предопределенное не установлен, то пользователю нужно самому создать одно или несколько регламентных заданий данного типа (например, через Консоль заданий ).
Количество повторов при аварийном завершении задания — определяет, сколько раз будет выполнен перезапуск фонового задания, если оно было завершено с ошибкой.
Интервал повтора при аварийном завершении задания — определяет, с какой периодичностью будет выполнен перезапуск фонового задания, если оно было завершено с ошибкой.
Программная работа с регламентными заданиями
В данных примерах будем рассматривать работу с обычными, не предопределенными, регламентными заданиями.
Программное создание регламентного задания
//Создаем задание
"ИмяРегдаментногоЗадания"
)
;
//Устанавливаем ключ регламентного задания (не обязательно)
Задание.
Ключ =
"КлючЗадания"
;
//Включаем регламентное задание
Задание.
Использование =
Истина
;
//Записываем регламентное задание
Задание.
Записать()
;
Программное получение регламентного задания для изменения параметров
В этом примере предположим, что существует только одно регламентное задание данного типа. Если заданий несколько, то, зная , нетрудно внести в код соответствующие изменения.
"ИмяРегламентногоЗадания"
]
)
)
;
Если
Задания.
Количество()
>
0
Тогда
Задание=
Задания[
0
]
;
Иначе
Задание =
РегламентныеЗадания.
СоздатьРегламентноеЗадание("ИмяРегламентногоЗадания"
)
;
КонецЕсли ;
//Регламентное задание находится в переменной Задание. Можно изменять его параметры.
Вызов диалога изменения расписания регламентного задания
Для работы с расписанием регламентного задания существует особый тип диалога. Все еще предполагаем, что у нас есть только одно регламентное задание данного типа.
//Получаем массив с регламентными заданиями нужного типа
Задания=
РегламентныеЗадания.
ПолучитьРегламентныеЗадания(новый Структура("Метаданные"
,
Метаданные.
РегламентныеЗадания[
"ИмяРегламентногоЗадания"
]
)
)
;
//Если задание существует, то по условию оно одно
Если
Задания.
Количество()
>
0
Тогда
Задание=
Задания[
0
]
;
//Если задания нет, создадим его
Иначе
Задание =
РегламентныеЗадания.
СоздатьРегламентноеЗадание("ИмяРегламентногоЗадания"
)
;
КонецЕсли ;
Расписание= Задание. Расписание;
//Создаем диалог изменения расписания регламентного задания
ДиалогРедактирования=
Новый
ДиалогРасписанияРегламентногоЗадания (Расписание)
;
//Показываем диалог пользователю и обрабатываем изменения расписания
Если
ДиалогРедактирования.
ОткрытьМодально()
Тогда
Задание.
Расписание =
ДиалогРедактирования.
Расписание;
Задание.
Записать()
;
КонецЕсли
;
Вопрос: Аварийно завершился процесс фонового задания...
Всем доброго дня и хорошей недели!)
Бухгалтерия предприятия, редакция 3.0 (3.0.46.11).
Платформа 8.3.9.2033.
При групповом проведении документов возникает ошибка "Аварийно завершился процесс фонового задания". Никаких причин не выдаётся...
Перезагрузка сервера SQL, сервера 1С (мало ли) не помогает... Может, кто сталкивался с подобной проблемой??? Даже сложно сказать после чего появилась данная ошибка ибо групповым проведением (закрытием месяца) давно не пользовались...
Ответ:
() () Ещё раз добрый день) Включил технологический журнал и обнаружил вот такие интересные вещи (может в курсе с чем проблема?):
Сделана попытка выполнить операцию на объекте, не являющемся сокетом...
Процесс завершается. Исходящий вызов запрещен...
Не найдено ни одного сервера с размещенным сервисом...
Вопрос: Фоновые задания
Ответ:
Вопрос: Как передать файл в фоновое задание
Платформа 8.3.6.2152
Нужно из УФ передать файл в фоновое задание для последующей обработки.
Делал так:
&НаКлиенте
Процедура Команда1(Команда) ФайлДД = Новый ДвоичныеДанные(ИмяФайла); АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(ФайлДД, УникальныйИдентификатор); ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) КонецПроцедуры &НаСервере Функция ЗапуститьВыгрузкуЗагрузкуНаСервере(АдресХранилищаДляФонового) ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(АдресХранилищаДляФонового); Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода); КонецФункции
В общем модуле:
Процедура МоеФоновое(АдресХранилища) Экспорт
ФайлДД = ПолучитьИзВременногоХранилища(АдресХранилища);
Если
ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда
ЗаписьЖурналаРегистрации
ЗаписьЖурналаРегистрации
("Отладка","Нет ДД");
КонецЕсли
;
КонецПроцедуры
Пробовал так:
ПомещаемыеФайлы = Новый
Массив;
ПомещаемыеФайлы.Добавить(Новый
ОписаниеПередаваемогоФайла(ИмяФайла));
ПомещенныеФайлы = Новый
Массив;
Если
НЕ
ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, Ложь
, УникальныйИдентификатор) Тогда
Возврат
;
КонецЕсли
;
АдресХранилищаДляФонового = ПомещенныеФайлы.Хранение;
Пробовал так:
АдресХранилищаДляФонового = ПоместитьВоВременноеХранилище(Неопределено
, УникальныйИдентификатор);
ПоместитьФайл(АдресХранилищаДляФонового, ИмяФайла, Ложь
);
Из фонового на клиент через временное хранилище нормально передается, а вот с клиента в фоновое - никак почему-то.
Ответ:
В общем все оказалось довольно просто. Получается можно тупо передавать ДвоичныеДанные как параметр к фоновому заданию. Для неквалифицированных любителей цитировать справку и рассказывать что "так и задумано" рабочий код:
&НаКлиенте
Процедура Команда1(Команда)
ЗапуститьВыгрузкуЗагрузкуНаСервере(Новый
ДвоичныеДанные(ИмяФайла))
КонецПроцедуры
&НаСервере
Функция
ЗапуститьВыгрузкуЗагрузкуНаСервере(ДД)
ПараметрыМетода = Новый
Массив;
ПараметрыМетода.Добавить(ДД);
Задание = ФоновыеЗадания.Выполнить("МойОбщийМодуль.МоеФоновое", ПараметрыМетода);
КонецФункции
Процедура
МоеФоновое(ФайлДД) Экспорт
Если
ТипЗнч(ФайлДД) = Тип("ДвоичныеДанные") Тогда
ЗаписьЖурналаРегистрации
("Отладка","Есть ДД");
Иначе
ЗаписьЖурналаРегистрации
("Отладка","Нет ДД");
КонецЕсли
;
КонецПроцедуры
Вопрос: Запуск фонового задания под нужным пользователем
Ответ:
Вопрос: Отладка фонового задания
Фоновое задание выполняется с ошибкой. Решил отладить.
запускаю через внешнюю обработку с одной строкой:
ФоновыеЗадания.Выполнить("МойМодуль.МоеЗадание");
На точку останова в модуле не выходит.
Отладка на сервере разрешена, галка в отладке, автоматическое подключение, фоновые задания - стоит. В чем может быть ещё проблема?
Ответ:
В общих модулях было обращение к функциям требующих клиентского а не серверного выполнения. Пришлось посадить их в скобки #Если Клиент Тогда. Отработало и фоновое.
Вопрос: Ошибка при выполнении обмена
Добрый день Подскажите, куда копать:
выполняю обмен в бухгалтерской базе. Из УТ-шки выгружается порядка трех десятков документов через типовой обмен. Долго думат (около часа) и завершается с сообщением:
аварийно завершился процесс фонового задания Фоновые задания в «1С» могут запускаться автоматически по расписанию (т.е. являться экземплярами регламентных заданий), или разработчик сам может инициировать запуск фонового задания для выполнения произвольного алгоритма (яркий пример формирование отчетов в фоне).
ВАЖНО!!! Для файловых баз, начиная с версии платформы 8.3.3.641, не требуется запуск отдельного сеанса, в котором будут выполняться фоновые задания. Т.е. раньше в файловых базах для запуска фоновых заданий требовалось выполнять метод глобального контекста «ВыполнитьОбработкуЗаданий()» . Подробности по этой ссылке .
Процедура запуска произвольного алгоритма в фоновом задании
Для запуска нашего алгоритма в отдельном фоновом задании, мы будем использовать метод «Выполнить()» менеджера фоновых заданий: Синтаксис: Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)- <ИмяМетода> (обязательный); Тип: Строка
Имя экспортируемой процедуры или функции неглобального общего модуля, который может быть выполнен на сервере, в форме ИмяМодуля.ИмяМетода. - <Параметры> (необязательный); Тип: Массив
Массив параметров, передаваемых в метод. Количество и типы параметров должны соответствовать параметрам метода. (подробнее в Синтакс-помощнике) - <Ключ> (необязательный); Тип: Строка
Если ключ задан, то он должен быть уникальным среди ключей активных фоновых заданий, имеющих такое же имя метода, что и у данного фонового задания. - <Наименование> (необязательный); Тип: Строка.
Описание задания.
Процедура выполнения фонового задания
В нашем случае мы будем использовать экспортную процедуру расположенную в общем модуле «ОбщийМодульСервер» (думаю излишне пояснять что модуль должен быть серверным) Процедура ЗаписатьИнформациюОТоварахВФоне(ПараметрФоновогоЗадания) Экспорт ЗапросДанных = Новый Запрос("ВЫБРАТЬ | Товары.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Товары"); Выборка = ЗапросДанных.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл МЗ = РегистрыСведений.ДанныеОТоварах.СоздатьМенеджерЗаписи(); МЗ.Период = ТекущаяДата(); МЗ.Номенклатура = Выборка.Номенклатура; МЗ.Информация = ПараметрФоновогоЗадания; МЗ.Записать(); КонецЦикла; КонецПроцедуры В целях демонстрации работы фонового задания, мы будем формировать записи в нашем регистре сведений, для каждой номенклатуры, при этом параметр будет передаваться из формы в которой происходит запуск фонового задания.Команда запуска фонового задания
Параметр который будем передавать в процедуру выполнения, будем брать из реквизита управляемой формы (реквизит с типом «Строка»):Код модуля управляемой формы будет выглядеть следующим образом: &НаКлиенте Процедура ЗапускФоновогоЗадания(Команда) ЗапускФоновогоЗаданияНаСервере(); КонецПроцедуры &НаСервере Процедура ЗапускФоновогоЗаданияНаСервере() // Формируем массив с параметрами ПараметрыЗадания = Новый Массив; ПараметрыЗадания.Добавить(ПараметрЗадания); // Запускаем фоновое выполнение алгоритма ФоновыеЗадания.Выполнить(// Наш экспортный метод в общем модуле "ОбщийМодульСервер.ЗаписатьИнформациюОТоварахВФоне", // Передаем массив с параметрами ПараметрыЗадания, // Указываем ключ задания Новый УникальныйИдентификатор, // Указываем наименование фонового задания "Наше фоновое задание"); КонецПроцедуры
Результат выполнения
В результате выполнения фонового задания, будут сформированы записи в регистре сведений (что нам и требовалось).Механизм заданий - один из инструментов администрирования 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С:Профессионал по платформе. Завершившиеся фоновые задания:
- сохраняется в информационной базе
- являются сеансовыми объектами, хранятся некоторое время (в информационной базе не сохраняются)
- не хранятся ни в каком виде