Как выдать сообщение всем пользователям (для управляемого приложения)

04.03.15

Разработка - Универсальные функции

Как вывести сообщение всем активным пользователям системы 1С:Предприятие. Задача достаточно простая, но все же есть несколько нюансов, если вы имеете дело с управляемым приложением.

Итак нам понадобится организовать сторону отправителя и сторону получателей сообщения.

Сторона отправителя будет реализована в виде обработки, а точнее нам понадобится только форма обработки:

Код формы:

 

&НаСервереБезКонтекста
Процедура ОтправитьНаСервере(Сообщение)
Константы._Сообщение.Установить(Сообщение);
КонецПроцедуры

&НаКлиенте
Процедура Отправить(Команда)
гПользовательОтправляющий = ИмяПользователя();
ОтправитьНаСервере(Сообщение);
Сообщение=""; 
КонецПроцедуры


 

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

При старте системы необходимо очистить константу, хранящую выводимое сообщение, иначе при входе система будет выдавать последнее отправленное сообщение, что нужно не всегда. Там же подключаем обработчик ожидания, запускающий процедуру проверки: "Не нужно ли выдать сообщение".

При чем, сообщение не должно выводится отправляещему пользователю. В моём случае оно должно "висеть" пока пользователь его не закроет, за это отвечает второй параметр метода "Предупреждение".

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

 

Перем гСообщение Экспорт;
Перем гПользовательОтправляющий Экспорт;
///////////////////////////////////////////////////////////////////////////////////////////
Процедура ПриНачалеРаботыСистемы()
гСообщение = Доработки.ПолучитьЗначениеКонстанты();
ПодключитьОбработчикОжидания("ПрочитатьСообщение", 1);
... 

