Регламентные и фоновые задания 1С 8
Наверное, каждому программисту 1С 8.3 рано или поздно приходилось настраивать выполнение определенных заданий по расписанию. Ниже я дам подробное описание данных механизмов, надеюсь, это будет полезной информацией для начинающих программистов 1С. Это очень удобно, ведь не требует действий от человека, регламентное задание настраивается 1 раз и работает по Вашему расписанию.
Как настраиваются регламентные и фоновые задания в 1С 8?
Развернутую инструкцию на примере загрузки курсов валют Вы найдете далее.
Что такое регламентные и фоновые задания в 1С
Настройка фоновых заданий в клиент-серверном режиме работы 1С
Для начала создадим новый объект метаданных — регламентное задание. Я назову свое задание «ЗагрузкаКурсовВалют». Рассмотрим палитру свойств данного объекта конфигурации:
И самая интересная настройка — Расписание:
Тут настраивается интервал запуска процедуры, указанного в поле «Имя метода». Допустим я настроил
Внимание! Не забудьте отключить блокировку выполнения регламентных и фоновых заданий на уровне СУБД!
Сделать это можно в утилите администрирования клиент-серверного варианта либо при создания новой БД:
Для управления фоновыми заданиями рекомендую использовать обработку с диска ИТС — «Консоль заданий«.
Настройка регламентных заданий в файловом режиме работы 1С
В файловом режиме настройка таких заданий несколько труднее. Для такого задания должна быть запущена отдельная сессия программы 1С. Зачастую это решается заведением «технического» пользователя, чей сеанс всегда запущен.
В файловом режиме инициализация регламентного задания происходит при запуске метода «ВыполнитьОбработкуЗаданий()».
Для определенного пользователя можно настроить запуск этого метод, используя другой метод —
Двухминутное видео, в котором показано, как настроить регламентное задание в конфигураторе 1С:
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Настройка регламентных и фоновых заданий в 1С: Бухгалтерии ред. 3.0
Зачастую пользователи жалуются на медлительность работы 1С и периодическое торможение и зависание базы при работе. Проблема может быть связана, во-первых, с нехваткой ресурсов компьютера. О параметрах компьютера для оптимальной работы 1С мы говорили ранее. Во-вторых, проблема может быть в запуске операций по обслуживанию программы, которые выполняются в фоновом режиме, в процессе ее работы. И если в серверном варианте 1С эти операции выполняются по расписанию в нерабочее время, то в файловом варианте фоновые задания выполняются непосредственно при работе пользователей. Это и приводит к замедлению работы, особенно если еще и ресурса самого компьютера недостаточно. Что такое регламентные и фоновые задания, для чего они нужны и как отключить лишние расскажем в этой статье.
Регламентные задания – это действия, выполняемые по заданному расписанию в фоновом режиме автоматически, такие как:
• ежедневная загрузка курсов валют;
• обновление классификаторов банков;
• отложенное проведение документов;
• обновление ответов ЕГАИС;
• обновление индексов ППД
Вы спросите: «Зачем загружать и обновлять классификаторы или справочники, которые не используются или при необходимости могут быть обновлены пользователем вручную?»
Действительно: «Зачем?». Ведь можно самим при необходимости загрузить справочник банков или обновить курс валют. Естественно, если организация периодически покупает и продает валюту данная операция для нее актуальна. Но для остальных пользователей – это лишнее. И такие «ненужные» операции можно просто отключить.
Выполнение регламентных операций включается автоматически, если установлены соответствующие настройки сервисов программы, таких как:
• «Автоматическая проверка контрагентов по ЕГРН»;
• «Сервис 1СПАРК Риски»;
• «Автоматическая отправка сведений об использовании программы в фирму «1С».
Посмотрим, где найти эти регламентные задания и какие у них настройки.
Шаг 1. Перейдите в раздел «Администрирование – «Обслуживание».
Раскрыв подраздел «Регламентные операции», откройте гиперссылку «Регламентные и фоновые задания».
В открывшемся окне две закладки:
Регламентные задания – это перечисление возможных операций и отметка об их выполнении.
Если у строки написано «не определено», значит оно не выполняется и не настроено. При необходимости пользователь может задать для него настройки.
Есть список действий, у которых стоит отметка «задание выполнено». Если для пользователя данное действие не актуально, его можно отключить.
Фоновые задания отражают сведения о выполнении регламентных заданий: какие выполнены или завершены с ошибками, отменены или выполняются.
Регламентные задания, которые по умолчанию предопределены в программе, отмечены зеленой галочкой.
Что они означают? Рассмотрим некоторые из них.
Все обновления 1С СПАРК Риски позволяют отслеживать изменения в деятельности контрагентов: ликвидация, реорганизация, смена руководителя и т.п. Сервис обновляет информацию, используя различные источники (данные ЕГРЮЛ, Единый федеральный реестр сведений о фактах деятельности юридических лиц и т.п.).
Извлечение текста файлов для поиска выполняется для быстрого поиска данных в файлах, прикрепленных к информационной базе.
Обновление задач бухгалтера выполняет обновление информации задач организации: сдача деклараций и отчетов, уплата налогов, начисление зарплаты, выплата аванса и т.п.
Проверка контрагентов обновляет данные для проверки корректности записи ИНН и КПП контрагентов.
Сбор и отправка статистики собирается и отправляется статистика по работе программы 1С. Это регламентное задание не замедляет работу программы.
Удаление неактуальной информации синхронизации убирает информацию синхронизации, не удаленную в результате сбоев.
Программой предусмотрено множество других регламентных операций, которые пользователь может включать и отключать. Но делать это надо осознанно.
Настройка регламентных операций в 1С.
Рассмотрим, как можно отключить или включить выполнение регламентного задания.
Например, у нас нет и не используются вложенные файлы в программе 1С и регламентное задание «Извлечение текста файлов для поиска» для нас не актуально и не имеет смысла.
Давайте отключим его выполнение.
Шаг 1. Откройте регламентное задание двойным щелчком мышки.
Шаг 2. Снимите галочку «Включено» и выполнение данного регламентного задания отключится.
У отключенного регламентного задания зеленая галочка убралась.
Так, наблюдая за работой компьютера, можно отключать неиспользуемые регламентные задания.
Если отключать задание не желательно, можно изменить его расписание. Например, вместо ежедневного запуска, установить – раз в неделю.
Шаг 3. Откройте регламентное задание «1С СПАРК Риски» и перейдите по гиперссылке «Расписание».
В настройке установлено повторять каждый день.
Пользователь может настроить расписание:
Шаг 4. Перейдите на закладку расписания «Недельное» и снимите галочки, оставив дни, когда следует запускать данное задание.
Можно задание выполнять раз в неделю, раз в месяц, в зависимости от настройки пользователя.
При одновременной работе в файловой базе нескольких пользователей, от 4-х и более, выполнение регламентных заданий может существенно тормозить их работу.
Чтобы не запутаться в регламентных заданиях правильнее, где возможно, отключать не сами задания, а настройки в программе, включающие их. Например, полнотекстовый поиск, проверка контрагентов, обновление классификаторов и справочников, автоматическая проверка обновлений – раздел «Интернет поддержка и сервисы» раздел «Администрирование».
Мы рассмотрели настройку, включение и отключение регламентных заданий. Конечно, тот факт, что регламентные и фоновые задания выполняются автоматически, по четкому определенному сценарию, не отвлекая пользователя от работы, является «плюсом» и удобно в работе.
Поэтому, если у вас проблемы со скоростью работы программы, рассмотрите и другие причины. Возможно не достаточные характеристики компьютера, сильно большой объем накопленной информации, замедление работы в результате сбоя.
И еще совет: почистите свой компьютер, рабочий стол от лишних файлов, лишних копий баз и т.д. Постарайтесь максимально расчистить пространство, чтобы программе было где «развернуться, да разгуляться»! Часто это действия в разы убыстряет работу 1С.
Автор статьи: Ольга Круглова
Понравилась статья? Подпишитесь на рассылку новых материалов
Регламентные задания в 1С 8.3
Создание регламентного задания
Регламентные задания позволяют выполнять определенные действия по расписанию. Для выполнения используются фоновые задания.
Регламентные задания хранятся в базе данных. В конфигурации есть объект метаданных Регламентные задания, где можно создать новое задание, указать метод для выполнения, расписание и т.п. Если установить в свойствах флаг Предопределенное, то при сохранении конфигурации базы данных регламентное задание будет записано в базу данных. Если флаг не установлен, то записать задание в базу нужно вручную.
Для примера создадим простое регламентное задание и установим у него флаг Предопределенное, а также Использование. Использование означает, что регламентное задание будет выполняться согласно его расписанию.
В свойстве Наименование можно указать произвольное наименование регламентного задания. Свойство Ключ аналогично такому же свойству фоновых заданий. Нельзя запустить несколько фоновых заданий с одним ключом и связанных с одним регламентным заданием.
В свойстве Имя метода нужно выбрать не глобальный серверный общий модуль, в котором будет создана процедура для выполнения. Можно выбрать уже существующую процедуру или функцию из общего модуля. Если выбрана функция, то результат выполнения будет проигнорирован.
Если сейчас сохранить конфигурацию базы данных, то регламентное задание не будет выполняться, потому что для него не настроено Расписание.
Расписание регламентных заданий
Для настройки расписания нужно нажать на гиперссылку Открыть рядом со свойством Расписание. Будет открыто окно настройки расписания:
Для примера настроим чтобы регламентное задание выполнялось каждые 5 минут. Для этого на закладке Общее укажем, что нужно повторять задание каждый день:
А закладке Дневное — повторять через 300 секунд:
Нажмем ОК, сохраним конфигурацию базы данных. Теперь каждые 5 минут будет запускаться фоновое задание и выполнять код из процедуры, которая указана в свойстве Имя метода.
Расписание тоже сохраняется в таблице регламентных заданий. Если сейчас изменить расписание в конфигураторе и сохранить конфигурацию базы данных, то все равно будет использоваться старое расписание. Чтобы применилось новое расписание, его нужно установить в пользовательском режиме. Или снять флаг Предопределенное и сохранить конфигурацию базы данных. В этот момент запись об этом регламентном задании будет удалена из таблицы. А потом настроить в конфигураторе новое расписание и снова поставить флаг Предопределенное. Регламентное задание будет записано в таблицу с новым расписанием.
Для программного открытия окна настройки расписания регламентного задания в пользовательском режиме можно воспользоваться следующим кодом:
В результате будет открыто окно для настройки расписания, результат настройки будет записан в таблицу регламентных заданий.
Расписание можно создать программно:
Теперь регламентное задание будет выполняться каждую минуту.
Рассмотрим некоторые настройки расписания:
Те же самые примеры, но программно:
Планировщик регламентных заданий
В клиент-серверном варианте регламентные задания выполняются планировщиком заданий, который находится в менеджере кластера. Планировщик заданий подбирает наименее загруженный рабочий процесс сервера 1С и запускает на нем фоновое задание. После выполнения рабочий процесс уведомляет планировщик о результате выполнения.
В файловом варианте регламентные задания выполняются на клиентском приложении. Причем только на одном. Это будет самое первое запущенное клиентское приложение. Если его закрыть, то регламентные задания начнут выполняться на другом клиентском приложении. Если больше нет запущенных клиентских приложений, то регламентные задания не будут выполняться. Если расписание регламентного задания было настроено на час ночи, а в этом время не был запущен ни один сеанс, то такое задание не будет выполнено. Обработка регламентных заданий выполняется один раз в 60 секунд. Если при запуске регламентного задания на этом клиентском сеансе уже выполняются какие-нибудь фоновые задания, то регламентное задание будет выполнено только после завершения всех текущих фоновых заданий.
До версии платформы 8.3.3.641 в файловом варианте не было автоматического выполнения регламентных заданий. Нужно было программно вызывать метод ВыполнитьОбработкуЗаданий. Обычно для этого запускался отдельный сеанс и в нем через обработчик ожидания вызывался данный метод.
Программная работа с регламентными заданиями
Если создать регламентное задание в конфигураторе, настроить у него расписание, но не установить флаг Предопределенное, то оно не будет выполняться. Потому что не было записано в таблицу регламентных заданий. В этом случае можно записать его туда вручную:
На основании одного регламентного задания, созданного в конфигураторе, можно записать несколько регламентных заданий в базу данных. Для этого не нужно устанавливать флаг Предопределенное, затем записать программно два регламентных задания, а для метода указать один параметр, через который можно определить, какое именно регламентное задание выполняется. Параметры передаются через массив, который присваивается свойству Параметры. Количество параметров метода регламентного задания и в массиве должно совпадать, иначе регламентное задание не будет выполнено.
В базу данных будут записаны два регламентных задания, а в процедуре, которая указана для регламентного задания можно анализировать параметр, который был указан при создании регламентного задания:
Для получения списка всех регламентных заданий можно воспользоваться методом ПолучитьРегламентныеЗадания:
Параметром можно передать структуру с отбором:
Отбор можно выполнять по следующим свойствам:
С помощью методом НайтиПоУникальномуИдентификатору и НайтиПредопределенное можно получить конкретное задание по его идентификатору или имени предопределенного регламентного задания:
Для удаления регламентного задания используется метод Удалить. Удалена будет только запись из таблицы базы данных, само регламентное задание останется в метаданных. Предопределенные задания нельзя удалить. Они удаляются, если снять флаг Предопределенное в метаданных:
Если нужно запустить регламентное задание не дожидаясь наступления расписания, то можно просто вызвать процедуру общего модуля, которая указана в свойстве Имя метода:
Пользователь регламентных заданий
По умолчанию регламентные задания выполняются под системным пользователем DefUser. Но если регламентное задание создается программно, то можно явно указать пользователя, под которым нужно выполнять его:
Перезапуск при аварийном завершении
В настройках регламентного задания есть два свойства: Количество повторов при аварийном завершении и Интервал повтора при аварийном завершении.
Если во время выполнения регламентного задания будет выброшено какое-нибудь исключение, или рабочий процесс, на котором выполнялось регламентное задание будет аварийно завершен, то регламентное задание будет перезапущено столько раз, сколько указано в свойстве Количество повторов при аварийном завершении. Каждый новый перезапуск будет выполняться через количество секунд, указанных в свойстве Интервал повтора при аварийном завершении. При этом при перезапуске регламентное задание будет всегда выполняться с самого начала.
Ограничение времени выполнения регламентного задания
Иногда регламентные задания могут зависать. Так как не возможен запуск нескольких фоновых заданий на основании одного регламентного задания с одним значением ключа, то пока остается сеанс зависшего фонового задания, не будут создаваться новые задания.
Например, настроено выполнение регламентного задания на каждый час. В 10:00 задание по какой-то причине зависло. Пока не будет удален сеанс зависшего фонового задания следующие задания (в 11:00, в 12:00 и т.д.) не будут запущены.
Чтобы избежать этого в расписании задания можно указать ограничение по времени. Это указывается на закладке Дневное в свойстве Завершать через:
В результате такой настройки максимальное время выполнения регламентного задания = 3600 секунд. Через этого время сеанс фонового задания будет автоматически завершен.
Блокировка регламентных заданий
Чтобы заблокировать выполнение регламентных заданий в клиент-серверной базе нужно выполнить следующие действия:
Чтобы заблокировать выполнение регламентных заданий в файловой базе нужно выполнить следующие действия:
Это нужно сделать у каждого клиентского приложения. Данный параметр запрещает выполнение регламентных заданий.
В конфигурациях на базе БСП можно выключить все регламентные задания следующим образом:
В конфигурациях на обычном приложении нужно скачать консоль заданий с ИТС
Открыть консоль заданий в пользовательском режиме и в верхнем списке для каждого задания снять флаг Использование:
Мобильное приложение регламентные задания
Все перепробовал фоновые задания, ОбработчикОжидания. Ничего не работает при неактивном приложении.
В общем ничего не сработало, HELP.
(14) см (11). Локальные и push уведомления уже изучены и испытаны, они не запускают приложение когда оно не активно.
А решение я уже нашел через обработчик СредстваГеопозиционирования и правильный перекомпил платформы)). Там не все так просто, вот интересные материалы: https://habrahabr.ru/post/271505/, https://www.raywenderlich.com/29948/backgrounding-for-ios
Если все получится, напишу решение.
В общем на ios все работает при следующем алгоритме:
1. В xcode при установке мобильной платформы нужно отметить backgrounds mode в ON и галку Location updates (и Voice over IP тоже можно, пригодится). Подробнее по вышеприведенным ссылкам. Там еще много интересного.
2. После этого ПодключитьОбработчикИзмененияМестоположения уже будет работать при не активном приложении, но ограниченное время около
20 минут. Данное ограничение у меня решилось подключением обычного обработчика ПодключитьОбработчикОжидания с интервалом
10 минут в котором выполняется ОтключитьОбработчикИзмененияМестоположения и снова ПодключитьОбработчикИзмененияМестоположения.
3. Также в настройках ios нужно отметить, что наше приложение может получать геопозицию «всегда».
При данном алгоритме приложение отлично работает в фоне, получает координаты, записывает в базу, запускаются фоновые задания, отправляет данные через Web-сервис, даже интерфейс окон обновляет. Все при выключенном телефоне.
Буду адаптировать под android обязательно, как только достану где-нибудь телефон с адройдом. В ближайшие дни.
PS Странно как то, я прям первооткрыватель. Не может быть чтобы до меня никто не решал данную задачу.
Практика разработки мобильного приложения 1С 8.3 (часть 1)
Практика разработки мобильного приложения 1С 8.3 (часть 1)
В данной статье речь пойдет о том, что довелось перепробовать и на какие грабли наступить, прежде чем удалось сделать более-менее нормальное приложение для планшетников. Приложение изначально затачивалось только под Андроид, за основу взята конфигурация 1С: Заказы, и мобильное приложение для разработки.
Изначально был выбран «неправильный» подход с компилированием приложения и закидыванием его на планшетник вручную. Напомню, что для сборки мобильных приложений используется «Помощник создания мобильного приложения» ( MobileAppWizzard ). Затем на одном из форумов было найдено красивое решение с использованием мобильного приложения для разработки. Это приложение входит в комплект установки мобильной платформы. На момент разработки использовалась платформа версии 8.3.3.24. В папке « Android » можно найти файл 1cem.apk. Это и есть мобильное приложение для разработки. Его огромнейший плюс, сэкономивший нам уйму времени — в том, что можно опубликовать мобильное приложение на веб-сервере, а на планшетнике указать путь вида http://[ Адрес веб-сервера ]/[ Имя мобильного приложения ].
На планшетном ПК, в настройках добавленного приложения можно отметить флажок «Обновлять из конфигуратора», и при каждом запуске приложение будет пытаться подключиться к веб-серверу и проверять обновления.
После того, как мобильное приложение было развернуто, начался процесс его доработки.
1. Настроить обмен между центральной базой и мобильным устройством.
2. Организовать асимметричную синхронизацию: из центральной базы выгружать данные о номенклатуре, контрагентах, остатках товаров на складе и взаиморасчетах, а из мобильного приложения загружать только заказы покупателей.
3. Реализовать простой интерфейс для менеджеров, где они смогут быстро просмотреть остатки, цены и взаиморасчеты.
На этапе тестирования использовалась промежуточная база «Управляемое приложение», ввиду того что демо-приложение 1С:Заказы изначально заточено на обмен именно с Управляемым приложением.
Первый блин вышел комом. В прямом смысле. Для обмена с центральной базой был использован v82.ComConnector. Не буду вдаваться в подробности его настройки, об этом есть куча отдельных материалов. Пройдусь только по тем трудностям, с которыми столкнулся.
1. Использование com- объектов на 64-битной серверной ОС. Для решения проблемы была использована обертка COM+ Applications, которая настраивается в Component Services.
2. Удаленный вызов Com с другого сервера. Вызываемый сервер должен иметь роль Application Server, и у него должно быть настроено COM+ Network Access. Кроме того, сервер Apache должен иметь соответствующие права (т. е. запускаться как сервис от имени авторизованного пользователя)
Намучившись с Ком-соединениями, решили переводить рабочую базу на web- сервисы.
О публикации веб-сервисов также написано очень много, но там написано о том, как работает. Как НЕ работает, поделюсь ниже.
Рабочая база развернута на платформе 8.2, мобильное приложение, соответственно, на 8.3.
При публикации вначале приложения 8.3, а затем 8.2. периодически выхватывали глюк «Ошибка формата потока» в веб-клиенте 8.3, либо сообщение об ошибке «различаются версии платформы клиента и сервера». Перепубликация не помогает, равно как и перезапуск Apache. А вот отключение публикации и подключение заново — помогает.
Далее, поймал забавную ошибку при авторизации пользователя (при создании ws Определения). При тестировании на компьютере, авторизация с длинным ФИО проходит легко. При попытке авторизации этого же пользователя с планшетника под управлением Android, авторизация заканчивалась, не начавшись. Экспериментальным путем удалось вычислить, что кириллицей длина логина ограничена 22 символами. При этом сочетание кириллических символов и цифр дало авторизоваться с логином длиной 27 символов. Есть подозрение, что это связано с преобразованием кириллических символов. Так, например, в браузере Firefox строка из Википедии « http://ru.wikipedia.org/wiki/П иво» преобразуется в « http://ru.wikipedia.org/wiki/%D0%9F%D0%B8%D0%B2%D0%BE ».
Технологически, мобильная платформа 8.3.3 на текущий момент имеет ряд ограничений. Самое ожидаемое, на мой взгляд, нововведение — это поддержка запросов. Но, поскольку произвольные запросы в динамических списках мобильная платформа пока не поддерживает, пришлось «пойти другим путем».
Для решения задачи отображения справочника номенклатуры с ценами и остатками был использован следующий подход:
1. В форме справочника номенклатуры созданы две таблицы. Первая — динамический список, собственно сам справочник. Фильтр динамического списка настроен так, чтобы выводились только группы. Вторая таблица — собственно остатки и цены. При активизации строки динамического списка, на сервере происходит заполнение таблицы значений, которая затем и выводится во вторую таблицу. При получении цен и остатков использовалась объектная модель. Все эти танцы с бубном были исполнены только потому, что привычного по толстому клиенту метода «при выводе строки» или «при получении данных» нет, и динамически нарисовать цифры в колонке нельзя.
Аналогичный подход использовался и в форме подбора
2. Для вывода строки с текущими ценами отлично подошла ФорматированнаяСтрока.
Чтобы этого избежать, было принято решение дробить полный обмен на порции с возвратом фокуса обратно в мобильное приложение. Т.е. вначале синхронизировать номенклатуру, затем контрагентов, затем остатки, и т. п.
4. Для получения отчетов оставлен тот же подход, что и в конфигурации 1С: Заказы. Вызывается веб-сервис с параметрами, на стороне сервера рабочей базы формируется табличный документ, и затем уже готовый табличный документ возвращается в мобильное приложение.