Управление регламентом

27.12.11

Разработка - Инструментарий разработчика

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

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

Скачать файлы

Наименование Файл Версия Размер
Всей файлы одним архивом
.zip 409,62Kb
238
.zip 409,62Kb 238 Скачать
Описание подсистемы Управление регламентом
.docx 167,24Kb
11
.docx 167,24Kb 11 Скачать
Установка подсистемы Управление регламентом
.docx 107,67Kb
9
.docx 107,67Kb 9 Скачать
УправлениеРегламентом.cf
.cf 177,15Kb
14
.cf 177,15Kb 14 Скачать
Пример внешней обработки
.epf 7,10Kb
15
.epf 7,10Kb 15 Скачать

Введение

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

Все перечисленные выше задачи требовали программирования. Несмотря на разнообразие задач, их объединяет одно – это задачи, которые выполняются по расписанию.

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

Примеры задач использования подсистемы:

  • ·         Загрузка валют
  • ·         Обновление справочника банков
  • ·         Обновление границы запрета редактирования в режиме пользователя
  • ·         Подключение обработок на событие при начале работы системы: поздравление именинников, оповещение начальников кадровых служб о предстоящих днях рождения сотрудников, ограничение доступа группы сотрудников в определенные дни и часы, проведение анкетирования при входе в систему (разовые акции)
  • ·         Снятие резервов товаров на складах
  • ·         Формирование отчетов (например, ночью)
  • ·         Рассылка отчетов
  • ·         Проверка почты и загрузка информации
  • ·         Восстановление последовательности документов
  • ·         Ограничение работы определенного списка пользователей по времени
  • ·         Осуществление обмена между системами (для 1С8 имеется в виду обмен без использования типовой подсистемы обмена данными)

Описание подсистемы «Управление регламентом» для 1С8.2

Подсистема предназначена для поддержки выполнения обработок по расписанию.

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

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

Работа с подсистемой

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

Создание регламента производится через ввод элемента справочника «Регламентные обработки». Создадим для примера регламентную обработку в сеансе пользователя. Назначение регламентной обработки – обновлять границу запрета изменения данных в сеансе пользователя через каждые 15 минут. Для этого нам потребуется следующая последовательность действий:

1.       Ввести новый элемент справочника Регламентные обработки

2.       На элементе формы выбрать реквизит Обработка и открыть список выбора из справочника Внешние обработки

3.       Добавить в справочник Внешние обработки Произвольный алгоритм. Текст произвольного алгоритма:

ПолныеПрава.УстановитьПараметрГраницыЗапретаИзмененияДанных();

4.       Записать произвольный алгоритм во внешние обработки и завершить выбор

5.       Указать признак «Действует в сеансе пользователя» и настроить расписание

6.       В отрывшемся диалоге настройки расписания указать все дни недели, признак Периодичность и период – 900 секунд

7.       Закрыть настройку расписания и сохранить регламент по кнопке ОК

 

 

Рисунок 1. Ввод регламента

 

 

Рисунок 2. Выбор регламентной обработки из внешних обработок

 

Рисунок 3. Ввод произвольного алгоритма

 

 

Рисунок 4. Справочник Регламенты выполнения обработок

Параметры произвольного алгоритма

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

 

Текст = Новый ЗаписьТекста("c:\test.txt");
Текст.ЗаписатьСтроку(ТекущаяДата());

Для Каждого
ЭлементСписка Из Параметры Цикл
   
Текст.ЗаписатьСтроку(ЭлементСписка.Значение);
КонецЦикла;

Текст.Закрыть();

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

Для проверки работы регламента сохраним регламент. В списке регламентных обработок нажмем кнопку «Выполнить». В текстовом файле c:\test.txt должен появиться список параметров.

Тот же алгоритм мы можем применить для выполнения как в сеансе пользователя, так и фоновом задании на сервере. Результатом выполнения алгоритма будет создание файла c:\test.txt либо на компьютере пользователя, либо на сервере 1С – в зависимости от того, какое расписание было задано для выполнения регламентной обработки.

 

