1с где хранится история фоновых заданий

Обновлено: 07.07.2024

Дата публикации 07.10.2019

Использован релиз 3.0.73

Регламентные задания – это ряд действий, которые могут выполняться автоматически в фоновом режиме по определенному расписанию. Например, ежедневная загрузка курсов валют, отложенное проведение документов и т.д. При работе через сервис "1С:Фреш" регламентные и фоновые задания предопределены, их настройка пользователем не предусмотрена.

Для информационной базы, установленной на компьютер (локально или на сервере), настройка регламентных и фоновых заданий доступна только для пользователей с правами "Администратор".

  1. Раздел: Администрирование – Обслуживание.
  2. Раскройте блок "Регламентные операции" и перейдите по ссылке "Регламентные и фоновые задания" (рис. 1).
  3. В открывшейся форме "Регламентные и фоновые задания" на закладке "Регламентные задания" представлен список регламентных заданий. В списке регламентных заданий:
    • в первой колонке установленный флажок означает, что регламентное задание включено и выполняется в соответствии с заданным расписанием;
    • во второй колонке "Наименование" указывается полное наименование регламентного задания;
    • в третьей колонке "Состояние" отображается информация о выполнении регламентного задания;
    • в четвертной колонке "Дата окончания" отображаются дата и время завершения регламентного задания;
    • если в колонках "Состояние" и "Дата окончания" указано "не определено", а флажок включен, то следует проверить расписание регламентного задания (возможно оно некорректно, поэтому регламентное задание не может выполняться) (рис. 2).



  1. Для включения или отключения регламентного задания выделите его в списке, правой кнопкой мыши откройте список команд и выберите нужное действие (рис. 3).


  1. Настроить расписание выполнения регламентного задания можно либо по кнопке "Настроить расписание", либо в форме регламентного задания по ссылке "Расписание". Чтобы открыть форму регламентного задания, выделите его в списке и двойным щелчком мыши откройте ее (рис. 4).


Смотрите также

Обработка "История выполнения фоновых заданий в виде диаграмм" написана замечательным программистом из Белоруссии Виталием Сертаковым (связаться с ним) и публикуется с его разрешения.

Описание

Отчет предназначен для получения из журнала регистрации данных об истории выполнения фоновых заданий и отображения их в виде диаграмм.

Реализован вывод на следующие диаграммы:

  • история выполнения заданий (диаграмма Ганта);
  • топ самых длительных заданий (диаграмма Ганта);
  • топ самых длительных заданий по совокупному времени выполнения (диаграмма Ганта);
  • количество одновременно выполнявшихся заданий (график/график по шагам/гистограмма);
  • доли периодов с разным количеством одновременно выполнявшихся заданий (круговая диаграмма);
  • количество запусков, завершившихся с ошибкой, при двойном клике выводится список ошибок (горизонтальная гистограмма);
  • доли количества состояний фоновых заданий при завершении в общем
  • количестве запусков (горизонтальная гистограмма, горизонтальная гистограмма с накоплением, горизонтальная гистограмма нормированнная).

40

43

44

45

46

Вам нужно скачать её на рабочий стол.

Далее открыть её через меню Файл->Открыть (подробнее здесь Я скачал обработку, как мне её открыть в 1C?).

Благодарность

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

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.


Регламентные задания позволяют выполнять определенные действия по расписанию. Для выполнения используются фоновые задания.

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

Для примера создадим простое регламентное задание и установим у него флаг Предопределенное, а также Использование. Использование означает, что регламентное задание будет выполняться согласно его расписанию.

Регламентные задания

В свойстве Наименование можно указать произвольное наименование регламентного задания. Свойство Ключ аналогично такому же свойству фоновых заданий. Нельзя запустить несколько фоновых заданий с одним ключом и связанных с одним регламентным заданием.

В свойстве Имя метода нужно выбрать не глобальный серверный общий модуль, в котором будет создана процедура для выполнения. Можно выбрать уже существующую процедуру или функцию из общего модуля. Если выбрана функция, то результат выполнения будет проигнорирован.

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

