Устанавливает наклейку уведомления поверх кнопки программы на панели задач. Работает под Windows 7 и старше, а также Ubuntu Unity. Под другими ОС не производит никаких действий.
Синтаксис
УстановитьНаклейку(<Картинка>, <СкрытьПриВыборе>)УстановитьНаклейку(<Число>, <СкрытьПриВыборе>)Примеры платформы
ПанельЗадачОС.УстановитьНаклейку(БиблиотекаКартинок.Иконка1, Истина);
ПанельЗадачОС.УстановитьНаклейку(77);Полное описание, параметры и ограничения
МенеджерПанелиЗадачОС.УстановитьНаклейку (OSTaskbarManager.SetBadge)
МенеджерПанелиЗадачОС (OSTaskbarManager)
УстановитьНаклейку (SetBadge)
Доступен, начиная с версии 8.3.8.
Вариант синтаксиса: ИзКартинки
Синтаксис:
УстановитьНаклейку(<Картинка>, <СкрытьПриВыборе>)
Параметры:
<Картинка> (обязательный)
Тип: Картинка.
Иконка, которая будет отображаться в правом нижнем углу кнопки программы на панели задач.
Формат картинки – любой, но рекомендуется использовать файл в формате ".ico", размер картинки – 16x16 пикселей (рекомендуется также иметь картинки для размеров 20х20 и 24х24 пикселей).
<СкрытьПриВыборе> (необязательный)
Тип: Булево.
Если установлено значение Истина, то иконка будет убрана при нажатии на кнопку программы на панели задач или при программной активации окна приложения (например, при получении окном фокуса, при открытии формы).
Значение по умолчанию: Ложь.
Описание варианта метода:
Устанавливает значок из картинки.
Вариант синтаксиса: ИзЧисла
Синтаксис:
УстановитьНаклейку(<Число>, <СкрытьПриВыборе>)
Параметры:
<Число> (обязательный)
Тип: Число.
Число от 0 до 99, которое будет отображаться в правом нижнем углу кнопки программы на панели задач.
<СкрытьПриВыборе> (необязательный)
Тип: Булево.
Если установленно значение Истина, иконка будет убрана при нажатии на кнопку программы на панели задач или при программной активации окна приложения (например, при получении окном фокуса, при открытии формы).
В ОС Unity параметр игнорируется.
Значение по умолчанию: Ложь.
Описание варианта метода:
Устанавливает числовой значок.
Описание:
Устанавливает наклейку уведомления поверх кнопки программы на панели задач.
Работает под Windows 7 и старше, а также Ubuntu Unity. Под другими ОС не производит никаких действий.
Доступность:
Тонкий клиент, толстый клиент.
Примечание:
Вариант метода с установкой картинки в качестве наклейки уведомления работает только в Windows 7 и старше.
Наклейки на кнопках приложений в панели задач Windows отображаются только, если в свойствах панели задач флажок "Использовать маленькие значки" снят, а в свойствах меню "Пуск" флажок "Крупные значки" - установлен.
Число, которое устанавливается в качестве наклейки уведомления в Windows 7 и старше, должно принадлежать отрезку [0, 99], под Ubuntu Unity - [0, 9999], иначе оно будет заменено на соответствующее граничное значение.
В ОС Ubuntu Unity параметр &СкрытьПриВыборе игнорируется.
Пример:
ПанельЗадачОС.УстановитьНаклейку(БиблиотекаКартинок.Иконка1, Истина);
ПанельЗадачОС.УстановитьНаклейку(77);
Использование в версии:
Доступен, начиная с версии 8.3.8.
Методическая информация
Практические примеры
Панель задач Windows: свой результат1000, картинка, число2 и отдельное принятие
В своем отдельном новом клиенте рассчитайте две собственные строки и уведомите о готовности. Отдельными реальными командами смените картинку на actual count и после принятия запросите удаление только своей наклейки.
Где и как запускать
Свой новый изолированный Windows10/11 VM/client и пустая CF. Только ТонкийКлиент, nativeWindows enum и фактическая версия минимум8.3.14. Сервер helper возвращает только Булево своей CF; не web/mobile/чужая программа.
Подготовка
Будущий ручной опыт — только своя новая изолированная Windows10/11 VM, своя новая пустая CF и ровно один свой тонкий клиент/основное окно. Не рабочая ИБ, не чужая программа, не второй1С клиент и не сгруппированная общая кнопка. Сейчас GUI/ОС/1С/VM и сеть не запускались.
Создайте свою пустую конфигурацию УчебнаяПанельЗадач85. Версия = a5026531-e1e1-479f-8d7c-16a09551b68e, режим совместимости Не использовать, управляемое приложение. Используйте собственную новую локальную учебную ИБ; никаких внешних серверов/процессов или прикладных данных. Метка — идентификация пакета, не криптографическое доказательство принадлежности окна.
Общие → Общие формы: создайте ровно одну управляемую форму ПультПанелиЗадач85. Вставьте весь MAIN в ее модуль. Добавьте эту форму в рабочую область начальной страницы своей конфигурации. Свяжите событие ПриОткрытии с ПриОткрытии(Отказ), не вызывайте его вручную.
Создайте реквизиты СогласенНаОпыт85, СвояКнопкаБылаПустой85, ВижуСвоюНаклейку85 (Булево, исходно Ложь), ВерсияRuntime85/ВерсияОС85/Состояние85 (Строка неограниченной длины), Сумма85 (Число15,2), Количество85 (Число5,0). Выведите три ручных флажка и поля наблюдения; поля наблюдения ТолькоПросмотр=Да.
Создайте ровно три команды формы: ПодготовитьУведомление85, ПоказатьКоличество85, ПринятьРезультат85. Назначьте одноименные обработчики с параметром Команда и выведите три кнопки этих команд. Это реальные команды формы, не кнопки предпросмотра панели задач и не вручную вызываемые handlers.
Проверьте свою конфигурацию для тонкого клиента/сервера, целостность и неподдерживаемые функции. Запускайте только свой собственный новый Windows тонкий клиент. Scalar server helper проверяет имя/версию/единственную форму, возвращает Булево; manager, картинка и строки расчета остаются на клиенте.
ВерсияRuntime85 и ВерсияОС85 показывают действительные строки среды. Менеджер доступен с8.3.8, но проверки Width/Height картинки — с8.3.14; код требует минимум8.3.14 и native Windows_x86/Windows_x86_64. Формат строки версии ОС не угадывается. Windows7+ документированы для наклейки, выбранная собственная VM10/11 — ручная предпосылка, не доказанная GUI-проверка.
До опыта убедитесь вручную, что идентифицирована именно своя отдельная кнопка программы, у нее нет наклейки и отсутствуют другие1С экземпляры/общая группа. При чужой или неясной кнопке STOP. СвояКнопкаБылаПустой85 — только ваше явное подтверждение baseline, не native getter и не гарантия отсутствия гонки.
Справка требует для отображения Windows-наклеек выключенных маленьких значков панели задач и включенных крупных значков меню Пуск. Проверяйте только свой стенд вручную; не меняйте ОС программно. Если настройки недоступны или наклейка не видна, не ставьте флажок наблюдения и остановитесь: отсутствие исключения не доказывает отображение.
Прочитайте всю последовательность: максимум2 установки своей наклейки,1 запрос одного мигания и1 удаление только своей наклейки после принятия результата. Согласие исходноFalse и потребляется один раз. Открытие формы не вызывает manager/OS операции.
Своими двумя подтверждениями пустой кнопки/согласия разрешите опыт и нажмите ПодготовитьУведомление85 один раз. Код сам создает ROW-A750 и ROW-B250, проверяет обе строки, реально вычисляет1000 и количество2. Ни внешний объект, ни файл, ни чужой job/процесс не передаются.
Картинка производится из собственного fixed Base64: PNG16x16 RGB(21,98,232),80 байт. Реальный native BinaryData и Картинка должны дать размер80 и числовые Width16/Height16; Неопределено — STOP. Native допускает любой формат; ICO16/20/24 рекомендован, не обязателен. Никакого неизвестного БиблиотекаКартинок.Иконка1 или скачанного файла.
Первый шаг посылает actual picture badge с СкрытьПриВыборе=Ложь и Сигнализировать(1). Эти процедуры не возвращают успех. Увидев только свою синюю наклейку, поставьте ВижуСвоюНаклейку85 и нажмите ПоказатьКоличество85: свежая полная проверка своего результата предшествует замене картинки actual числом2.
Флажок наблюдения опять сбрасывается. Увидев только свое число2, снова поставьте его и нажмите ПринятьРезультат85. Повторная полная проверка двух строк предшествует actual УдалитьНаклейку(). Вручную убедитесь, что именно своя кнопка снова без наклейки; код пишет лишь ЗапросУдаления, не выдуманный GUI-success.
После ошибки/неизвестного исхода — sticky STOP, без automatic retry/clear/rollback. Наклейка может остаться; не очищайте неизвестное состояние и не переоткрывайте форму ради обхода STOP. Согласие/этапы относятся к экземпляру формы и не обещаны сохраняющимися после закрытия/перезапуска. Не трогайте чужие кнопки и настройки ОС.
&НаКлиенте
Перем СогласиеИспользовано85, Остановка85, Этап85, ВерсияЗапуска85, Строки85, Менеджер85;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если СогласиеИспользовано85 <> Неопределено Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
СогласиеИспользовано85 = Ложь;
Остановка85 = Истина;
СогласенНаОпыт85 = Ложь;
СвояКнопкаБылаПустой85 = Ложь;
ВижуСвоюНаклейку85 = Ложь;
Сумма85 = 0;
Количество85 = 0;
Попытка
ВерсияЗапуска85 = ПроверитьСреду85();
ВерсияRuntime85 = ВерсияЗапуска85;
Этап85 = "Готов";
Остановка85 = Ложь;
Состояние85 = "Проверьте именно свою пустую кнопку и отдельно согласитесь";
Исключение
Остановить85(ОписаниеОшибки());
Отказ = Истина;
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура Остановить85(Причина)
Остановка85 = Истина;
Этап85 = "STOP";
СогласенНаОпыт85 = Ложь;
Состояние85 = "STOP. Исход неизвестен, повтор и автоматическая уборка запрещены. " + Причина;
КонецПроцедуры
&НаКлиенте
Процедура ПодтвердитьШаг85(Команда, ИмяКоманды, НужныйЭтап)
Если ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда <> Команды.Найти(ИмяКоманды)
Или Остановка85 <> Ложь Или Этап85 <> НужныйЭтап
Или ВерсияЗапуска85 <> ПроверитьСреду85() Тогда
ВызватьИсключение "Не совпадает собственная команда, этап или среда опыта";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьСреду85()
#Если ТонкийКлиент Тогда
Информация = Новый СистемнаяИнформация;
Платформа = Информация.ТипПлатформы;
Если Платформа <> ТипПлатформы.Windows_x86 И Платформа <> ТипПлатформы.Windows_x86_64 Тогда
ВызватьИсключение "Нужен собственный Windows thin-client стенд, не веб/мобильный/другая ОС";
КонецЕсли;
Версия = Информация.ВерсияПриложения;
ВерсияОС85 = Информация.ВерсияОС;
Если ТипЗнч(ВерсияОС85) <> Тип("Строка") Или ВерсияОС85 = "" Тогда
ВызватьИсключение "Нет фактической строки версии ОС";
КонецЕсли;
Если ПодтвердитьСвойПакет85() <> Истина Тогда
ВызватьИсключение "Своя новая учебная конфигурация не подтверждена";
КонецЕсли;
Возврат Версия;
#Иначе
ВызватьИсключение "Только собственный тонкий клиент Windows";
#КонецЕсли
КонецФункции
&НаКлиенте
Функция ПроверитьСвойРезультат85()
Если ТипЗнч(Строки85) <> Тип("Массив") Или Строки85.Количество() <> 2 Тогда
ВызватьИсключение "Нет двух собственных строк расчета";
КонецЕсли;
Итог = 0;
Для Индекс = 0 По 1 Цикл
СтрокаДанных = Строки85[Индекс];
Если ТипЗнч(СтрокаДанных) <> Тип("Структура") Или СтрокаДанных.Количество() <> 2
Или ТипЗнч(СтрокаДанных.Код) <> Тип("Строка")
Или ТипЗнч(СтрокаДанных.Сумма) <> Тип("Число") Тогда
ВызватьИсключение "Не совпадает тип или состав собственной строки";
КонецЕсли;
Если (Индекс = 0 И (СтрокаДанных.Код <> "ROW-A" Или СтрокаДанных.Сумма <> 750))
Или (Индекс = 1 И (СтрокаДанных.Код <> "ROW-B" Или СтрокаДанных.Сумма <> 250)) Тогда
ВызватьИсключение "Изменились собственные коды или суммы";
КонецЕсли;
Итог = Итог + СтрокаДанных.Сумма;
КонецЦикла;
Количество = Строки85.Количество();
Если Итог <> 1000 Или ТипЗнч(Количество) <> Тип("Число")
Или Количество <> Цел(Количество) Или Количество < 0 Или Количество > 99 Тогда
ВызватьИсключение "Не совпадает результат или допустимое число наклейки";
КонецЕсли;
Возврат Новый Структура("Сумма,Количество", Итог, Количество);
КонецФункции
&НаКлиенте
Функция СоздатьСвоюКартинку85()
Данные = Base64Значение("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAF0lEQVR4nGMQTXpBEmIY1TCq4cWw1QAAx3hfEKs8pbkAAAAASUVORK5CYII=");
Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
ВызватьИсключение "Не получены собственные двоичные данные картинки";
КонецЕсли;
Размер = Данные.Размер();
Если ТипЗнч(Размер) <> Тип("Число") Или Размер <> 80 Тогда
ВызватьИсключение "Изменились байты собственной картинки";
КонецЕсли;
Картинка = Новый Картинка(Данные, Ложь);
Ширина = Картинка.Ширина();
Высота = Картинка.Высота();
Если ТипЗнч(Ширина) <> Тип("Число") Или ТипЗнч(Высота) <> Тип("Число")
Или Ширина <> 16 Или Высота <> 16 Тогда
ВызватьИсключение "Нет фактической собственной картинки16x16";
КонецЕсли;
Возврат Картинка;
КонецФункции
&НаКлиенте
Процедура ПодготовитьУведомление85(Команда)
Попытка
ПодтвердитьШаг85(Команда, "ПодготовитьУведомление85", "Готов");
Если СогласиеИспользовано85 <> Ложь Или СогласенНаОпыт85 <> Истина
Или СвояКнопкаБылаПустой85 <> Истина Тогда
ВызватьИсключение "Нужно неиспользованное согласие и подтвержденная пустая только своя кнопка";
КонецЕсли;
СогласиеИспользовано85 = Истина;
СогласенНаОпыт85 = Ложь;
СвояКнопкаБылаПустой85 = Ложь;
Строки85 = Новый Массив;
Строки85.Добавить(Новый Структура("Код,Сумма", "ROW-A", 750));
Строки85.Добавить(Новый Структура("Код,Сумма", "ROW-B", 250));
Результат = ПроверитьСвойРезультат85();
СвояКартинка = СоздатьСвоюКартинку85();
Менеджер85 = ПанельЗадачОС;
Если ТипЗнч(Менеджер85) <> Тип("МенеджерПанелиЗадачОС") Тогда
ВызватьИсключение "Не получен настоящий readonly native manager";
КонецЕсли;
Этап85 = "УстановкаКартинки";
Менеджер85.УстановитьНаклейку(СвояКартинка, Ложь);
Менеджер85.Сигнализировать(1);
Сумма85 = Результат.Сумма;
Количество85 = Результат.Количество;
ВижуСвоюНаклейку85 = Ложь;
Этап85 = "Картинка";
Состояние85 = "Запрос картинки отправлен. Увидев свою синюю наклейку, подтвердите ее вручную";
Исключение
Остановить85(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьКоличество85(Команда)
Попытка
ПодтвердитьШаг85(Команда, "ПоказатьКоличество85", "Картинка");
Если СогласиеИспользовано85 <> Истина Или ВижуСвоюНаклейку85 <> Истина Тогда
ВызватьИсключение "Нет собственного опыта или ручного подтверждения именно своей картинки";
КонецЕсли;
Результат = ПроверитьСвойРезультат85();
Этап85 = "УстановкаЧисла";
Менеджер85.УстановитьНаклейку(Результат.Количество, Ложь);
Сумма85 = Результат.Сумма;
Количество85 = Результат.Количество;
ВижуСвоюНаклейку85 = Ложь;
Этап85 = "Число";
Состояние85 = "Запрос собственного числа2 отправлен. Увидев именно его, подтвердите вручную";
Исключение
Остановить85(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПринятьРезультат85(Команда)
Попытка
ПодтвердитьШаг85(Команда, "ПринятьРезультат85", "Число");
Если СогласиеИспользовано85 <> Истина Или ВижуСвоюНаклейку85 <> Истина Тогда
ВызватьИсключение "Нет своего опыта или подтверждения только собственной числовой наклейки";
КонецЕсли;
Результат = ПроверитьСвойРезультат85();
Этап85 = "УдалениеСвоейНаклейки";
Менеджер85.УдалитьНаклейку();
Сумма85 = Результат.Сумма;
Количество85 = Результат.Количество;
ВижуСвоюНаклейку85 = Ложь;
Этап85 = "ЗапросУдаления";
Состояние85 = "Свой результат1000 принят; запрос удаления отправлен. Вручную проверьте пустую свою кнопку";
Исключение
Остановить85(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодтвердитьСвойПакет85()
#Если Сервер Тогда
Если Метаданные.ОбщиеФормы.Количество() <> 1 Или Метаданные.ОбщиеФормы.Найти("ПультПанелиЗадач85") = Неопределено Тогда
ВызватьИсключение "Не совпадает собственный новый учебный пакет";
КонецЕсли;
Возврат Истина;
#Иначе
ВызватьИсключение "Нужен сервер собственного учебного приложения";
#КонецЕсли
КонецФункции
Разбор по шагам
Подготовьте именно свой изолированный стенд и одну свою форму с тремя командами. Проверьте отдельную пустую кнопку, прочитайте все эффекты и отдельно согласитесь.
ПодготовитьУведомление85 создает и полностью проверяет ROW-A750/ROW-B250. Реальные сумма1000 и количество2 не берутся из чужого объекта или пользовательского поля.
Actual native picture создается из своих80 байт и проверяется16x16. Readonly ПанельЗадачОС дает настоящий manager; picture badge и одно мигание сообщают о готовом своем результате.
Самостоятельно увидев свою картинку, подтвердите наблюдение. ПоказатьКоличество85 заново проверяет весь свой result, затем actual badge получает его целое количество2 в диапазоне0..99.
Самостоятельно увидев свое число, снова подтвердите наблюдение. ПринятьРезультат85 заново проверяет1000/2 и только тогда вызывает native УдалитьНаклейку() без аргументов.
Вернитесь к своей кнопке и вручную подтвердите отсутствие наклейки. Native процедуры не дают результата успеха; при неясном исходе STOP без автоматической уборки.
Как проверить результат
У каждого UI шага проверяется именно своя настоящая команда/фаза/среда; старт требует отдельного consumed-согласия и вручную установленного пустого baseline.
Manager взят из readonly global, не создан выдуманным конструктором. Свой icon80-byte BinaryData реально декодируется и дает native16x16 Picture.
Перед каждым последующим OS изменением заново проверяются обе собственные строки и actual1000/2; числовая наклейка получает вычисленное целое0..99, не77 или fake percentage.
Промежуточные состояния разделены настоящими командами и ручными наблюдениями; отсутствуют timers, fake callbacks и автоматический переход через незаметную картинку.
Удаляется только наклейка своей отдельной программы с изначально пустым baseline, не toolbar, progress или чужое окно. Нет claim native readback/GUI-success.
Ожидаемый результат
Ожидаемый ручной результат: Сумма85=1000, Количество85=2; своими наблюдениями подтверждены картинка→число2→пустая своя кнопка. В коде последний этап ЗапросУдаления. GUI и runtime здесь не проверены.
На что обратить внимание
ПанельЗадачОС управляет кнопкой программы, не произвольным process/window handle. Только свой отдельный новый VM/client; package marker не заменяет проверку своей кнопки и не гарантирует отсутствие внешних изменений.
У менеджера нет native progress API и getter наклейки. Здесь число2 — количество результатов, не процент и не OS progressbar.
Native методы могут молча не делать ничего на неподдерживаемой ОС; отсутствие исключения не является доказанным визуальным успехом.
УстановитьКнопки намеренно не вызывается: нет обещания восстановления неизвестного toolbar/empty-array clearing. Повторное замещение кнопок — отдельный документированный контракт, не этот опыт.
Старые native snippets содержат неверные aliases СигнализироватьИконкой и УдалитьЗначок. Урок вызывает actual Сигнализировать и УдалитьНаклейку по сигнатурам.
ДиапазонWindows0..99 проверяется до вызова; native clamping не используется как исправление неверных данных. СкрытьПриВыборе=Ложь задан явно.
После неизвестного исхода нет автоматической очистки, повторов или обещания сохранения consent/state после перезапуска. Здесь нет реальныхGUI/OS/1С/сети/файловых операций.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.