Версия для печати темы (https://pro1c.org.ua/index.php?s=63a2355e62e12043716f5bb7e99402b0&showtopic=19127)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программы, внешние компоненты, прочее _ NotificationWindow - интерактивное окно уведомлений в 1С

Автор: Vofka 03.08.14, 19:33



Как в 1С уведомить пользователя о чём-то таком, на что ему надо обратить внимание? Из штатных простых возможностей есть 2 способа:

  1. Ещё с версии 7.7 есть метод Сообщить(), который выводит текст в специальное окошко. Недостатки:
    • это просто текст без какого-либо оформления;
    • его не видно, если у пользователя свёрнута 1С;
    • сообщение не интерактивно (на него нельзя пощелкать).
  2. В версии 8.2 добавили метод ПоказатьОповещениеПользователя(). Это уже на много лучше: можно и клацнуть, можно показать даже когда 1С свёрнута. Но и тут есть куда стремится:
    • нельзя управлять временем показа окна;
    • нельзя на 2 и более слов или выражений повесить разные обработчики событий;
    • это по прежнему просто текст без возможности его разукрасить, увеличить и т.п.
  3. В 8.3 появился новый объект ФорматированнаяСтрока. Я сам лично с 8.3 пока не работаю, но насколько я понял с его помощью можно разукрашивать текст в интерактивных уведомлениях типо того же ПоказатьОповещениеПользователя(), Предупреждение() и возможно ещё что-то. Если я не прав - поправьте, пожалуйста. Благодаря этому уходит последний недостаток, который был описан в пункте выше. Но остальные два по прежнему актуальны.

Что я предлагаю. Внешняя компонента, которая позволяет показывать окошко. Не просто окошко с текстом, а окошко с содержимым в формате html. Таким образом можно делать практически любое оформление сообщения (в т.ч. вставлять gif картинки). Но это ещё не все. В html-е можно вешать обработчики нажатия на элементы (ссылки, кнопки), которые можно отловить в 1С в обработке внешнего события. Об этом расскажу ниже.

Суть происходящего, надеюсь ясна. Теперь расскажу как пользоваться.

У окна есть 4 свойства:
  1. Title
    Использование: Чтение и запись
    Тип: Строка
    Описание: получает и устанавливает заголовок окошка.

    Body
    Использование: Только чтение
    Тип: Строка
    Описание: получает содержимое окна, которое было установлено методом Show().

  2. AllowDrag
    Использование: Чтение и запись
    Тип: Булево
    Описание: Истина - пользователь может перетягивать окошко в другое место, Ложь - окно не перетаскивается.

  3. AllowHide
    Использование: Чтение и запись
    Тип: Булево
    Описание: Истина - окно можно закрыть интерактивно, Ложь - интерактивно окно закрыть нельзя. Если свойство установлено в Истина, то справа вверху есть кнопка закрытия, если в Ложь - то кнопки закрытия нету.


Поддерживаемые методы:


Для работы нужен .Net Framework 4.
Работоспособность проверялась на ОС Windows 7 (x32) и платформе 1С:Предприятие 8.2 (8.2.19.90) в режиме управляемого приложения. Должно работать и в обычном приложении и на платформе 8.1 и 7.7 (но я это не проверял).

Прилагаю к посту саму компоненту, пример использования в виде конфигурации 1С и файл, которым компоненту надо регистрировать. Регистрацию нужно запускать от имени администратора.

Вопросы, предложения, пожелания, благодарности можно оставлять тут smile.gif .

ПС. кто не видел, советую так же ознакомиться со старшим братом NotificationWindow-а - компонентой http://pro1c.org.ua/index.php?showtopic=13022 smile.gif .

Сама компонента:  NotificationWindow.zip ( 13,34 килобайт ) : 79

Регистратор компоненты (не забудьте поменять путь к компоненте; в моем случае это C:\Component\NotificationWindow.dll):  RegAddIn.zip ( 376 байт ) : 52

ЦФ-ник с примером использования:  NotificationWindow_Demo.zip ( 11,56 килобайт ) : 70


© Моё.

Автор: Vofka 20.08.14, 7:50

Неудачная была идея?

Автор: DartRomanius 20.08.14, 8:42

Цитата(Vofka @ 20.08.14, 8:50) *
Неудачная была идея?


Не думаю, на досуге посмотрю.
Может будут идеи....

Автор: Batchir 20.08.14, 18:59

Лично для меня было бы очень полезно ели бы сервер мог сгенерировать оповещение пользователю, а клиент его отловить и отобразить, а если как опция вместо оповещения пользователю просто генерировать внешнее событие, то вообще цены бы не было.
Но это мечты ...

Автор: Vofka 20.08.14, 19:26

Цитата(Batchir @ 20.08.14, 19:59) http://pro1c.org.ua/index.php?act=findpost&pid=90416
Может будут идеи....

Если что - пишите smile.gif

Автор: DartRomanius 21.08.14, 8:46

Vofka, cvs используешь какой?

Автор: Batchir 21.08.14, 14:08

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

Автор: Vofka 21.08.14, 21:55

Batchir, в моём решении так и есть: сервер может отправлять произвольные сообщения клиентам в виде внешних событий. Так же клиенты могут обмениваться произвольными сообщениями между собой, без записи и опроса в базе данных. Но это отдельное решение и отдельный программный комплекс, не касающийся этой темы smile.gif .

Автор: Batchir 22.08.14, 19:08

А вот это действительно классная штука.

С удовольствием бы поюзал, недавно как раз очень нужно было.
УФ. Использовал новый механизм http-сервис 8.3.5, внешний источник слал пост запросы и в базе происходили изменения.
Причем необходимо было что б об этих изменениях сразу узнавал конкретный клиент.
Ничего подходящего не нашел и пришлось гкодить. А с твоей разработкой красота бы получилась.

Автор: bavkyz 20.09.21, 6:56

Добрый, подскажите, а для x64 есть dll ?


Vofka Сама компонента: Прикрепленный файл NotificationWindow.zip * ,


Очень интересная разработка)))

А исходники можно как то получить ... для x64 сделать и прозрачность). Спасибо.

Автор: Vofka 20.09.21, 9:13

bavkyz, это делалось 7 лет назад, поэтому я не уверен, что исходники где-то сохранились. По крайней мере что бы прямо сейчас их откуда-то достать - я не знаю откуда.

Автор: bavkyz 20.09.21, 9:30

Vofka @ Сегодня, 14:13 * ,

Жалко, идея с html отличная.
Посмотрите может попадутся на глаза исходники или подскажите может видели что то похожее на Вашу разработку.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua