gifts2017

Сообщение всем пользователям о запуске тяжелой обработки

Опубликовал Павел Горский (gorski) в раздел Обработки

Сообщение пользователям о запуске и завершении выполнения "тяжелой" обработки.

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

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

1) В модуле обычного приложения необходимо поместить следующий код:

Перем гСообщение Экспорт; 

Процедура ПрочитатьСообщение() Экспорт

     Сообщение = Константы.Сообщение.Получить();
     Если ЗначениеЗаполнено(Сообщение) Тогда
          Если Сообщение <> гСообщение Тогда
               гСообщение = Сообщение;
               Предупреждение(Сообщение, 30);
          КонецЕсли;
     КонецЕсли; 

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

 

Процедура ПриНачалеРаботыСистемы()

    ПодключитьОбработчикОжидания("ПрочитатьСообщение", 1);
    ...

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

 

(Текст кода также продублирован в справке к обработке) 

 

2) Добавить константу с именем Сообщение и типом "Строка" неограниченной длины

 

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


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

Наименование Файл Версия Размер Кол. Скачив.
Сообщение всем пользователям о запуске обработки
.epf 8,38Kb
18.09.13
12
.epf 1.0 8,38Kb 12 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Rom Shpakoff (Lancelot-2M) 19.09.13 17:13
по тому же принципу выгонялки вставляю
2. Павел Горский (gorski) 19.09.13 18:22
Да, принцип тот же. В составе стандартных библиотек типовых решений есть механизм «Блокировка работы пользователей» и существует соответствующая обработка БлокировкаРаботыПользователей.epf от 1С.
Прикрепленные файлы:
БлокировкаРаботыПользователей.epf
3. Олег Кострицын (recon) 19.09.13 21:29
Сообщение = Константы.Сообщение.Получить();


Мне кажется при такой строке у вас будут избыточные блокировки
ИМХО лучше хранение сообщений сделать регистром сведений, куда каждому пользователю помещать сообщение в виде отдельной записи.
4. Павел Горский (gorski) 19.09.13 21:49
Мне кажется при такой строке у вас будут избыточные блокировки


Если я не ошибаюсь, то блокировки работают только в транзакции. Не помещайте код в транзакцию и все будет хорошо.
Об использовании регистра сведений я писал в PS - более функциональное решение. Идея в использовании обработчика ожидания, а не в использовании константы.
5. Константин Гаевский (zzz14) 26.09.13 09:22
(3) recon,

Если версия платформы >= 8.2.14 и база работает без режима совместимости, то каждая константа хранится в отдельной таблице, поэтому блокировкам взяться неоткуда.
6. Павел Горский (gorski) 26.09.13 12:21
(5) zzz14, Спасибо.

"Изменения, влияющие на поведение системы

- При отключенном режиме совместимости изменен режим хранения констант и настроек регистров накопления. Для каждого объекта используется своя таблица базы данных. При включении режима совместимости (в значение "Версия 8.2.13" или "Версия 8.1") выполняется обратная конвертация для обеспечения возможности запуска прикладного решения с помощью версии 8.2.13."
Источник: http://downloads.v8.1c.ru/content/Platform/8_2_14_540/V8Update.htm
7. andrey dyak (dyak84) 30.09.13 12:29
Да идея хорошая но осмелюсь задать вопрос а зачем запускать чтото особо тяжелое е еще всем подряд. Таких вещей не должно быть в коенфигурации в принципе. Если так подходить к работе то никаких мощностей не хватит. Работать нужно головой а не издеватся над програмой.
8. Павел Горский (gorski) 30.09.13 16:29
(7) dyak84, попал пальцем в небо...

Обработка запускается не всеми подряд, а одним пользователем в общей базе. Это сообщения получают все, что сейчас сервер будет нагружен. Посмотри статистику загруженности серверов на разных предприятиях на сайте gilev.ru, тогда поймешь суть проблемы. Это не часть конфигурации, а внешняя обработка. Причин может быть много - это был персональный заказ клиента. Детали ТЗ оставлю без описания.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа