В данной публикации предлагаю:
для обычного приложения — обработку, которая инкапсулирует все необходимые махинации с СОМ-объектами.
для управляемого приложения — cf-файл с необходимыми объектами.
Создано на основе публикации http://infostart.ru/public/267819/
Основная идея разработки — это один раз инициализировать систему, а затем вызывать мигание, когда это необходимо.
Для обычного приложения.
Решение основано на дополнительной обработке «Мигание значка на панеле задач», которую необходимо вставить в конфигурацию. Алгоритм внедрения:
1. Добавить в конфигурацию новую обаботку «Мигание значка на панеле задач».
2. В модуле обычного приложения, в разделе объявления переменных добавить:
Перем ОбработкаМиганияЗначка Экспорт;
3. В модуле обычного приложения в начале процедура «ПриНачалеРаботыСистемы» добавить:
Процедура ПриНачалеРаботыСистемы()
//объекты для вызова "мигания" окна
ОбработкаМиганияЗначка=обработки.МиганиеЗначкаНаПанелеЗадач.Создать();
ОбработкаМиганияЗначка.Инициализировать();
//.........
КонецПроцедуры
После этого достаточно в том месте программы, в котором необходимо уведомить пользователя, вставить:
//Вызвать мигание окна, если оно не активно
ОбработкаМиганияЗначка.Мигнуть();
Для управляемого приложения.
Для управляемого приложения все несколько усложняется в виду того, что модуль обработки исполняется на сервере, а «мигать» надо на клиенте. Кроме того, управляемое приложение может иметь множество окон и охота выбирать, каким окном мигать.
Решение для управляемого приложения предлагается в виде мини-конфигурации, содержащей только необходимые объеты. Для ее внедрения необходимо выполнить сравнение и объединение. ВНИМАНИЕ! При сравнении и объединении лучше снимите галочки с ветки «Свойства», чтобы не потерять данные своих модулей.
Если вы хорошо понимаете, как проходят процессы сравнения и объединения, то может вручную настроить объединение только моудля управляемого приложения. Остальные модули в прилагаемой конфигурации пусты.
В конфигурации содержатся:
1. Модуль управляемого приложения
2. Подсистема «МиганиеОкон»
3. Общие модули «МиганиеКлиент» и «МиганиеСервер»
4. Общий макет «DynamicWrapper32».
После объединения конфигураций убедитесь, что в модуле управляемого приложения в разделе объявления переменных у вас есть:
//Переменны для управления миганием окон
Перем ApiFunctions Экспорт;
Перем НомерОкна1с Экспорт;
Перем НомерОкнаМигания Экспорт;
//
В начале процедуры «ПриНачалеРаботыСистемы»:
//Инициализация компонент
МиганиеКлиент.Инициализировать();
После этого можно сохранять конфигурацию.
Для управляемого приложения предусмотрено две экспортные процедуры общего модуля «МиганиеКлиент»:
1. МигатьЭтимОкном() — позволяет установить текущее окно тем, которое будет мигать на панеле задач при вызове процедуры «Мигнуть()»;
1. Мигнуть() — начинает мигать окном, для которого было вызвано МигатьЭтимОкном(). Если это окно не существует или было не задано, то мигает основное окно 1С.
Пример использования:
&НаКлиенте
Процедура ПолучитьСписокФайлов(Команда)
МиганиеКлиент.МигатьЭтимОкном();
ПолучитьСписокФайловНаСервере();
МиганиеКлиент.Мигнуть();
КонецПроцедуры
Всем успехов!
Зачем так заморачиваца, подобную проблему решили очень просто…
В 1с:Документооборот при появлении новой задачи выходило модальное окно
и если 1с была свернута то она начинала мигать…
(1) ezhik_2000, Изначально задача стояла не для докуметооборота ) И модальные окна выводить не охота.
что-то не работает мигание 🙁
имею документооборот 1.4.11.2
на платформе 8.3.5.1517
скачал Вашу конфигурацию. объединил как написано. проверил модуль управ-го приложения. там нужных абзацев не было.
я их дописал.
сохранил конф-ию. зашёл под двумя разными пользователями. создал процесс ознакомления. отправил. у другого пользователя ни одно окно/значок не замигал.
в чём моя ошибка?
(3) ruziya, проверьте на отладчике, регистрируется ли у вас компонента?
а где это можно увидеть в отладчике?
не очень ориентируюсь.
подскажите где в отладчике смотреть, пожалуйста
процедура инициализации не проходит.
нет регистрации
что делать?
Платформа умеет сама мигать своим значком…
Кхм…
WshShell = Новый COMОбъект(«Wscript.Shell»);
WshShell.AppActivate(«1С:Предприятие»);
ПанельЗадачОС.СигнализироватьИконкой(3);