Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Notifier: 1С сообщения в трее
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Хранилище: скачать бесплатно отчеты, обработки, конфигурации, программы, внешние компоненты, литературу > 1С: Предприятие 8 > Программы, внешние компоненты, прочее
Vofka
Внешняя компонента позволяет запускать сообщения в трее Windows.

Подключается компонента стандартным способом:

Если Компонента = Неопределено Тогда
    Если Не ПодключитьВнешнююКомпоненту("AddIn.Notifier") Тогда // исправлено с Pro1c.Notifier
        Предупреждение("Не удалось загрузить компоненту");
        Отказ = Истина;
    КонецЕсли;
    
    Попытка
        Компонента = Новый("AddIn.Notifier");
    Исключение
        Отказ = Истина;
    КонецПопытки;
КонецЕсли;


Использовать её очень просто, компонента имеет всего 3 метода:

  1. Компонента.Create(ПутьКИконке);

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

  2. Компонента.Show(Заголовок, Сообщение, Значок);

    Метод ничего не возвращает. Суть первых двух параметров должна быть понятна по наименованию.
    Третий параметр может принимать значения от 0 до 3. 0 - нет значка, 1 - значок сведений, 2 - значок предупреждения, 3 - значок ошибки;

  3. Компонента.Remove();

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


Собственно все. Где применить можно?
- в тех же типовых с торговым функционалом есть такая вещь, как напоминания о задачах. Все ничего, но вот, если 1С свернута - тогда "до свидания". Но вооружившись Notifier-ом - это теперь не проблема и пользователь всеравно увидит сообщение;
- есть у вас механизм согласования каких-то документов, например, заявок на расходование денежных средств. Для того, чтобы пользователи оперативно реагировали на новые поступившие заявки - покажите им уведомление;
- в 1С происходит работа с почтой? Замечательно! Подайте пользователю маячок о том, что пришла новая корреспонденция;

Нажмите для просмотра прикрепленного файла

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

В общем, применение можно найти очень во многом. Не ограничивайте фантазию smile.gif .

В приложении в архиве находятся:
- сама компонента
- бат-файл, который поможет зарегистрировать компоненту в системе. Единственное что - это надо в него зайти и прописать в 6 строчке путь к компоненте. Можно обойтись и без батника, а зарегать с помощью regasm-а

Компонента работает в тонком и толстом клиенте. Работоспособность проверялась на Windows 7 с присутствующим .Net Framework 4. По идее будет работать на .Net Framework начиная с 3.5. Касаемо оси, я думаю, что и на XP пойдет.

Если, вдруг, появятся какие-то вопросы - спрашивайте.

Скачать 32542460.gif : Нажмите для просмотра прикрепленного файла

ПС. Я лично не проверял, но, по идее, компонента должна работать не только из-под 1С 8.1, 8.2, а и из-под 1С 7.7. Если кто-то проверит и отпишет - будет хорошо smile.gif .

//********************************************************************

26.06.13

Сделал версию 1.1. Добавлено:
- в метод Show() добавлен 4-й параметр типа строка. Для чего он - читайте ниже.
- теперь в методе Show() последние 2 параметра не обязательные. По умолчанию они буду, соответственно, 0 и пустая строка
- самое интересное и, собственно, почему вышла версия 1.1. В методе Show(), как было сказано выше, добавлен 4-й параметр типа строка и метод может выглядеть так:
Компонента.Show(Заголовок, Сообщение, Значок, Данные);

Если пользователь счелкнет по всплывающему сообщению, то в 1С это действие можно будет обработать в методе
ВнешнееСобытие(Источник, Событие, Данные)

В Источник попадет строка Notifier, событие Click, а Данные - это наш 4-й параметр метода Show(). Зачем все это? Я приследовал такую цель: например, в данные можно сериализовать (ЗначениеВСТрокуВнутр()) что угодно, например, какой-то документ, далее передать его компоненте и в обработчике клика можно будет получить этот документ (как ЗначениеИзСтрокиВнутр()) и сделать с ним в 1С все, что угодно, например, открыть его, открыть журнал и спозиционироваться на нем и т.п.
Примечание: ВнешнееСобытие возникнет только, если в данные было передано что-то (не пустая строка).

В общем, пользуйтесь smile.gif .

Скачать версию 1.1: необходимо зарегистрироваться для просмотра ссылки

//********************************************************************

05.07.2013

Сделал версию 1.2.

В новой версии добавле новый метод
Компонента.Activate1C(ЗаголовокСистемы);

В параметре передается строка, которая содержит заголовок текущей системы 1С. Получить эту информацию можно функцией встроенного языка ПолучитьЗаголовокСистемы(). Т.е. Вызов данного метода всегда имеет смысл делать только так:
Компонента.Activate1C(ПолучитьЗаголовокСистемы());

При вызове метода будет показано окно 1С с разворотом на весь экран.

Так же добавлено 2 новых события, которые можно обработать в обработке внешнего события: FileNotFound и 1CNotFound. Их назначение покажу на примере:

Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Источник = "Notifier" Тогда
        Если Событие = "1CNotFound" Тогда
            Сообщить("Не найдена запущеная 1С-ка "+Данные);
        ИначеЕсли Событие = "FileNotFound" Тогда
            Сообщить(Данные);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры


Прикладываю новую версию и демонстрационную обработку, написанную под УТ 2.3, которая мониторит задачи и уведомляет пользователя о таковых.

Скачать Notifier 1.2: Нажмите для просмотра прикрепленного файла
Скачать демонстрационную обработку: Нажмите для просмотра прикрепленного файла

Отдельно ещё выкладываю bat-файл для регистрации компоненты: Нажмите для просмотра прикрепленного файла
Для регистрации нужно либо положить компоненту в корень диска C, либо поменять путь в батнике. Запускать батник нужно от имени администратор.
Vofka
Сделал версию 1.1. Добавлено:
- в метод Show() добавлен 4-й параметр типа строка. Для чего он - читайте ниже.
- теперь в методе Show() последние 2 параметра не обязательные. По умолчанию они буду, соответственно, 0 и пустая строка
- самое интересное и, собственно, почему вышла версия 1.1. В методе Show(), как было сказано выше, добавлен 4-й параметр типа строка и метод может выглядеть так:
Компонента.Show(Заголовок, Сообщение, Значок, Данные);

Если пользователь счелкнет по всплывающему сообщению, то в 1С это действие можно будет обработать в методе
ВнешнееСобытие(Источник, Событие, Данные)

В Источник попадет строка Notifier, событие Click, а Данные - это наш 4-й параметр метода Show(). Зачем все это? Я приследовал такую цель: например, в данные можно сериализовать (ЗначениеВСТрокуВнутр()) что угодно, например, какой-то документ, далее передать его компоненте и в обработчике клика можно будет получить этот документ (как ЗначениеИзСтрокиВнутр()) и сделать с ним в 1С все, что угодно, например, открыть его, открыть журнал и спозиционироваться на нем и т.п.
Примечание: ВнешнееСобытие возникнет только, если в данные было передано что-то (не пустая строка).

В общем, пользуйтесь smile.gif .

Скачать версию 1.1: Нажмите для просмотра прикрепленного файла
Acid
после клика на напоминалке значек из трэя исчезнет?
Vofka
Цитата(Acid @ 26.06.13, 11:20) необходимо зарегистрироваться для просмотра ссылки
после клика на напоминалке значек из трэя исчезнет?

Сам по себе нет. Если надо, чтобы исчез - метод Remove() вам в помощь smile.gif .
Zink
А пароль к архиву(ам) сколько стоит ?
Vofka
Zink, не дорого. Надо всего лишь ознакомиться с правилами форума wink.gif .
Zink
Спасибо, давно не был подзабыл !
Acid
Цитата(Zink @ 26.06.13, 12:48) необходимо зарегистрироваться для просмотра ссылки
А пароль к архиву(ам) сколько стоит ?

Я за пару бутылок пива продам! rulez.gif
Vofka
Сделана версия компоненты 1.2. Первый пост обновлен.
irbis_triffle
Всем доброй ночи.
Простите, может я туплю, но у меня dll не регистрируется посредством regsvr32, т.к. "...Точка входа не найдена..." - во всем описании я не нашел ни слова об архитектуре - библиотека скомпилирована под 32-разрядную систему? (у меня х64)
Заранее благодарен за ответ.
Vofka
irbis_triffle, должно работать и на х86 и на х64. Но я проверял работоспособность именно на Windows 7 х64. Регистрируете с админскими правами?
irbis_triffle
Цитата(Vofka @ 02.08.13, 8:57) необходимо зарегистрироваться для просмотра ссылки
irbis_triffle, должно работать и на х86 и на х64. Но я проверял работоспособность именно на Windows 7 х64. Регистрируете с админскими правами?

