МенеджерПанелиЗадачОС.УдалитьНаклейку

Методы · RemoveBadge

Удаляет значок уведомления с кнопки программы на панели задач. Работает под Windows 7 и старше, а также Ubuntu Unity (удаляет установленное число на кнопке приложения в Unity Launcher). При работе в других ОС не производит никаких действий.

Синтаксис

УдалитьНаклейку()

Примеры платформы

ПанельЗадачОС.УдалитьЗначок();
Полное описание, параметры и ограничения

МенеджерПанелиЗадачОС.УдалитьНаклейку (OSTaskbarManager.RemoveBadge)

МенеджерПанелиЗадачОС (OSTaskbarManager)

УдалитьНаклейку (RemoveBadge)

Доступен, начиная с версии 8.3.8.

Синтаксис:
УдалитьНаклейку()
Описание:

Удаляет значок уведомления с кнопки программы на панели задач.
Работает под Windows 7 и старше, а также Ubuntu Unity (удаляет установленное число на кнопке приложения в Unity Launcher).
При работе в других ОС не производит никаких действий.

Доступность:

Тонкий клиент, толстый клиент.

Пример:

ПанельЗадачОС.УдалитьЗначок();

Использование в версии:

Доступен, начиная с версии 8.3.8.

Методическая информация

Практические примеры

Панель задач Windows: свой результат1000, картинка, число2 и отдельное принятие

В своем отдельном новом клиенте рассчитайте две собственные строки и уведомите о готовности. Отдельными реальными командами смените картинку на actual count и после принятия запросите удаление только своей наклейки.

Где и как запускать

Свой новый изолированный Windows10/11 VM/client и пустая CF. Только ТонкийКлиент, nativeWindows enum и фактическая версия минимум8.3.14. Сервер helper возвращает только Булево своей CF; не web/mobile/чужая программа.

Подготовка

  1. Будущий ручной опыт — только своя новая изолированная Windows10/11 VM, своя новая пустая CF и ровно один свой тонкий клиент/основное окно. Не рабочая ИБ, не чужая программа, не второй1С клиент и не сгруппированная общая кнопка. Сейчас GUI/ОС/1С/VM и сеть не запускались.

  2. Создайте свою пустую конфигурацию УчебнаяПанельЗадач85. Версия = a5026531-e1e1-479f-8d7c-16a09551b68e, режим совместимости Не использовать, управляемое приложение. Используйте собственную новую локальную учебную ИБ; никаких внешних серверов/процессов или прикладных данных. Метка — идентификация пакета, не криптографическое доказательство принадлежности окна.

  3. Общие → Общие формы: создайте ровно одну управляемую форму ПультПанелиЗадач85. Вставьте весь MAIN в ее модуль. Добавьте эту форму в рабочую область начальной страницы своей конфигурации. Свяжите событие ПриОткрытии с ПриОткрытии(Отказ), не вызывайте его вручную.

  4. Создайте реквизиты СогласенНаОпыт85, СвояКнопкаБылаПустой85, ВижуСвоюНаклейку85 (Булево, исходно Ложь), ВерсияRuntime85/ВерсияОС85/Состояние85 (Строка неограниченной длины), Сумма85 (Число15,2), Количество85 (Число5,0). Выведите три ручных флажка и поля наблюдения; поля наблюдения ТолькоПросмотр=Да.

  5. Создайте ровно три команды формы: ПодготовитьУведомление85, ПоказатьКоличество85, ПринятьРезультат85. Назначьте одноименные обработчики с параметром Команда и выведите три кнопки этих команд. Это реальные команды формы, не кнопки предпросмотра панели задач и не вручную вызываемые handlers.

  6. Проверьте свою конфигурацию для тонкого клиента/сервера, целостность и неподдерживаемые функции. Запускайте только свой собственный новый Windows тонкий клиент. Scalar server helper проверяет имя/версию/единственную форму, возвращает Булево; manager, картинка и строки расчета остаются на клиенте.

  7. ВерсияRuntime85 и ВерсияОС85 показывают действительные строки среды. Менеджер доступен с8.3.8, но проверки Width/Height картинки — с8.3.14; код требует минимум8.3.14 и native Windows_x86/Windows_x86_64. Формат строки версии ОС не угадывается. Windows7+ документированы для наклейки, выбранная собственная VM10/11 — ручная предпосылка, не доказанная GUI-проверка.

  8. До опыта убедитесь вручную, что идентифицирована именно своя отдельная кнопка программы, у нее нет наклейки и отсутствуют другие1С экземпляры/общая группа. При чужой или неясной кнопке STOP. СвояКнопкаБылаПустой85 — только ваше явное подтверждение baseline, не native getter и не гарантия отсутствия гонки.

  9. Справка требует для отображения Windows-наклеек выключенных маленьких значков панели задач и включенных крупных значков меню Пуск. Проверяйте только свой стенд вручную; не меняйте ОС программно. Если настройки недоступны или наклейка не видна, не ставьте флажок наблюдения и остановитесь: отсутствие исключения не доказывает отображение.

  10. Прочитайте всю последовательность: максимум2 установки своей наклейки,1 запрос одного мигания и1 удаление только своей наклейки после принятия результата. Согласие исходноFalse и потребляется один раз. Открытие формы не вызывает manager/OS операции.

  11. Своими двумя подтверждениями пустой кнопки/согласия разрешите опыт и нажмите ПодготовитьУведомление85 один раз. Код сам создает ROW-A750 и ROW-B250, проверяет обе строки, реально вычисляет1000 и количество2. Ни внешний объект, ни файл, ни чужой job/процесс не передаются.

  12. Картинка производится из собственного fixed Base64: PNG16x16 RGB(21,98,232),80 байт. Реальный native BinaryData и Картинка должны дать размер80 и числовые Width16/Height16; Неопределено — STOP. Native допускает любой формат; ICO16/20/24 рекомендован, не обязателен. Никакого неизвестного БиблиотекаКартинок.Иконка1 или скачанного файла.

  13. Первый шаг посылает actual picture badge с СкрытьПриВыборе=Ложь и Сигнализировать(1). Эти процедуры не возвращают успех. Увидев только свою синюю наклейку, поставьте ВижуСвоюНаклейку85 и нажмите ПоказатьКоличество85: свежая полная проверка своего результата предшествует замене картинки actual числом2.

  14. Флажок наблюдения опять сбрасывается. Увидев только свое число2, снова поставьте его и нажмите ПринятьРезультат85. Повторная полная проверка двух строк предшествует actual УдалитьНаклейку(). Вручную убедитесь, что именно своя кнопка снова без наклейки; код пишет лишь ЗапросУдаления, не выдуманный GUI-success.

  15. После ошибки/неизвестного исхода — 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") = Неопределено Тогда
            ВызватьИсключение "Не совпадает собственный новый учебный пакет";
        КонецЕсли;
        Возврат Истина;
    #Иначе
        ВызватьИсключение "Нужен сервер собственного учебного приложения";
    #КонецЕсли
КонецФункции

Разбор по шагам

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

  2. ПодготовитьУведомление85 создает и полностью проверяет ROW-A750/ROW-B250. Реальные сумма1000 и количество2 не берутся из чужого объекта или пользовательского поля.

  3. Actual native picture создается из своих80 байт и проверяется16x16. Readonly ПанельЗадачОС дает настоящий manager; picture badge и одно мигание сообщают о готовом своем результате.

  4. Самостоятельно увидев свою картинку, подтвердите наблюдение. ПоказатьКоличество85 заново проверяет весь свой result, затем actual badge получает его целое количество2 в диапазоне0..99.

  5. Самостоятельно увидев свое число, снова подтвердите наблюдение. ПринятьРезультат85 заново проверяет1000/2 и только тогда вызывает native УдалитьНаклейку() без аргументов.

  6. Вернитесь к своей кнопке и вручную подтвердите отсутствие наклейки. Native процедуры не дают результата успеха; при неясном исходе STOP без автоматической уборки.

Как проверить результат

  1. У каждого UI шага проверяется именно своя настоящая команда/фаза/среда; старт требует отдельного consumed-согласия и вручную установленного пустого baseline.

  2. Manager взят из readonly global, не создан выдуманным конструктором. Свой icon80-byte BinaryData реально декодируется и дает native16x16 Picture.

  3. Перед каждым последующим OS изменением заново проверяются обе собственные строки и actual1000/2; числовая наклейка получает вычисленное целое0..99, не77 или fake percentage.

  4. Промежуточные состояния разделены настоящими командами и ручными наблюдениями; отсутствуют timers, fake callbacks и автоматический переход через незаметную картинку.

  5. Удаляется только наклейка своей отдельной программы с изначально пустым baseline, не toolbar, progress или чужое окно. Нет claim native readback/GUI-success.

Ожидаемый результат

Ожидаемый ручной результат: Сумма85=1000, Количество85=2; своими наблюдениями подтверждены картинка→число2→пустая своя кнопка. В коде последний этап ЗапросУдаления. GUI и runtime здесь не проверены.

На что обратить внимание

  1. ПанельЗадачОС управляет кнопкой программы, не произвольным process/window handle. Только свой отдельный новый VM/client; package marker не заменяет проверку своей кнопки и не гарантирует отсутствие внешних изменений.

  2. У менеджера нет native progress API и getter наклейки. Здесь число2 — количество результатов, не процент и не OS progressbar.

  3. Native методы могут молча не делать ничего на неподдерживаемой ОС; отсутствие исключения не является доказанным визуальным успехом.

  4. УстановитьКнопки намеренно не вызывается: нет обещания восстановления неизвестного toolbar/empty-array clearing. Повторное замещение кнопок — отдельный документированный контракт, не этот опыт.

  5. Старые native snippets содержат неверные aliases СигнализироватьИконкой и УдалитьЗначок. Урок вызывает actual Сигнализировать и УдалитьНаклейку по сигнатурам.

  6. ДиапазонWindows0..99 проверяется до вызова; native clamping не используется как исправление неверных данных. СкрытьПриВыборе=Ложь задан явно.

  7. После неизвестного исхода нет автоматической очистки, повторов или обещания сохранения consent/state после перезапуска. Здесь нет реальныхGUI/OS/1С/сети/файловых операций.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.