Рисунок 5. Редактирование параметров произвольного алгоритма

 

Настройка обработки

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

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

Требования к обработке для выполнения в регламенте

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

В обработке должен быть реквизит «СохраненнаяНастройка» произвольного типа.

В модуле обработке должны быть объявлены экспортные процедуры:

  • ·         СохранитьНастройку
  • ·         ПрименитьНастройку
  • ·         ВыполнитьОбработку

 

Процедура СохранитьНастройку() Экспорт
   
Параметры = Новый Структура;
   
//  Сохранение реквизитов обработки
   
Для каждого Реквизит Из ЭтотОбъект.Метаданные().Реквизиты Цикл
       
//Сообщить("Имя:"+Реквизит.Имя+", значение:"+Строка(ЭтотОбъект[Реквизит.Имя]));
       
Параметры.Вставить(Реквизит.Имя, ЭтотОбъект[Реквизит.Имя]);
    КонецЦикла;
   
СохраненнаяНастройка = Новый ХранилищеЗначения(Параметры);
КонецПроцедуры

Процедура
ПрименитьНастройку() Экспорт
    Попытка
       
Параметры = СохраненнаяНастройка.Получить();
       
//  Восстановление сохраненных реквизитов обработки
       
Для каждого Реквизит Из ЭтотОбъект.Метаданные().Реквизиты Цикл
           
//Сообщить("Имя:"+Реквизит.Имя+", значение:"+Строка(ЭтотОбъект[Реквизит.Имя]));
           
Параметры.Свойство(Реквизит.Имя, ЭтотОбъект[Реквизит.Имя]);
        КонецЦикла;
    Исключение
    КонецПопытки;
КонецПроцедуры

Процедура
ВыполнитьОбработку() Экспорт

   
ЗаписьЖурналаРегистрации("РегламентнаяОбработка",
                               
УровеньЖурналаРегистрации.Информация, , ,
                               
"Выполнение по организации:"+Строка(Организация));


КонецПроцедуры

 

Редактирование расписания

Как было указано ранее для выполнения регламента можно задать расписание выполнения в сеансе пользователя или в фоновом задании на сервере 1С. Для настройки расписания в сеансе пользователя нужно нажать кнопку «Дополнительные настройки расписания…» в разделе «Работа в сеансе пользователя».

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

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

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

 

Рисунок 6. Расписание регламента в сеансе пользователя

 

Регламентные задания сеанса пользователя

Регламентные задания сеанса пользователя хранятся в регистре сведений «Регламентные задания». Основное назначение регистра – создание плана выполнения регламента.

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

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

 

Рисунок 7. Регламентные задания сеанса пользователя

Состав подсистемы

Метаданные

Вид

Общие модули

УправлениеРегламентом

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

РегламентнаяОбработка

Перечисления

ВидыДополнительныхВнешнихОбработок (добавлен вид «Произвольный алгоритм»)

СобытияРегламентногоВыполнения

СостоянияВыполненияРегламента

Справочники

ВнешниеОбработки (добавлен вид «Произвольный алгоритм»)

РегламентыВыполненияОбработок

Регистры сведений

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

Процедуры модуля приложения

ПриНачалеРаботыСистемы

ПриЗавершенииРаботыСистемы

 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121599    670    389    

711

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7260    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3499    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177724    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99338    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

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

3000 руб.

27.08.2019    18102    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28091    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23595    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. kalyaka 1053 26.12.11 13:59 Сейчас в теме
У вас есть ряд задач требующих автоматического выполнения по расписанию? Это может быть: ежедневная загрузка валют, списание просроченных резервов, рассылка прайсов и т.д.

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



Перейти к публикации

