Войти
Все секреты компьютера для новичка и профессионала
  • Черный кайман: внешний вид и образ жизни Большой черный кайман
  • Акции World of Tanks: какие бывают и как ими правильно пользоваться
  • Jove (Джов, Константин Ладанин) - видеомейкер World of Tanks, гайдодел и вододел, стример Новинки от джова
  • Особенности работы с полем Представление и функцией Представление() языка запросов Кнопка “Запрос” в конструкторе запросов
  • Как сделать папки на флешке не скрытыми (видимыми) после вируса?
  • Как сделать реальный объем флешки с китая
  • Как завершить работу программы планировщика заданий 1с. Автоматическое выключение компьютера. Концепция асинхронного программирования

    Как завершить работу программы планировщика заданий 1с. Автоматическое выключение компьютера. Концепция асинхронного программирования

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

    Развернутую инструкцию на примере Вы найдете далее.

    Что такое регламентные и фоновые задания в 1С

    • Регламентные задания — это специальный механизм 1С предприятия 8.3, предназначенный для выполнения определенного действия по заданному расписанию.
    • Фоновое задание — объекты, порождаемые регламентным заданием, которые непосредственно выполняет заложенное действие без участия пользователя или программиста 1С 8.2.

    Механизм регламентных и фоновых заданий работает в клиент-серверном режиме работы (SQL), благодаря функционалу СУБД. Если у вас файловая БД, то задание тоже можно настроить, но немного по другому принципу.

    Настройка фоновых заданий в клиент-серверном режиме работы 1С

    Для начала создадим новый объект метаданных — регламентное задание. Я назову свое задание «ЗагрузкаКурсовВалют». Рассмотрим палитру свойств данного объекта конфигурации:

    Получите 267 видеоуроков по 1С бесплатно:

    • Имя метода — путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые , а создать свой. Не забудьте, что фоновые задания исполняются на сервере!
    • Использование — признак использования регламентного задания.
    • Предопределенное — указывает, является ли регламентное задание предопределенным. Если хотите чтобы регламентное задание заработало сразу после помещения в БД, укажите этот признак. В противном случае вам необходимо будет использовать обработку «Консоль заданий» или вызывать запуск задания программно.
    • Количество повторов при аварийном завершении задания — сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.
    • Интервал повтора при аварийном завершении задания — с какой периодичностью будет выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

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

    Тут настраивается интервал запуска процедуры, указанного в поле «Имя метода». Допустим я настроил

    Внимание! Не забудьте отключить блокировку выполнения регламентных и фоновых заданий на уровне СУБД!

    Сделать это можно в утилите администрирования клиент-серверного варианта либо при создания новой БД:

    Настройка регламентных заданий в файловом режиме работы 1С

    В файловом режиме настройка таких заданий несколько труднее. Для такого задания должна быть запущена отдельная сессия программы 1С. Зачастую это решается заведением «технического» пользователя, чей сеанс всегда запущен.

    В файловом режиме инициализация регламентного задания происходит при запуске метода «ВыполнитьОбработкуЗаданий()».

    Для определенного пользователя можно настроить запуск этого метод, используя другой метод —

    ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>).

    • Имя процедуры — имя процедуры, подключаемой в качестве обработчика ожидания. Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля. Процедура должна располагаться на клиенте .
    • Интервал — период между выполнениями операций в секундах.
    • Однократно — как выполнять задание, один раз или нет.

    ПодключитьОбработчикОжидания, 3600 ) ;

    Двухминутное видео, в котором показано, как настроить регламентное задание в конфигураторе 1С:

    Наверное, ни одна серьезная конфигурация на 1С 8.3 или 8.2 не обойдется без использования регламентных и фоновых заданий. Они очень удобны, так как по четко заданному расписанию будут выполняться без вмешательства пользователя и программиста.

    Например, вам нужно раз в сутки вам нужно совершать обмен данными с другой программой. Используя регламентные и фоновые задания, 1С сможет производить данные действия самостоятельно, например, в нерабочее время. Такой способ никак не повлияет на работу пользователей и поможет сэкономить время.

    Для начала разберемся, что же они обозначают и в чем их отличие:

    • Регламентное задание позволяет запускать на выполнение какие-либо конкретные действия по заранее настроенному расписанию.
    • Фоновое задание – это объект, в котором содержатся выполняемые действия.

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

    Откройте конфигурацию и добавьте регламентное задание.

    Настройка свойств

    Рассмотрим самые важные параметры, которые необходимо заполнить в его свойствах.

    • В поле «Имя метода » выбирается та процедура какого-то определенного общего модуля, которая будет непосредственно выполняться. В ней будут указаны все действия по выгрузке цен на наш сайт. Обратите внимания, что выполнение будет происходить на сервере. Это логично, ведь регламентные операции выполняются без участия пользователя.
    • Регламентное задание можно отключать или включать по необходимости. Не нужно каждый раз править его расписание. Для этого в палитре свойств установите или снимите флаг «Использование ».
    • Еще одной немаловажной является настройка, будет ли являться данное регламентное задание предопределенным , или нет. Предопределенные регламентные задания запускаются автоматически. Если данный признак не установлен, то вам будет нужно запускать их программно, либо воспользоваться обработкой «Консоль заданий» с ИТС.
    • Так же вы можете указать количество повторов и интервал между ними при аварийном завершении. Под аварийным завершением подразумеваются те ситуации, когда задания не отработали по причине возникновения ошибки.

    Настройка расписания

    Завершающим шагом мы настроим расписание нашей выгрузки на сайт по соответствующей гиперссылке в палитре свойств.

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

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

    Запустите стандартную утилиту «Администрирование серверов 1С Предприятия» и откройте свойства той информационной базы, где вы создали регламентное задание (для клиент-серверных версий 1С).

    В открывшемся окне (после ввода логина и пароля для доступа к ИБ) проверьте, чтобы не был установлен флаг на пункте «Блокировка регламентных заданий включена». Если вы столкнулись ситуацией, когда задание не отрабатывает, первым делом проверяйте эту настройку.

    Таким же образом можно полностью отключить регламентные задания в 1С 8.3. Для отключения конкретных фоновых заданий можно воспользоваться встроенной в последние релизы обработкой «Консоль фоновых заданий».

    Фоновые и регламентные задания в файловом режиме

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

    Активация регламентных заданий в данном случае производится при использовании метода «ВыполнитьОбработкуЗаданий()».

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

    В качестве имени процедуры необходимо указать имя клиентской процедуры, которая должна будет выполниться. Интервал показывает, через сколько секунд будет произведено выполнение. Параметр «Однократно» не обязателен к заполнению. Он отражает, будет ли выполнена данная процедура однократно, либо несколько раз.

    Отслеживание ошибок в фоновых заданиях

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

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

    1 Механизм заданий
    2 Фоновые задания
    3 Регламентные задания
    4 Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах
    5 Создание метаданных регламентного задания
    6 Консоль заданий
    7 Работа с регламентными заданиями
    7.1 Объекты заданий
    7.2 Получение списка заданий
    7.3 Создание
    7.4 Удаление
    7.5 Получение объекта задания

    Механизм заданий

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

    Механизм заданий решает следующие задачи:

    • Возможность определения регламентных процедур на этапе конфигурирования системы;
    • Выполнение заданных действий по расписанию;
    • Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
    • Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
    • Получение списка текущих заданий;
    • Возможность ожидания завершения одного или нескольких заданий;
    • Управление заданиями (возможность отмены, блокировка выполнения и др.).

    Механизм заданий состоит из следующих компонентов:

    • Метаданных регламентных заданий;
    • Регламентных заданий;
    • Фоновых заданий;
    • Планировщика заданий.

    Фоновые задания - предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.

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

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

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

    Фоновые задания

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

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

    Фоновое задание может иметь ключ – любое прикладное значение. Ключ вводит ограничение на запуск фоновых заданий – в единицу времени может выполняться только одно фоновое задание с определенным значением ключа и заданным именем метода фонового задания (имя метода состоит из имени модуля и имени процедуры или функции). Ключ позволяет группировать фоновые задания, имеющие одинаковые методы, по определенному прикладному признаку с тем, чтобы в рамках одной группы выполнялось не более одного фонового задания.

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

    Фоновое задание является чисто сеансовым объектом, но не принадлежит какому-либо пользовательскому сеансу. Для каждого задания создается специальный системный сеанс, выполняющийся от имени того пользователя, который выполнил вызов. Фоновые задания не имеют сохраняемого состояния.

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

    Завершившиеся успешно или аварийно фоновые задания хранятся в течение суток, а потом удаляются. Если количество выполнившихся фоновых заданий превышает 1000, то наиболее старые фоновые задания также удаляются.

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

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

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

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

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

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

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

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

    Расписание регламентного задания определяет, в какие моменты времени регламентное задание должно быть запущено. Расписание позволяет задавать: дату и время начала и окончания выполнения задания, период выполнения, дни недели и месяцы, по которым нужно выполнять регламентное задание и др. (см. описание встроенного языка).

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

    Каждый час, только один день

    ПериодПовтораДней = 0, ПериодПовтораВТечениеДня = 3600

    Каждый день один раз в день

    ПериодПовтораДней = 1, ПериодПовтораВТечениеДня = 0

    Один день, один раз

    ПериодПовтораДней = 0

    Через день один раз в день

    ПериодПовтораДней = 2

    Каждый час с 01.00 до 07.00 каждый день

    ПериодПовтораДней = 1
    ПериодПовтораВТечениеДня = 3600
    ВремяНачала = 01.00
    ВремяКонца = 07.00

    Каждую субботу и воскресенье в 09.00

    ПериодПовтораДней = 1
    ДниНедели = 6, 7
    ВремяНачала = 09.00

    Каждый день одну неделю, неделя пропуска

    ПериодПовтораДней = 1
    ПериодНедель = 2

    В 01.00 один раз

    ВремяНачала = 01.00

    Последнее число каждого месяца в 9:00.

    ПериодПовтораДней = 1
    ДеньВМесяце = -1
    ВремяНачала = 09.00

    Пятое число каждого месяца в 9:00

    ПериодПовтораДней = 1
    ДеньВМесяце = 5
    ВремяНачала = 09.00

    Вторая среда каждого месяца в 9:00

    ПериодПовтораДней = 1
    ДеньНеделиВМесяце = 2
    ДниНедели = 3
    ВремяНачала = 09.00

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

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

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

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

    Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах

    Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

    • В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

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

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

    В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:

    • На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
    • На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
    • Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
    • В некоторых других случаях (например, при обновлении конфигурации базы данных).

    Создание метаданных регламентного задания

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

    Для создания объекта метаданных регламентного задания в дереве конфигурации в ветке «Общие» для ветки «Регламентные задания» выполните команду «Добавить» и в палитре свойств заполните следующие свойства регламентного задания:

    Имя метода - указывается имя метода регламентного задания.

    Ключ - указывается произвольное строковое значение, которое будет использовано в качестве ключа регламентного задания.

    Расписание - указывается расписание регламентного задания. Для формирования расписания щелкните ссылку «Открыть» и в открывшейся форме расписания установите нужные значения.

    На закладке «Общее» указываются дата начала и завершения задания и режим повтора.

    На закладке «Дневное» указывается дневное расписание задания.

    Укажите расписание:

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

    Допускается указание произвольного сочетания условий.

    На закладке «Недельное» указывается недельное расписание задания.

    Установите флажки по тем дням недели, по которым задание будет выполняться. Если требуется повторять задание, укажите интервал повтора в неделях. Например, задание выполняется через 2 недели, значение повтора – 2.

    На закладке «Месячное» указывается месячное расписание задания.

    Установите флажки по тем месяцам, в которых задание будет выполняться. При необходимости можно указать конкретный день (месяца или недели) выполнения с начала месяца / недели или конца.

    Использование - если установлено, то задание будет выполняться согласно расписанию.

    Предопределенное - если установлено, то задание является предопределенным заданием.

    Количество повторов при аварийном завершении - указывает количество повторов при аварийном завершении.

    Интервал повтора при аварийном завершении - указывает интервал повтора при аварийном завершении. Примеры

    Создание фонового задания «Обновление индекса полнотекстового поиска»:

    ФоновыеЗадания.Выполнить("ОбновлениеИндексаПолнотекстовогоПоиска");

    Создание регламентного задания «Восстановление последовательностей»:

    Расписание = Новый РасписаниеРегламентногоЗадания;
    Расписание.ПериодПовтораДней = 1;
    Расписание.ПериодПовтораВТечениеДня = 0;

    Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВосстановлениеПоследовательностей");
    Задание.Расписание = Расписание;
    Задание.Записать();

    Консоль заданий

    Обработка с ИТС, осуществляет управление регламентными заданиями: КонсольЗаданий.epf

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

    Объекты заданий

    Объекты заданий не являются ссылочными, но хранятся в базе данных в каком-то специальном хранилище.

    Если в метаданных включен флаг "Предопределенное", то такой объект создается автоматически при запуске 1С:Предприятия и всегда существует ровно в одном экземпляре. Такой объект нельзя удалить.

    Если флаг "Предопределенное" не установлен, то объекты такого задания создаются и удаляются программно, с указанием расписания и параметров.

    Получение списка заданий

    Список заданий можно получить методом ПолучитьРегламентныеЗадания глобального менеджера заданий РегламентныеЗадания

    МенеджерРегламентныхЗаданий (ScheduledJobsManager)

    ПолучитьРегламентныеЗадания (GetScheduledJobs)

    Синтаксис:

    ПолучитьРегламентныеЗадания(<Отбор>)

    Параметры:

    <Отбор> (необязательный)

    Тип: Структура. Структура, задающая отбор. Значениями структуры могут быть: УникальныйИдентификатор, Ключ, Метаданные, Предопределенное, Использование, Наименование. Если отбор не задан, получаются все регламентные задания.

    Если выполняется отбор по метаданным, то в качестве значения Метаданные можно указать либо объект метаданных регламентного задания, либо его имя.

    Возвращаемое значение:

    Тип: Массив.

    Описание:

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

    Доступность:

    Для Каждого Регламентное из Регламентные Цикл
    НоваяСтрока = СписокРегламентныхЗаданий.Добавить();
    НоваяСтрока.Метаданные = Регламентное.Метаданные.Представление();
    НоваяСтрока.Наименование = Регламентное.Наименование;
    НоваяСтрока.Ключ = Регламентное.Ключ;
    НоваяСтрока.Расписание = Регламентное.Расписание;
    НоваяСтрока.Пользователь = Регламентное.ИмяПользователя;
    НоваяСтрока.Предопределенное = Регламентное.Предопределенное;
    НоваяСтрока.Использование = Регламентное.Использование;
    НоваяСтрока.Идентификатор = Регламентное.УникальныйИдентификатор;

    ПоследнееЗадание = Регламентное.ПоследнееЗадание;
    Если ПоследнееЗадание Неопределено Тогда
    НоваяСтрока.Выполнялось = ПоследнееЗадание.Начало;
    НоваяСтрока.Состояние = ПоследнееЗадание.Состояние;
    КонецЕсли;
    КонецЦикла;

    Создание

    Создается методом СоздатьРегламентноеЗадание менеджера регламентных заданий:

    РегламентноеЗадание = РегламентныеЗадания.СоздатьРегламентноеЗадание(МетаданныеВыбор);

    РегламентноеЗадание.Наименование = Наименование;
    РегламентноеЗадание.Ключ = Ключ;
    РегламентноеЗадание.Использование = Использование;
    РегламентноеЗадание.ИмяПользователя = ПользователиВыбор;
    РегламентноеЗадание.КоличествоПовторовПриАварийномЗавершении = КоличествоПовторовПриАварийномЗавершении;
    РегламентноеЗадание.ИнтервалПовтораПриАварийномЗавершении = ИнтервалПовтораПриАварийномЗавершении;
    РегламентноеЗадание.Расписание = Расписание;
    РегламентноеЗадание.Записать();

    ОбъектЗадания = РегламентныеЗадания.СоздатьРегламентноеЗадание("ВыполнениеОбмена");

    ОбъектЗадания.Наименование = Наименование;
    ОбъектЗадания.Использование = Истина;

    Объект задания имеет поле "Параметры", в котором задаются параметры метода:

    РегламентноеЗадание (ScheduledJob)

    Параметры (Parameters)

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

    Чтение и запись.

    Описание:

    Тип: Массив. Массив параметров регламентного задания. Количество и состав параметров должен соответствовать параметрам метода регламентного задания.

    Доступность:

    Сервер, толстый клиент, внешнее соединение.

    Примечание:

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

    Удаление

    Удаляется методом Удалить() объекта задания:

    РегламентноеЗадание.Удалить();

    Получение объекта задания

    • списком через метод ПолучитьРегламентныеЗадания:
      Регламентные = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор);
    • через метод НайтиПоУникальномуИдентификатору менеджера заданий:
      Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(УИД);

    [необходимо зарегистрироваться для просмотра ссылки]

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

    Недавно я разместил статью: пришло время это автоматизировать:

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

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

    Механизм заданий решает следующие задачи:

    • Возможность определения регламентных процедур на этапе конфигурирования системы;
    • Выполнение заданных действий по расписанию;
    • Выполнение вызова заданной процедуры или функции асинхронно, т.е. без ожидания ее завершения;
    • Отслеживание хода выполнения определенного задания и получение его статуса завершения (значения, указывающего успешность или не успешность его выполнения);
    • Получение списка текущих заданий;
    • Возможность ожидания завершения одного или нескольких заданий;
    • Управление заданиями (возможность отмены, блокировка выполнения и др.).

    Механизм заданий состоит из следующих компонентов:

    • Метаданных регламентных заданий;
    • Регламентных заданий;
    • Фоновых заданий;
    • Планировщика заданий.

    Фоновые задания & предназначены для выполнения прикладных задач асинхронно. Фоновые задания реализуются средствами встроенного языка.

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

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

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

    С описанием, думаю, хватит - приступим к реализации:

    Создание регламентного задания

    Имя метода – путь к процедуре, которая будет выполняться в фоновом задании по заданному расписанию. Процедура должна находиться в общем модуле. Рекомендуется не использовать типовые общие модули, а создать свой. Не забудьте, что фоновые задания исполняются на сервере!

    Использование – признак использования регламентного задания.

    Предопределенное – указывает, является ли регламентное задание предопределенным.

    Если хотите что бы регламентное задание заработало сразу после помещения в БД, укажите признак Предопределенное . В противном случае вам необходимо будет использовать обработку “Консоль заданий” или вызывать запуск задания программно.

    Количество повторов при аварийном завершении задания – сколько раз выполнен перезапуск фонового задания, если оно было выполнено с ошибкой.

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

    Настройка расписания

    Расписание выполнения задания:

    Каждый час, только один день ПериодПовтораДней = 0, ПериодПовтораВТечениеДня = 3600
    Каждый день один раз в день ПериодПовтораДней = 1, ПериодПовтораВТечениеДня = 0
    Один день, один раз ПериодПовтораДней = 0
    Через день один раз в день ПериодПовтораДней = 2
    Каждый час с 01.00 до 07.00 каждый день ПериодПовтораДней = 1ПериодПовтораВТечениеДня = 3600ВремяНачала = 01.00

    ВремяКонца = 07.00

    Каждую субботу и воскресенье в 09.00 ПериодПовтораДней = 1ДниНедели = 6, 7ВремяНачала = 09.00
    Каждый день одну неделю, неделя пропуска ПериодПовтораДней = 1ПериодНедель = 2
    В 01.00 один раз ВремяНачала = 01.00
    Последнее число каждого месяца в 9:00. ПериодПовтораДней = 1ДеньВМесяце = -1ВремяНачала = 09.00
    Пятое число каждого месяца в 9:00 ПериодПовтораДней = 1ДеньВМесяце = 5ВремяНачала = 09.00
    Вторая среда каждого месяца в 9:00 ПериодПовтораДней = 1ДеньНеделиВМесяце = 2ДниНедели = 3

    ВремяНачала = 09.00

    Особенности выполнения фоновых заданий файловом и клиент-серверном вариантах

    Механизмы выполнения фоновых заданий в файловом и клиент-серверном вариантах различаются.

    В файловом варианте необходимо создать выделенный клиентский процесс, который будет заниматься выполнением фоновых заданий. Для этого в клиентском процессе должна периодически вызываться функция глобального контекста ВыполнитьОбработкуЗаданий. Только один клиентский процесс на информационную базу должен выполнять обработку фоновых заданий (и, соответственно, вызывать данную функцию). Если клиентского процесса для обработки фоновых заданий не создано, то при программном доступе к механизму заданий будет выдана ошибка «Менеджер заданий не активен». Не рекомендуется клиентский процесс, выполняющий обработку фоновых заданий, использовать для других функций.

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

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

    В клиент-серверном варианте имеется возможность блокирования выполнения регламентных заданий. Блокирование выполнения регламентных заданий происходит в следующих случаях:

    • На информационную базу установлена явная блокировка регламентных заданий. Блокировка может быть установлена через консоль кластера;
    • На информационную базу установлена блокировка соединения. Блокировка может быть установлена через консоль кластера;
    • Из встроенного языка вызван метод УстановитьМонопольныйРежим() с параметром Истина;
    • В некоторых других случаях (например, при обновлении конфигурации базы данных).

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

    Не так давно вышла новая версия 8.3.6 программы «1С:Предприятие» .

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

    Юзабилити интерфейса Такси в версии 8.3.6

    Команда «Показать в списке».

    В старом, неуправляемом интерфейсе, существовала команда «Найти в списке». В управляемом интерфейсе эту команду не реализовывали. Но проанализировав накопленный опыт и отзывы, было решено вернуть эту команду в интерфейс. Потому что пользователи прошлых версий «1С:Предприятия» считали её нужной и удобной. Потому что наличие такой команды, безусловно, повышает удобство пользования программой.

    Теперь она называется «Показать в списке» :

    Эта команда появится в форме записи регистра сведений и в формах объектов: справочников, документов, видов характеристик, бизнес-процессов, задач, видов расчетов, счетов, узлов плана обмена, таблиц внешнего источника и таблиц измерения куба внешнего источника данных.

    Для документов, входящих в журналы, это будет не одна команда, а подменю. Оно позволит перейти как к списку документов, так и к любому из журналов, в которые этот документ входит.

    Отображение картинки и текста в панели разделов.

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

    картинка слева, текст — справа

    или текст под картинкой.

    Командная панель графической схемы.

    В интерфейс Такси возвращена командная панель графической схемы. Для использования этой возможности никаких особенных умений не требуется. Просто у командной панели формы появился ещё один источник команд — графическая схема. Размещаете в форме графическую схему. Добавляете в форму группу — командная панель. Указываете для неё источник команд — графическая схема.

    Интерфейс Такси в версии 8.3.6.

    Поиск в меню функций.

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

    Внешний вид меню функций немного изменился. В правом верхнем углу появилось поле поиска и пиктограмма настроек. Под пиктограмму настроек были убраны команды настройки панелей «Настройка навигации» и «Настройка действий».

    А чтобы найти какую-нибудь команду, теперь достаточно просто начать набирать на клавиатуре искомые слова. Курсор автоматически перейдет в поле поиска, и в нём будут отображаться набираемые символы. Поиск выполняется одновременно по нескольким фрагментам строк. При наборе с клавиатуры фрагменты строк нужно отделять друг от друга пробелами.

    Например, если вы хотите найти документы поступления, можно набрать «док», а затем через пробел «пост»:

    Чтобы было проще ориентироваться в результатах поиска, платформа:

    • Подсвечивает найденные фрагменты строк (в том числе и в названиях подсистем и групп команд);
    • Отображает результаты в иерархии разделов и подсистем.

    Если все результаты не помещаются в меню функций, то появляется полоса вертикальной прокрутки, и меню можно прокрутить мышью.

    При поиске можно пользоваться только клавиатурой. Это удобно. Очистить поле поиска можно клавишей Esc. А вызвать само меню функций теперь можно клавишей F10.

    Поиск выполняется на сервере. В момент выполнения поиска вместо пиктограммы лупы в левом верхнем углу отображается анимированная пиктограмма «круг».

    Работа с нестандартным разрешением (DPI) экрана.

    Мелкий шрифт и слабое зрение — это давняя проблема взаимодействия человека и компьютера. Решать её пытались в разное время, разные люди, разными способами. Программисты увеличивали размер шрифта в своих приложениях. Пользователи уменьшали размеры экрана, увеличивали разрешение (dpi) экрана. Разработчики Windows реализовывали масштабирование интерфейса. Но все эти способы так и не давали пользователю простого и удобного способа настроить приложение под свои потребности.

    Проанализировав эти проблемы и отзывы, «1С:Предприятие» было переведено в режим dpi-aware. То есть теперь «1С:Предприятие» самостоятельно выполняет масштабирование.

    Можно заметить, что исчезла размытость текстов. Элементы формы стали масштабироваться и отображаться так, как и должны (в старом варианте подвал табличной части оказывался «под» экраном). Используются корректные внутренние отступы, размещение и размеры элементов панелей (исчезла прокрутка панели разделов).

    Планировщик.

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

    По этим причинам в платформе версии 8.3.6 был реализован новый инструмент — Планировщик . Он предназначен для того, чтобы автоматизировать планирование задач, событий, встреч, составление календарей, расписаний и тому подобных задач.

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

    Если все элементы, которые нужно отобразить, не помещаются в одну ячейку, вместо них Планировщик выводит надпись «+ Ещё» и количество элементов, которые скрыты. Нажав на эту надпись можно увидеть список всех скрытых элементов и открыть любой из них:

    По желанию в планировщике можно включить или выключить отображение текущего времени.

    Элементы планировщика могут отображать время начала и окончания, только время начала или не отображать время вообще.

    Можно раскрасить интервалы фона чтобы, например, выделить другим цветом нерабочие часы или выходные дни.

    Добавление данных в планировщик осуществляется простым щелчком мыши. При этом открывается окно быстрого редактирования элемента планировщика:

    В этом окне вы можете задать текст элемента (события). Если нужно изменить другие свойства элемента, по кнопке « Редактировать» в этом окне открывается стандартная форма для редактирования элемента планировщика:

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

    Редактирование существующих элементов вы можете выполнять как через эти формы, так и перетаскиванием элементов и изменением их границ с помощью мыши:

    Планировщик поддерживает групповые операции редактирования. То есть вы можете выделить сразу несколько элементов и переместить, скопировать, изменить или удалить их:

    Планировщик обеспечивает перетаскивание не только в пределах «себя самого», но и в/из других элементов формы. Эта возможность может быть полезна, например, для того, чтобы из общего списка дел, показанного в форме в виде таблицы, можно было перетащить в планировщик отдельные события.

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

    При необходимости можно изменить не только отдельное из повторяющихся событий, но и все события одновременно. Для этого в форме редактирования нужно установить флажок « Применить редактирование ко всем повторам» :