Да, все от администратора.
Результат на Win2k8R2-x64:

Результат WinXp-x32:


upset.gif upset.gif upset.gif
Vofka
irbis_triffle, .Net Framework 4 стоит?

Добавлю ещё: попробуйте зарегистрировать компоненту с корня какого-то диска.

Добавлю ещё ещё: тю, ёлы палы, для кого я файл RegAddIn.bat приложил?
irbis_triffle
Цитата(Vofka @ 02.08.13, 14:23) необходимо зарегистрироваться для просмотра ссылки
irbis_triffle, .Net Framework 4 стоит?

Добавлю ещё: попробуйте зарегистрировать компоненту с корня какого-то диска.

Добавлю ещё ещё: тю, ёлы палы, для кого я файл RegAddIn.bat приложил?


Net4 стоит.
С корня тоже не работает.
Ой... я думал он только для первой версии (в архиве со второй его нет). Вот что оно ответило, кажется все в порядке? Но 1с при запуске тестовой обработки говорит "Не удалось зарегистрировать компоненту" (((
Vofka
Долго не отвечал не потому, что просто включил игнор, а потому что не было когда разбираться. Вот дошли руки. Если 1С пишет "Не удалось зарегистрировать компоненту" попробуйте вместо строки

Если Не ПодключитьВнешнююКомпоненту("Pro1C.Notifier") Тогда


написать

Если Не ПодключитьВнешнююКомпоненту("AddIn.Notifier") Тогда
irbis_triffle
Цитата(Vofka @ 14.08.13, 16:51) необходимо зарегистрироваться для просмотра ссылки
Долго не отвечал не потому, что просто включил игнор, а потому что не было когда разбираться. Вот дошли руки. Если 1С пишет "Не удалось зарегистрировать компоненту" попробуйте вместо строки

Если Не ПодключитьВнешнююКомпоненту("Pro1C.Notifier") Тогда


написать

Если Не ПодключитьВнешнююКомпоненту("AddIn.Notifier") Тогда


Большое спасибо! Теперь заработало - буду разбираться с тонкостями!!!
PS прекрасная идея!
Vofka
Спасибо! smile.gif
Fantasisto
Цитата(Vofka @ 20.06.13, 16:44) необходимо зарегистрироваться для просмотра ссылки
В новой версии добавле новый метод
Компонента.Activate1C(ЗаголовокСистемы);

В параметре передается строка, которая содержит заголовок текущей системы 1С. Получить эту информацию можно функцией встроенного языка ПолучитьЗаголовокСистемы(). Т.е. Вызов данного метода всегда имеет смысл делать только так:
Компонента.Activate1C(ПолучитьЗаголовокСистемы());

При вызове метода будет показано окно 1С с разворотом на весь экран.


У меня платформа 8.3.3.721, база УНФ (управляемое приложение).
Там нет функции ПолучитьЗаголовокСистемы(), но есть функция ПолучитьЗаголовокКлиентскогоПриложения().
Она возвращает заголовок приложения, НО функция Activate1C() не открывает окно 1С и выдаётся сообщение, что 1С-ка не открыта.

Какое именно туда значение нужно передать, чтобы окно 1С открылось?

Спасибо.

З.Ы. Шикарная dll-ка!
Vofka
Fantasisto, если вы подготовите демо базу и демо обработку где это все можно посмотреть, я на следующей неделе постараюсь разобраться.
Fantasisto
Цитата(Vofka @ 14.11.13, 13:35) необходимо зарегистрироваться для просмотра ссылки
Fantasisto, если вы подготовите демо базу и демо обработку где это все можно посмотреть, я на следующей неделе постараюсь разобраться.

Я добился того, чтобы окно Активировалось.
НО если оно было свёрнуто, оно не разворачивается, хотя и становится активным.
Как сделать так, чтобы оно ещё и развернулось?
Пытаюсь работать с WshShell, но найти ничего там не могу...

Если же форму не сворачивать, то при активации она выходит на передний план.
Vofka
Должно разворачиваться вообще-то. На досуге проверю ещё.
mut
Для 7.7 просто жизненно необходимая вещь, спасибо! В 8.2 уже привык вставлять ПоказатьОповещениеПользователя()
Vofka
Пожалуйста smile.gif
Стрелок
Доброго времени суток. Простите - не могу зарегистрировать. ваш батник отсутствует по ссылкам. Не могли бы вы текст батника написать сюда
Vofka
Добавил батник отдельно (в конце первого поста).
Стрелок
Доброго дня. Почему то не работает конструкция

Компонента.Activate1C(ЗаголовокСистемы());

окошко 1С не разворачивается

7.7 релиз 27
Vofka
Стрелок, а очень надо, чтобы разворачивалось? smile.gif Потому что насколько я помню (сейчас под рукой нету, проверить не могу) в 7.7 действительно разворачиваться не будет.
Стрелок
ну как бы желательно. хотя и не смертельно wink.gif
Vofka
Если не забуду, в обозримом будущем посмотрю.
Vofka
Стрелок, а что у вас возвращает метод ЗаголовокСистемы() ?

И можно скрин окна 1С?
Evgeny256
Похоже на Windows XP и Server 2003 не заработает, т.к. требует длл-ку DWMAPI.DLL sad.gif sad.gif
Vofka
Я лично на ХР проверял, у меня работало.
NET Framework 4 точно стоит?
Shakronya
Цитата(irbis_triffle @ 02.08.13, 15:43) необходимо зарегистрироваться для просмотра ссылки
Net4 стоит.
С корня тоже не работает.
Ой... я думал он только для первой версии (в архиве со второй его нет). Вот что оно ответило, кажется все в порядке? Но 1с при запуске тестовой обработки говорит "Не удалось зарегистрировать компоненту" (((


Разрешилось как-нибудь? у меня та же проблема. .NET Framework 4 установлен, винда 7я, 32 разрядная, запуская хоть через батник, хоть через regsvr32 - 1с не видит компоненту, и regsvr32 так же пишет, что точки входа нет ((
Vofka
Shakronya, а теперь сначала. Что вы делаете, какие ошибки система пишет или что происходит вообще? У человека, которого вы процитировали, вроде как все решилось, о чем написано в этой же теме.
Shakronya
Ваш батник пишет : give your assembly a strong name. Я , конечно, мало что смыслю в создании библиотек, но вот, что выдал мне гугл:

To create and sign an assembly with a strong name by using the Assembly Linker
At the Visual Studio Command Prompt, type the following command:

al /out:<assemblyName> <moduleName> /keyfile:<keyfileName>

where:

assemblyName
The name of the strongly signed assembly (a .dll or .exe file) that Assembly Linker will emit.

moduleName
The name of a .NET Framework code module (a .netmodule file) that includes one or more types. You can create a .netmodule file by compiling your code with the /target:module switch in C# or Visual Basic.

keyfileName
The name of the container or file that contains the key pair. Assembly Linker interprets a relative path in relationship to the current directory.

The following example signs the assembly MyAssembly.dll with a strong name by using the key file sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk



Цитата(Vofka @ 30.01.15, 10:54) необходимо зарегистрироваться для просмотра ссылки
Shakronya, а теперь сначала. Что вы делаете, какие ошибки система пишет или что происходит вообще? У человека, которого вы процитировали, вроде как все решилось, о чем написано в этой же теме.

Ууупс! Увидела! Спасибо!
Vofka
Shakronya, от имени Администратора запускаете?
Shakronya
Цитата(Vofka @ 30.01.15, 11:10) необходимо зарегистрироваться для просмотра ссылки
Shakronya, от имени Администратора запускаете?


Суперски! Спасибо Вам большое за прекрасную dll! Работаем на УПП =) 32000000.gif

Единственное, не разворачивает 1Ску метод Activate1C(ПолучитьЗаголовокСистемы()). При том, что заголовок системы формируется примерно такой: "Управление производственным предприятием "ООО Рога и копыта" / Эллочка Людоедова / Управление производственным предприятием, редакция 1.3 /"
Vofka
Цитата(Shakronya @ 30.01.15, 12:39) необходимо зарегистрироваться для просмотра ссылки
Единственное, не разворачивает 1Ску метод Activate1C(ПолучитьЗаголовокСистемы()). При том, что заголовок системы формируется примерно такой: "Управление производственным предприятием "ООО Рога и копыта" / Эллочка Людоедова / Управление производственным предприятием, редакция 1.3 /"

Прямо сейчас не готов что-то ответить/посоветовать по этому вопросу. Я уже и забыл что там к чему.
Shakronya
Цитата(Vofka @ 02.02.15, 10:15) необходимо зарегистрироваться для просмотра ссылки
Прямо сейчас не готов что-то ответить/посоветовать по этому вопросу. Я уже и забыл что там к чему.

Даешь исходники библиотеки в массы! 32542460.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.