1. Misanets 340 26.12.11 13:59 Сейчас в теме
Что ж, интересно, будем смотреть. А вот файлы можно было-бы и архивом выложить.
2. almas 254 29.12.11 09:17 Сейчас в теме
Спасиб. Мне как раз в тему идет. Сейчас задумался об добавлении в свою конфу чего-то подобного.
3. _LEV_ 29.12.11 11:12 Сейчас в теме
Спасибо. Думаю Ваша работа будет востребована.
4. D_Rostov 09.01.12 16:38 Сейчас в теме
С помощью этого дополнения можно настроить в 1С 8.2 еженедельную отправку прайса покупателям?
5. kalyaka 1053 10.01.12 08:34 Сейчас в теме
(4) D_Rostov, конечно можно! Нужно для этого указать расписание, например, запускать регламентную обработку каждый понедельник в 7:00. В регламентной обработке должны быть объявлены экспортные процедуры: СохранитьНастройку, ПрименитьНастройку, ВыполнитьОбработку. В процедуре ВыполнитьОбработку нужно реализовать сам алгоритм формирования и отправки прайса (можно разделить обработки, одну реализовать для формирования и сохранения прайса, а другую для рассылки - это уже на Ваше усмотрение).
6. Saili 20.01.12 10:12 Сейчас в теме
Спасибо. Актуально. В 1С действительно есть подсистема автоматического обмена данными, но предлагаемый подход к задачам, требующим выполнения по расписанию, более универсален.
7. Evgeny2009 55 11.02.12 12:00 Сейчас в теме
После слияния конфигурации и запуске пользователя выдаёт
{ОбщийМодуль.УправлениеРегламентом.Модуль(374)}: Ошибка при получении значения атрибута контекста (ТекущийПользователь)
ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
по причине:
Попытка получения неинициализированного значения параметра сеанса

В чём может быть причина?
1С:Предприятие 8.2 (8.2.15.294)
КА 1.1.18.1
8. Evgeny2009 55 11.02.12 12:32 Сейчас в теме
Кажеться умну руки из уха... )) обьеденил криво
9. пользователь 21.02.12 09:24
Сообщение было скрыто модератором.
...
10. пользователь 29.02.12 10:00
Сообщение было скрыто модератором.
...
11. Программулькин 301 21.05.12 09:39 Сейчас в теме
12. Vsaray 11.09.12 17:22 Сейчас в теме
Без атрибута "Ложь" в ВнешнаяяОбработка = ВнешниеОбработки.Создать(ИмяФайла,Ложь) включался безопасный режим на 8.2.15.310. Остальным весьма доволен.
13. TrinitronOTV 14 19.12.12 06:36 Сейчас в теме
14. kabanoff 49 14.01.13 19:37 Сейчас в теме
Судя по скринам написано грамотно.
Спасибо! Протестирую.
15. ketr 125 20.03.13 14:56 Сейчас в теме
Используем УПП 8.2. Вот думаю - будет ли актуальна сейчас данная подсистема. или достаточно типовых средств
16. isn 15 20.03.13 15:05 Сейчас в теме
(15) ketr, У меня возник аналогичный вопрос. Использую версию 1С обычное приложение. Насколько функционал актуален для использования в сторонних обменах?
17. kalyaka 1053 20.03.13 21:40 Сейчас в теме
(15) ketr, (16) isn, Давно я не заглядывал в УПП... Скорее всего в последних версиях УПП еще нет такого механизма (запуск обработок по расписанию), а вот в БП3.0 уже есть стандартная возможность запускать внешние обработки по расписанию. Такая подсистема также должна быть в конфигурации 1С Библиотека стандартных подсистем. Так что выбор за Вами: либо дождаться типового функционала, либо использовать предложенное в статье решение, либо самим выдрать из стандартных подсистем нужное Вам решение.
18. isn 15 17.04.13 12:16 Сейчас в теме
Идея очень интересная. Возможно "прикрутить" функционал к стандартной УТ 10.3?
P.S.Я использую "ПО", которое было создано очень давно и за основу бралось УТ 10.2, а то и более древние релизы. "ПО" защищено вплоть до выполнения обменов.
19. candy_sk 28.06.13 21:55 Сейчас в теме
Я не перестаю удивляться - зачем тратить время на то что уже десятки раз сделано и выложено тут совершенно бесплатно.
Оставьте свое сообщение