Процедура ПрочитатьСообщение() Экспорт 
Сообщение = Доработки.ПолучитьЗначениеКонстанты();
Если ЗначениеЗаполнено(Сообщение) Тогда
Если Сообщение <> гСообщение Тогда 
гСообщение = Сообщение; 
Если гПользовательОтправляющий<>ИмяПользователя() Тогда
Предупреждение(Сообщение,0); 
Иначе
ПоказатьОповещениеПользователя("Сообщение отправлено: 
|"+Сообщение);
КонецЕсли;
КонецЕсли;
КонецЕсли; 
КонецПроцедуры


Для получения и установки значения константы. Необходимо добавить общий модуль с установленными свойствами: Сервер,ВызовСервера. У меня он называется "Доработки". Его код:

 

Функция ПолучитьЗначениеКонстанты() Экспорт 
Возврат Константы._Сообщение.Получить(); 
КонецФункции

Процедура УстановитьЗначениеКонстанты(Строка) Экспорт 
Константы._Сообщение.Установить(Строка); 
КонецПроцедуры


И последний нюанс. Создать константу "_Сообщение" с типом "Строка".


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

См. также

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4309    atdonya    22    

41

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

30.11.2023    3880    ke.92@mail.ru    16    

60

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8555    YA_418728146    6    

139

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2019    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

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

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16010    131    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7196    quazare    8    

108
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Alexey_ 26 05.03.15 09:46 Сейчас в теме
Ситуация: в базе находятся не все пользователи или вообще никого, устанавливаем значение константы, сразу же заходит какой-то пользователь и стирает значение в константе
Доработки.УстановитьЗначениеКонстанты("");

и никто не прочитает "сообщение"
sergelemon; ded00786; Fox-trot; +3 Ответить
4. Nik_1c_bitrix 191 06.03.15 14:10 Сейчас в теме
(1) Alexey_, исправил. Строку очищающую константу заменил на гСообщение = Доработки.ПолучитьЗначениеКонстанты();
Спасибо за внимание к статье.
2. Жолтокнижниг 258 06.03.15 09:58 Сейчас в теме
В 1с появился спящий режим и таким подходом мы убиваем этот функционал. Надо придумывать что - то новое.
3. Nik_1c_bitrix 191 06.03.15 14:07 Сейчас в теме
(2) Жолтокнижниг, это в зависимости от того какая стоит задача. Продолжать спать или проснуться.
5. galich 162 06.03.15 16:10 Сейчас в теме
На большом количестве пользователей проблемы с блокировками таблицы констант обеспечены.
6. Nik_1c_bitrix 191 06.03.15 16:39 Сейчас в теме
(5) galich, даже при условии что отправлять имеет право только 1 пользователь?
7. karapuzzzz 63 11.03.15 13:26 Сейчас в теме
Зачем Константа? Если пользователь захочет отправить еще одно сообщение, то предыдущее уже никто не увидит. Регистр сведений с данными:
Измерения:
    Получатель - Справочник.Пользователи
    Отправитель - Справочник.Пользователи
    Сообщение - Строка(150)
    Дата - ДатаВремя
Сообщение в измерениях, чтобы реализовать возможность отправки нескольких сообщений от одного отправителя одному адресату.

Создать такой регистр вместо константы и реализовать обмен сообщениями. Сложность не особо возрастет, а эффект будет огромный.
10. Nik_1c_bitrix 191 12.03.15 13:37 Сейчас в теме
(7) karapuzzzz, читайте внимательно поставленную задчу: "Как вывести сообщение всем активным пользователям системы 1С:Предприятие". Ваш вариант: А если нужно выводить сообщение не только активным а всем, тогда...
8. jobkostya1c_ERP 100 11.03.15 20:58 Сейчас в теме
Не понял, это опять конфу править с Вашей константой?
11. Nik_1c_bitrix 191 12.03.15 13:39 Сейчас в теме
(8) kostyaomsk, что вы имеете в виду? Программирование при помощи мантр или заклинаний , тогда конфу править не нужно? Или что-то другое?
9. dimassm 12.03.15 10:21 Сейчас в теме
Ну т.е. обработчик ожидания с таймингом 1 сек это вообще очень круто
12. Nik_1c_bitrix 191 12.03.15 13:42 Сейчас в теме
(9) dimassm, Ваше право поставить любое другое значение, которое вас будет устраивать. Я писал под конфигурацию в которой уже есть один обработчик ожидания, с интервалом в секунду, поэтому механизм просто туда добавлен.
13. ben19791010 18.03.15 05:25 Сейчас в теме
(12) Спасибо. А то на УФ для файловых не получилось сделать.
14. Stim213 415 23.03.15 10:20 Сейчас в теме
эхх. ожидал что-то крутое, без изменения конфигурации, а тут константа с обработчиком ожидания((

15. kirk_ufa 26.03.16 15:01 Сейчас в теме
почему-то не работает. если у общего модуля проставить только галки Сервер,ВызовСервера, при вызове из модуля управляемого приложения пишет что Переменная не определена. если поставить галку клиента, то соответственно весь модуль не работает т.к. сделан под сервер, но в модуле управляемого приложения ошибок нет - он его находит.
з.ы. похоже это из-за галки "глобальный"
16. 77Viktor77 1 21.07.21 17:46 Сейчас в теме
Здравствуйте. подскажите пожалуйста что такое в форме "Сообщение" - это реквизит формы и с каким Типом?
17. Nik_1c_bitrix 191 21.07.21 17:48 Сейчас в теме
(16) Строка обычная, реквизит формы
18. 77Viktor77 1 21.07.21 17:55 Сейчас в теме
(17)Спасибо, а что тогда писать сюда ?
гСообщение = Доработки.ПолучитьЗначениеКонстанты();
ПодключитьОбработчикОжидания("ПрочитатьСообщение", 1);
ОткрытьФорму("ВнешняяОбработка.ВнешняяОбработкаСообщениеВсем.Форма.Форма");
,,,, что дальше как закончить?
19. Nik_1c_bitrix 191 21.07.21 17:57 Сейчас в теме
там идет код вашей конфигурации, если там пусто то ничего
20. 77Viktor77 1 22.07.21 12:10 Сейчас в теме
(19)Процедура ПриНачалеРаботыСистемы() В каком общем модуле он находится? Так как у меня несколько точек входа!
21. 77Viktor77 1 22.07.21 13:21 Сейчас в теме
Ругается на: Процедура или функция с указанным именем не определена (ПодключитьОбработчикОжидания)
Процедура или функция с указанным именем не определена (Предупреждение)
Процедура или функция с указанным именем не определена (ПоказатьОповещениеПользователя)
22. Serg O. 224 21.02.24 10:27 Сейчас в теме
очень старая статья ... 1С уже сделала несколько систем уведомлений
например см. Уведомления по объектам и событиям https://its.1c.ru/db/metod8dev/content/5880/hdoc
Оставьте свое сообщение