задание с таким значением ключа уже выполняется
Задание с таким значением ключа уже выполняется
Область применения: управляемое приложение, обычное приложение.
1. В общем случае, регламентные задания следует использовать, когда необходимо выполнить определенные периодические или однократные действия в соответствии с расписанием.
2. При этом если регламентные задания не требуется добавлять или удалять в зависимости от действий пользователя или логики конфигурации, следует использовать предопределенные регламентные задания. Такие задания автоматически создаются в информационной базе с тем расписанием и состоянием, которое было задано разработчиком в Конфигураторе. Примеры предопределенных регламентных заданий:
3.1. Если выполнение регламентного задания зависит от включенных одной или нескольких функциональных опций (ФО), то необходимо программно управлять признаком предопределенного регламентного задания Использование в зависимости от установленных ФО. Иначе регламентное задание будет приводить к запуску сеанса, занимая вычислительные ресурсы сервера 1С:Предприятие.
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS;
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПочтовыйКлиент;
Настройка.ДоступноВМоделиСервиса = Ложь;
После чего в состав определяемого типа МестоХраненияФункциональныхОпций необходимо добавить константы, соответствующие функциональным опциям, используемым для управления регламентными заданиями.
Для конфигураций без БСП следует управлять использованием регламентного задания, разместив, например, в модуле менеджера значения константы ИспользоватьПочтовыйКлиент следующий код:
Если Задание.Использование <> Значение Тогда
Задание.Использование = Значение;
Задание.Записать();
КонецЕсли;
3.2. Дополнительно следует обезопасить выполнение регламентного задания, включенного через консоль или другим способом, минуя включение ФО, вставив в начало процедуры обработки регламентного задания следующий код:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если НЕ ПолучитьФункциональнуюОпцию(«ИспользоватьПочтовыйКлиент») Тогда
ВызватьИсключение НСтр(«ru = ‘Регламентное задание недоступно по функциональным опциям.’»);
КонецЕсли;
Если в конфигурации используется подсистема «Регламентные задания» БСП и настроены зависимости регламентных заданий от ФО (как указано в п.3.1), то вместо этого достаточно вставить вызов, как показано в п.6.
4.1. Если выполнение регламентного задания зависит от данных информационной базы, то флажок Предопределенное у регламентного задания следует отключать.
Например:
// Снимаем ограничение, что только администратор может создавать регламентные задания.
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(РассылкаОтчетов);
Задание.Параметры = ПараметрыЗадания;
Задание.ИмяПользователя = АвторРассылки;
Задание.Использование = Истина;
Задание.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru = ‘Рассылка отчетов: %1’»), СокрЛП(РассылкаОтчетов);
Задание.Расписание = РасписаниеРассылки;
Задание.Записать();
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.Параметризуется = Истина;
Также выполнить п.6.
5. Во избежание различных конфликтных ситуаций рекомендуется в копиях информационной базы автоматически блокировать все регламентные задания, обращающиеся к внешним ресурсам (рассылка почты, синхронизация данных с другими программами и т.п.). Например, если копия информационной базы была развернута для тестирования или передана в службу технической поддержки.
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.РаботаетСВнешнимиРесурсами = Истина;
В этом случае при перемещении информационной базы администратору будет задан вопрос об отключении таких заданий.
6. Если регламентное задание попадает под требования, описанные в пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания» БСП, то вначале процедур обработчиков таких заданий необходимо помещать вызов:
Первый параметр при этом заполнять обязательно.
Некоторые задачи в документообороте и учете бывает необходимо выполнять периодически. Например, по двадцатым числам. Или ежедневно.
Обычно в компании стараются создать правила о выполнении таких задач – кто, когда и как должен выполнить задачу, кто проконтролировать.
Такие задачи называют – регламентированными, то есть выполняемые согласно регламента.
В ИТ часто регламентированно выполняется мониторинг.
Это хорошо знакомо системным администратором – есть специальные программы, которые периодически проверяют работоспособность серверов и сетевой инфрастуктуры и сообщают смс или электронным письмом администратору.
Аналогичные вещи существуют для вебмастеров – для проверки доступности сайта в течении суток.
В 1С задачи мониторинга и любые другие периодические задачи, которые должны выполняться автоматически по расписанию, выполняются с помощью механизма Регламентые задания 1С.
Поговорим сегодня про них.
Регламентные задания 1С
Регламентные задания 1С – это объект 1С, который позволяет выполнять обработчик не при наступлении события, как это делает подписка на событие, а по расписанию.
Само регламентное задание 1С в конфигураторе – это способ указать настройки и задать расписание. Кстати, расписание можно менять динамически потом в режиме 1С Предприятие.
Если используется файловая база данных, то задания не выполняются автоматически. Для этого нужно запустить один из сеансов 1С в режиме 1С Предприятие и в нем выполнить команду
ВыполнитьОбработкуЗаданий();
Во всех типовых конфигурациях предусмотрена настройка пользователя, которая позволяет указать, что при запуске 1С под этим пользователем автоматически будут выполняться регламентные задания 1С. С точки зрения пользователя Windows – задание будет выполнено под тем пользователем, под которым запущен клиент 1С на данном компьютере.
При использовании клиент-серверного варианта 1С задачи выполняются автоматически, на сервере. Само «регламентное задание» не «выполняется». При наступлении времени срабатывания — запускается фоновое задание, которое и выполняет задачу. Фоновое задание выполняется под пользователем Windows, под которым работает процесс программы сервера 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С, то важное значение приобретают права пользователя Windows, под которым выполняется задание.
Особенно важен при разработке третий пункт. Если модуль не может быть выполнен на сервере – задание не будет выполняться в принципе. Для проверки нужно хотя бы раз запустить задание и посмотреть результат «Задание выполнено» в обработке Консоль заданий.
Вопросы по разным конфигурациям 1С и проектному менеджменту
суббота, 3 марта 2018 г.
Регламентные и фоновые задания
Механизм заданий – один из инструментов администрирования 1С. Он включает:
Рассмотрим соответствующие вопросы экзамена.
Не стартует добавленное регламентное задание
Конфигурация УТ 11 ПРОФ
Клиент-сервер
Платформа 8.2.16
Есть два задания: типовое («Формирование сегмента номенклатуры») и добавленное свое. Расписание задано одинаковое (каждый день, через 20 секунд).
Добавленное задание вызывает метод из общего модуля (Сервер, Вызов сервера, Привилегированный).
Те же задания при запуске в файловом режиме стартуют и выполняются нормально.
Почему добавленное задание может не стартовать автоматически?
Нет, оба задания непредопределенные
А «Использование» установлено в истину?
установите себе менеджер регламентных заданий.
Возможно «Ключ» регламентного задания совпадает. В чем идея использования этого ключа? Например вы создаете несколько регламентных заданий с вызовом одного и того же задания, в силу того что в одном задании порой нельзя задать расписание всех нужных нам вариантов (например, Пн-Пт каждые 10 минут и Сб-Вс каждый час, для этого приходится создавать два задания), так вот есть вероятность того что оба задания могут выполнятся одновременно, чтоб этого не происходило, нужно задать для всех таких заданий один и тот же ключ, при этом если одно из заданий уже выполняется, то другое с таким же ключом не будет стартовать пока не закончится выполнение первого.
Думаю logarifm имел ввиду именно консоль заданий.
P.S. Кстати в консоли заданий есть ошибка из-за которой нет раскраски таблиц, например, задания которые выполняются в данный момент, выводятся в консоли жирным.
Там все нормально. Стандартные задания выполняются без ошибок. Мое задние присутствует в списке регл. заданий, а в разделе фоновые задания записей по нему нет. Но они и правильно, потому что если оно даже не стартует по расписанию, то откуда им там взяться.
А вот если руками создать в консоли заданий фоновое задание и запустить то оно отрабатывается без ошибок.
Путем всех экспериментов сразу хочу сказать, что дело не в коде. Почему то не запускается задание по расписанию, а вот почему не понятно.
По поводу ошибки, это так между прочим написал, ошибка связана только с отсутствием раскраски в таблицах, на работу фоновых заданий никак не влияет.
Относительно того, что задание не запускается, проверь на вкладке «Общие» расписания, должно стоять «Повторять каждые:» 1 (дн.), по умолчанию там 0. И для интереса напиши текст который формируется при изменении расписания, ну типа «каждый день; с 6:00:00 по 23:59:59 каждые 300 сек.»
Стоит 1 день.
каждый день; каждые 120 сек.
P.S. Если не секрет, откуда ты взял «консоль заданий»? Та что идет на ИТС, совсем выглядит не так как та что у тебя на картинках. В частности нет кнопки «Запустить задание вручную», а это было бы очень логично иметь такую кнопку, как в твоей обработке.
Если запустить вручную, то регл. задание запускается и отрабатывается все нормально. Если зайти в раздел «Регламентные задания» и запустить его руками («Выполнить сейчас»), то она абсолютно нормально отрабатывает без каких либо ошибок.
Также хочу отметить вот этот момент
В общем дело не в коде 100%. Говорю так, потому что мы провели эксперимент. Добавили код из нашего регл. задания в код регламентного задания «Загрузка курсов валют», которое нормально работает по расписанию. В итоге оно нормально отработалось в автоматическом режиме, в том числе выполнила и наш кусок кода.
Так что проблема не в коде. Мы пошли дальше. создали новое регл. задание полную копию «Загрузка курсов валют» и в итоге она тоже не работает. Такое ощущение, что по расписанию выполняются только стандартные регламентные задания, которые находятся на поддержке, а вновь созданные сервер не обрабатывает.
Фоновые задания в 1С 8.3
Фоновые задания
Иногда требуется выполнить какую-нибудь длительную операцию без блокирования интерфейса. То есть пользователь нажал кнопку, запустилась какая-нибудь длительная процедура, а в этом время пользователь может делать что-нибудь другое в программе. Для этого можно использовать механизм фоновых заданий.
Фоновые задания запускаются асинхронно (без ожидания завершения), в отдельном потоке. Фоновые задания можно запустить только на сервере. Для примера, представим что есть некий список электронных адресов, на который нужно выполнить рассылку по электронной почте. В списке может быть много адресов, да и отправка одного письма выполняется какое-то время. Поэтому хотелось бы запустить рассылку и продолжить дальше работать с программой.
Чтобы запустить фоновое задание используется метод Выполнить менеджера фоновых заданий. Первым параметром передается имя общего модуля и имя метода. Указанный метод должен находиться в общем модуле и быть экспортным.
В результате будет запущено фоновое задание, которое выполнит метод ВыполнитьРассылку из общего модуля МодульФоновыхЗаданий. Во время выполнения фонового задания интерфейс пользователя не будет заблокирован.
Если сейчас трижды запустить одно фоновое задание, то оно будет запущено три раза и три раза выполнит одно и то же действие. Чтобы избежать повторного запуска фонового задания, если оно уже было запущено можно использовать Ключ фонового задания. Ключ передается третьим параметром в метод Выполнить:
В результате при первом выполнении данного кода будет запущено фоновое задание с ключом «Рассылка». Если не дождавшись выполнения текущего фонового задания попробовать запустить его еще раз, то будет выброшено исключение «Задание с таким значением ключа уже выполняется». Если указать другое значение ключа, то оба фоновых задания будут выполняться одновременно.
Если у фоновых заданий с одним значением ключа не совпадают методы для выполнения, то такие задания могут быть запущены одновременно.
Стоит отметить, что в качестве метода для фонового задания можно использовать как процедуру, так и функцию. Возвращаемый результат функции будет проигнорирован. В качестве метода фонового задания нельзя использовать методы глобальных общих модулей.
Параметры фонового задания
При запуске фонового задания можно передать параметры в метод общего модуля. Например, добавим в процедуру ВыполнитьРассылку два параметра:
При запуске фонового задания вторым параметром нужно перадать массив параметров. Первый элемент массива будет передан в первый параметр, второй — во второй и т.д.
Если количество параметров не будет совпадать, то фоновое задание не будет выполнено.
Фоновые задания в файловом и клиент-серверном варианте
Механизм выполнения фоновых заданий отличается в файловом и клиент-серверном варианте.
В файловом варианте фоновые задания выполняются на том клиентском приложении, которое его запустило. Одновременно может выполняться только одно фоновое задание, остальные фоновые задания встают в очередь.
В клиент-серверном варианте фоновые задания выполняются планировщиком заданий, который находится в менеджере кластера. Планировщик заданий подбирает наименее загруженный рабочий процесс сервера 1С и выполняет фоновое задание на нем.
И в файловом и клиент-серверном варианте фоновое задание это отдельный системный сеанс, который выполняется от имени того пользователя, кто создал задание.
Фоновое задание с ожиданием результата
Если требуется дождаться результата выполнения фонового задания, то можно воспользоваться тем, что метод Выполнить возвращает объект Фоновое задание. А у этого объекта есть метод ОжидатьЗавершенияВыполнения, который остановит поток выполнения, пока не изменится состояние фонового задания. Фоновое задание может быть в четырех состояниях:
После изменения состояния фонового задания метод ОжидатьЗавершенияВыполнения вернет обновленное фоновое задание, у которого можно анализировать свойство Состояние, чтобы узнать результат выполнения:
Метод Выполнить вернул фоновое задание, состояние которого было равно Активно. Состояние автоматически не обновляется. Для проверки изменения состояния фонового задания нужно заново получить фоновое задание. В данном примере оно было получено методом ОжидатьЗавершенияВыполнения.
Пауза через фоновое задание
В метод ОжидатьЗавершенияВыполнения параметром можно передать количество секунд. Выполнение кода продолжится или по истечении этого времени или сразу после изменения состояния фонового задания. Можно воспользоваться данным методом для возможности оставить выполнение кода на указанное количество секунд. В общий модуль добавим следующую процедуру:
Параметром принимаем количество секунд для паузы, затем определяем чей это сеанс. Если клиентский, то запускаем фоновое задание и ждем его завершения. Если это сеанс фонового задания, то просто ждем его завершения.
Вызов паузы на 5 секунд:
Преимущество такого метода в том, что на время паузы не загружается процессор.
Оповещение о выполнении фонового задания
Иногда требуется не просто запустить выполнение фонового задания, а оповестить пользователя о результатах выполнения. Для этого можно использовать следующий алгоритм действий:
Здесь был использован метод ПодключитьОбработчикОжидания, который вызывает процедуру, указанную в первом параметре через время, указанное во втором параметре. Затем вызов процедуры был отменен через метод ОтключитьОбработчикОжидания.
Отмена выполнения фонового задания
Для отмены фонового задания можно использовать метод Отменить самого фонового задания:
Сообщения из фонового задания
Фоновое задание выполняется на сервере, поэтому если в нем использовать сообщения пользователю, то их никто не увидит. Однако у фонового задания есть метод ПолучитьСообщенияПользователю, который позволяет получить все сообщения из фонового задания. Для примера добавим в общий модуль следующую процедуру:
Выполним ее через фонового задание с получением всех сообщений и выведем полученные сообщения на экран:
Через сообщения можно организовать получение прогресса выполнения фонового задания. Добавим в общий модуль следующие процедуры:
И запустим фоновое задание на выполнение, с периодическим получением сообщений:
В результате в процессе выполнения фонового задания можно будет увидеть окно состояния с прогрессом выполнения:
Многопоточность через фоновые задания
С помощью фоновых заданий можно выполнить какую-то обработку в несколько потоков. Например, нужно во всем справочнике товаров увеличить цену на 10%. Можно разбить все товары на несколько частей и каждую часть обработать в отдельном потоке:
Здесь мы использовали метод ОжидатьЗавершения, но уже не у самого фонового задания, а у менеджера фоновых заданий. Параметром передали массив тех фоновых заданий, завершение которых нужно дождаться. У менеджера фоновых заданий тоже есть метод ОжидатьЗавершенияВыполнения, в который помимо массива заданий можно передать таймаут, аналогично одноименному методу у фонового задания. Даже если в методе ОжидатьЗавершенияВыполнения не указывать таймаут, то он в любом случае вернет массив всех обновленных фоновых заданий, после изменения статуса хотя бы у одного задания. Так как нам нужно дождаться завершения всех заданий, то был использован метод ОжидатьЗавершения.
Стоит отметить, что в одном фоновом задании можно запустить другое фоновое задание. То есть можно было запустить одно фоновое задание, в нем распараллелить выполнение на четыре фоновых задания, дождаться их выполнения и оповестить пользователя о завершении.
В силу ограничений выполнения фоновых заданий в файловом варианте многопоточную обработку данных можно реализовать только в клиент-серверном варианте.
Получить фоновые задания
Метод ПолучитьФоновыеЗадания позволяет получить список всех фоновых заданий, сохраненных в базе данных. Выполненные фоновые задания хранятся в течении суток, но не более 1000 заданий. Соответственно метод ПолучитьФоновыеЗадания вернет как текущие фоновые задания (выполняются в данный момент), так и завершившиеся в течении суток задания.
Задание с таким значением ключа уже выполняется
Область применения: управляемое приложение, обычное приложение.
1. В общем случае, регламентные задания следует использовать, когда необходимо выполнить определенные периодические или однократные действия в соответствии с расписанием.
2. При этом если регламентные задания не требуется добавлять или удалять в зависимости от действий пользователя или логики конфигурации, следует использовать предопределенные регламентные задания. Такие задания автоматически создаются в информационной базе с тем расписанием и состоянием, которое было задано разработчиком в Конфигураторе. Примеры предопределенных регламентных заданий:
3.1. Если выполнение регламентного задания зависит от включенных одной или нескольких функциональных опций (ФО), то необходимо программно управлять признаком предопределенного регламентного задания Использование в зависимости от установленных ФО. Иначе регламентное задание будет приводить к запуску сеанса, занимая вычислительные ресурсы сервера 1С:Предприятие.
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеСтатусовДоставкиSMS;
Настройка.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПочтовыйКлиент;
Настройка.ДоступноВМоделиСервиса = Ложь;
После чего в состав определяемого типа МестоХраненияФункциональныхОпций необходимо добавить константы, соответствующие функциональным опциям, используемым для управления регламентными заданиями.
Для конфигураций без БСП следует управлять использованием регламентного задания, разместив, например, в модуле менеджера значения константы ИспользоватьПочтовыйКлиент следующий код:
Если Задание.Использование <> Значение Тогда
Задание.Использование = Значение;
Задание.Записать();
КонецЕсли;
3.2. Дополнительно следует обезопасить выполнение регламентного задания, включенного через консоль или другим способом, минуя включение ФО, вставив в начало процедуры обработки регламентного задания следующий код:
ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
Если НЕ ПолучитьФункциональнуюОпцию(«ИспользоватьПочтовыйКлиент») Тогда
ВызватьИсключение НСтр(«ru = ‘Регламентное задание недоступно по функциональным опциям.’»);
КонецЕсли;
Если в конфигурации используется подсистема «Регламентные задания» БСП и настроены зависимости регламентных заданий от ФО (как указано в п.3.1), то вместо этого достаточно вставить вызов, как показано в п.6.
4.1. Если выполнение регламентного задания зависит от данных информационной базы, то флажок Предопределенное у регламентного задания следует отключать.
Например:
// Снимаем ограничение, что только администратор может создавать регламентные задания.
УстановитьПривилегированныйРежим(Истина);
Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.РассылкаОтчетов);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(РассылкаОтчетов);
Задание.Параметры = ПараметрыЗадания;
Задание.ИмяПользователя = АвторРассылки;
Задание.Использование = Истина;
Задание.Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(«ru = ‘Рассылка отчетов: %1’»), СокрЛП(РассылкаОтчетов);
Задание.Расписание = РасписаниеРассылки;
Задание.Записать();
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.Параметризуется = Истина;
Также выполнить п.6.
5. Во избежание различных конфликтных ситуаций рекомендуется в копиях информационной базы автоматически блокировать все регламентные задания, обращающиеся к внешним ресурсам (рассылка почты, синхронизация данных с другими программами и т.п.). Например, если копия информационной базы была развернута для тестирования или передана в службу технической поддержки.
Настройка = Настройки.Добавить();
Настройка.РегламентноеЗадание = Метаданные.РегламентныеЗадания.РассылкаОтчетов;
Настройка.РаботаетСВнешнимиРесурсами = Истина;
В этом случае при перемещении информационной базы администратору будет задан вопрос об отключении таких заданий.
6. Если регламентное задание попадает под требования, описанные в пунктах 3.1, 4.2, 5 и используется подсистема «Регламентные задания» БСП, то вначале процедур обработчиков таких заданий необходимо помещать вызов:
Первый параметр при этом заполнять обязательно.
Некоторые задачи в документообороте и учете бывает необходимо выполнять периодически. Например, по двадцатым числам. Или ежедневно.
Обычно в компании стараются создать правила о выполнении таких задач – кто, когда и как должен выполнить задачу, кто проконтролировать.
Такие задачи называют – регламентированными, то есть выполняемые согласно регламента.
В ИТ часто регламентированно выполняется мониторинг.
Это хорошо знакомо системным администратором – есть специальные программы, которые периодически проверяют работоспособность серверов и сетевой инфрастуктуры и сообщают смс или электронным письмом администратору.
Аналогичные вещи существуют для вебмастеров – для проверки доступности сайта в течении суток.
В 1С задачи мониторинга и любые другие периодические задачи, которые должны выполняться автоматически по расписанию, выполняются с помощью механизма Регламентые задания 1С.
Поговорим сегодня про них.
Регламентные задания 1С
Регламентные задания 1С – это объект 1С, который позволяет выполнять обработчик не при наступлении события, как это делает подписка на событие, а по расписанию.
Само регламентное задание 1С в конфигураторе – это способ указать настройки и задать расписание. Кстати, расписание можно менять динамически потом в режиме 1С Предприятие.
Если используется файловая база данных, то задания не выполняются автоматически. Для этого нужно запустить один из сеансов 1С в режиме 1С Предприятие и в нем выполнить команду
ВыполнитьОбработкуЗаданий();
Во всех типовых конфигурациях предусмотрена настройка пользователя, которая позволяет указать, что при запуске 1С под этим пользователем автоматически будут выполняться регламентные задания 1С. С точки зрения пользователя Windows – задание будет выполнено под тем пользователем, под которым запущен клиент 1С на данном компьютере.
При использовании клиент-серверного варианта 1С задачи выполняются автоматически, на сервере. Само «регламентное задание» не «выполняется». При наступлении времени срабатывания — запускается фоновое задание, которое и выполняет задачу. Фоновое задание выполняется под пользователем Windows, под которым работает процесс программы сервера 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С, то важное значение приобретают права пользователя Windows, под которым выполняется задание.
Особенно важен при разработке третий пункт. Если модуль не может быть выполнен на сервере – задание не будет выполняться в принципе. Для проверки нужно хотя бы раз запустить задание и посмотреть результат «Задание выполнено» в обработке Консоль заданий.
Вопросы по разным конфигурациям 1С и проектному менеджменту
суббота, 3 марта 2018 г.
Регламентные и фоновые задания
Механизм заданий – один из инструментов администрирования 1С. Он включает:
Рассмотрим соответствующие вопросы экзамена.