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

27.12.11

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

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Введение

Первая идея создания подсистемы у  меня родилась во время использования 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. Регламентные задания сеанса пользователя

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

Метаданные

Вид

Общие модули

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

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

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

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

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

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

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

Справочники

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

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

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

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

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

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

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

 

См. также

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

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

12000 руб.

02.09.2020    169308    937    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12618    99    42    

101

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

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

9360 руб.

17.05.2024    26539    90    48    

134

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

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

22200 руб.

06.10.2023    16832    41    15    

75

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

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

15000 руб.

10.11.2023    11399    40    27    

66

SALE! %

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

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

4800 3840 руб.

14.01.2013    190554    1150    0    

918

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    783    2    0    

4

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

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

5000 руб.

07.02.2018    103934    244    100    

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

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



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

1. Misanets 341 26.12.11 13:59 Сейчас в теме
Что ж, интересно, будем смотреть. А вот файлы можно было-бы и архивом выложить.
2. almas 258 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 1114 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 16 19.12.12 06:36 Сейчас в теме
14. kabanoff 49 14.01.13 19:37 Сейчас в теме
Судя по скринам написано грамотно.
Спасибо! Протестирую.
15. ketr 129 20.03.13 14:56 Сейчас в теме
Используем УПП 8.2. Вот думаю - будет ли актуальна сейчас данная подсистема. или достаточно типовых средств
16. isn 15 20.03.13 15:05 Сейчас в теме
(15) ketr, У меня возник аналогичный вопрос. Использую версию 1С обычное приложение. Насколько функционал актуален для использования в сторонних обменах?
17. kalyaka 1114 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 Сейчас в теме
Я не перестаю удивляться - зачем тратить время на то что уже десятки раз сделано и выложено тут совершенно бесплатно.
Оставьте свое сообщение