Расписание регламентных заданий

Для настройки расписания нужно нажать на гиперссылку Открыть рядом со свойством Расписание. Будет открыто окно настройки расписания:

Расписание регламентных заданий

Для примера настроим чтобы регламентное задание выполнялось каждые 5 минут. Для этого на закладке Общее укажем, что нужно повторять задание каждый день:

Расписание регламентных заданий

Расписание регламентных заданий

Нажмем ОК, сохраним конфигурацию базы данных. Теперь каждые 5 минут будет запускаться фоновое задание и выполнять код из процедуры, которая указана в свойстве Имя метода.

Расписание тоже сохраняется в таблице регламентных заданий. Если сейчас изменить расписание в конфигураторе и сохранить конфигурацию базы данных, то все равно будет использоваться старое расписание. Чтобы применилось новое расписание, его нужно установить в пользовательском режиме. Или снять флаг Предопределенное и сохранить конфигурацию базы данных. В этот момент запись об этом регламентном задании будет удалена из таблицы. А потом настроить в конфигураторе новое расписание и снова поставить флаг Предопределенное. Регламентное задание будет записано в таблицу с новым расписанием.

Для программного открытия окна настройки расписания регламентного задания в пользовательском режиме можно воспользоваться следующим кодом:

ДиалогРасп = Новый ДиалогРасписанияРегламентногоЗадания ( Расп ) ; ОбратныйВызов = Новый ОписаниеОповещения ( "ЗаписатьРасписание" , ЭтотОбъект ) ; РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ; Процедура ЗаписатьРасписание ( Расп , ДопПараметры ) Экспорт РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ;

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

Расписание регламентных заданий

Расписание можно создать программно:

РеглЗад = РегламентныеЗадания . НайтиПредопределенное ( "РегламентноеЗадание1" ) ;

Теперь регламентное задание будет выполняться каждую минуту.

Рассмотрим некоторые настройки расписания:

Те же самые примеры, но программно:

НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; НовоеРасп . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 1 , 0 , 0 ) ; Расп 1 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 13 , 0 , 0 ) ; Расп 2 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 18 , 0 , 0 ) ; //каждый день, в 13:00 и в 18:00, но только с 1 по 10 мая 2021 года Расп 1 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 13 , 0 , 0 ) ; Расп 2 . ВремяНачала = Новый Дата ( 1 , 1 , 1 , 18 , 0 , 0 ) ;

Планировщик регламентных заданий

В клиент-серверном варианте регламентные задания выполняются планировщиком заданий, который находится в менеджере кластера. Планировщик заданий подбирает наименее загруженный рабочий процесс сервера 1С и запускает на нем фоновое задание. После выполнения рабочий процесс уведомляет планировщик о результате выполнения.

В файловом варианте регламентные задания выполняются на клиентском приложении. Причем только на одном. Это будет самое первое запущенное клиентское приложение. Если его закрыть, то регламентные задания начнут выполняться на другом клиентском приложении. Если больше нет запущенных клиентских приложений, то регламентные задания не будут выполняться. Если расписание регламентного задания было настроено на час ночи, а в этом время не был запущен ни один сеанс, то такое задание не будет выполнено. Обработка регламентных заданий выполняется один раз в 60 секунд. Если при запуске регламентного задания на этом клиентском сеансе уже выполняются какие-нибудь фоновые задания, то регламентное задание будет выполнено только после завершения всех текущих фоновых заданий.

До версии платформы 8.3.3.641 в файловом варианте не было автоматического выполнения регламентных заданий. Нужно было программно вызывать метод ВыполнитьОбработкуЗаданий. Обычно для этого запускался отдельный сеанс и в нем через обработчик ожидания вызывался данный метод.

Программная работа с регламентными заданиями

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

В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.


Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.

Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.

Для того чтобы запустить фоновые задачи выполняется следующий код:

Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.

ФоновыеЗадания.ОжидатьЗавершения(МассивЗапущенныхЗаданий);

После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.

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

Читайте также: