Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> NotificationWindow - интерактивное окно уведомлений в 1С          
Vofka Подменю пользователя
сообщение 03.08.14, 19:33
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Прикрепленный файл  Окно_03_08_2014.png ( 3,11 килобайт ) Кол-во скачиваний: 32


Как в 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
    Использование: Чтение и запись
    Тип: Булево
    Описание: Истина - окно можно закрыть интерактивно, Ложь - интерактивно окно закрыть нельзя. Если свойство установлено в Истина, то справа вверху есть кнопка закрытия, если в Ложь - то кнопки закрытия нету.


Поддерживаемые методы:
  • Show(<Тело>, <Время>)
    Параметры:
    <Тело>
    Тип: Строка
    Это html, который отобразится в окошке. Так же это то, что будет получено в свойстве Body. Пример:
    Тело = "
    |<a href=""#"" onclick=""ExternalEvent('ЩелчокПоСсылке', 'Данные')""><b>Ссылка</b></a>
    |<br />
    |<input type=""button"" value=""Кнопка"" onclick=""ExternalEvent('ЩелчокПоКпопке', 'Данные')"" />
    |";

    Обработчик ExternalEvent('Параметр1', 'Параметр2') говорит окошку о том, что при щелчке нужно запустить внешнее событие в 1С. Внешнее событие будет приходить от NotificationWindow, имя события задается в первом параметре, данные можно передать во втором.

    <Время> (необязательный)
    Тип: Число
    Количество секунд после которых окошко само закроется. Если не надо, чтобы само закрывалось - параметр можно не указывать либо указать 0.
    Если время больше 0, то окно само закроется и сгенерирует в 1С внешнее событие от NotificationWindow с именем события WindowHide и в данных передаст Body. Body можно сохранить где-то для подальшей обработки (в примере приложенной конфигурации можно посмотреть что имелось ввиду).

  • ShowFromUrl(<Урл>)
    Параметры:
    <Урл>
    Тип: Строка
    Адрес веб страницы, которую надо отобразить в окне

  • Hide()
    Спрятать окошко

  • SetBackground(<R>, <G>, <B>)
    Параметры:
    <R>, <G>, <B>
    Тип: Число
    Значения параметров R, G, B в представлении цвета в виде RGB

  • SetHeight(<Высота>)
    Параметры:
    <Высота>
    Тип: Число
    Высота окошка

  • SetWidth(<Ширина>)
    Параметры:
    <Ширина>
    Тип: Число
    Ширина окошка

  • BottomRight()
    Устанавливает окошко в правом нижнем углу экрана


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

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

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

ПС. кто не видел, советую так же ознакомиться со старшим братом NotificationWindow-а - компонентой Notifier-ом smile.gif .

Сама компонента: Прикрепленный файл  NotificationWindow.zip ( 13,34 килобайт ) Кол-во скачиваний: 79

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

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


© Моё.

Сообщение отредактировал Vofka - 23.09.14, 18:14

Спасибо сказали: Batchir, bavkyz, bicu, DartRomanius,

Vofka Подменю пользователя
сообщение 20.08.14, 7:50
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

DartRomanius Подменю пользователя
сообщение 20.08.14, 8:42
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

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


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


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Batchir Подменю пользователя
сообщение 20.08.14, 18:59
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

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

Сообщение отредактировал Batchir - 20.08.14, 19:08

Vofka Подменю пользователя
сообщение 20.08.14, 19:26
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Цитата(Batchir @ 20.08.14, 19:59) *
Лично для меня было бы очень полезно ели бы сервер мог сгенерировать оповещение пользователю, а клиент его отловить и отобразить, а если как опция вместо оповещения пользователю просто генерировать внешнее событие, то вообще цены бы не было.
Но это мечты ...

Это не мечты. Есть у дяди Вовы "кое что" для решения и этого вопроса: с внешним событием и все такое 32542460.gif

Цитата(DartRomanius @ 20.08.14, 9:42) *
Может будут идеи....

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

DartRomanius Подменю пользователя
сообщение 21.08.14, 8:46
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

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


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Batchir Подменю пользователя
сообщение 21.08.14, 14:08
Сообщение #7

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

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

Сообщение отредактировал Batchir - 21.08.14, 14:12

Vofka Подменю пользователя
сообщение 21.08.14, 21:55
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

Сообщение отредактировал Vofka - 22.08.14, 7:42

Batchir Подменю пользователя
сообщение 22.08.14, 19:08
Сообщение #9

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

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

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

bavkyz Подменю пользователя
сообщение 20.09.21, 6:56
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

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


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


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

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

Vofka Подменю пользователя
сообщение 20.09.21, 9:13
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

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

bavkyz Подменю пользователя
сообщение 20.09.21, 9:30
Сообщение #12

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 20:12
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!