Как отключить всплывающие уведомления 1С-Отчетности для определенных пользователей в 1С:Бухгалтерии 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Финансы и профессиональные услуги
← На главную

Многие пользователи 1С:Бухгалтерии 3.0 сталкиваются с проблемой: после подключения сервиса 1С-Отчетность уведомления о поступлении новых сообщений или требований начинают выскакивать у всех пользователей системы, независимо от их ролей и необходимости работы с отчётностью. Постоянные уведомления могут приводить к отвлечению, смещению фокуса окна и даже ошибочному получению документов нецелевыми пользователями. В этом руководстве мы подробно разберем, как обеспечить показ уведомлений только для ответственных лиц, полностью отключив их для остальных пользователей.

Для начала, давайте рассмотрим различные подходы к решению этой задачи, начиная со стандартных настроек и заканчивая программной доработкой.

Анализ стандартных настроек и их ограничений

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

  1. Настройки обмена с контролирующими органами:

    Мы можем перейти в раздел Отчетность, справки — 1С-Отчетность — закладка Настройки — Настройки обмена с контролирующими органами. В открывшемся окне следует выбрать Расширенные настройки. Здесь находятся параметры, относящиеся к УчетнойЗаписиДокументооборота. Теоретически, здесь можно найти опции для отключения автоматического обмена. Однако, как правило, эти настройки влияют на работу сервиса в целом.

  2. Регламентные задания:

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

  3. Кнопка "Больше не показывать":

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

  4. Настройки уведомлений "Новостей":

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

Исходя из вышеизложенного, стандартные средства не предоставляют достаточной гибкости. Для тех, кто ищет готовый инструмент, существует специальное расширение, реализующее отключение оповещений от контролирующих органов в БП 3. Если же вы хотите реализовать это самостоятельно, нам потребуется программная доработка.

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

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

Шаг 1: Идентификация модуля и функции, отвечающей за показ уведомлений

В процессе анализа внутренней логики 1С:Бухгалтерии мы выясняем, что за проверку доступности уведомлений для текущего пользователя отвечает функция ТекущемуПользователюАОДоступен, расположенная в общем модуле ДокументооборотСКОВызовСервера. Наша задача – модифицировать эту проверку, добавив дополнительное условие, связанное с правами текущего пользователя.

Шаг 2: Создание и настройка расширения

Для внесения изменений создадим расширение.

  1. Откройте конфигуратор 1С.
  2. В меню Конфигурация выберите Расширения конфигурации.
  3. Нажмите кнопку Добавить (плюсик) для создания нового расширения.
  4. Задайте расширению понятное имя, например, "ОтключениеУведомлений1СОтчетность".
  5. Установите режим совместимости расширения и флаг "Активно".

Шаг 3: Переопределение функции ТекущемуПользователюАОДоступен

Теперь нам нужно добавить в расширение общий модуль ДокументооборотСКОВызовСервера и переопределить в нем нужную функцию.

  1. В дереве объектов конфигурации расширения найдите Общие модули и добавьте существующий модуль ДокументооборотСКОВызовСервера.
  2. Откройте добавленный модуль в расширении.
  3. Найдите функцию ТекущемуПользователюАОДоступен и добавьте её в расширение с типом "Вызывать вместо с контролем" или используйте директиву &ИзменениеИКонтроль.

Шаг 4: Добавление логики проверки пользователя

Мы вставим код, который будет проверять, имеет ли текущий пользователь право на просмотр всплывающих окон. Для этого можно использовать РегистрСведений.ПользователиУчетныхЗаписейДокументооборота.

Вот пример модифицированного кода функции smfo_ТекущемуПользователюАОДоступен:


&ИзменениеИКонтроль("ТекущемуПользователюАОДоступен")
Функция smfo_ТекущемуПользователюАОДоступен()

    Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных Тогда
        Возврат Ложь;
    КонецЕсли;

    Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.УчетныеЗаписиДокументооборота) Тогда
        Возврат Ложь;
    КонецЕсли;

    // --- ВСТАВКА НАШЕГО КОДА ДЛЯ ПРОВЕРКИ ПРАВ ПОЛЬЗОВАТЕЛЯ ---
    ЕстьПравоНаВсплывающиеОкна = Ложь; 

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    ПользователиУчетныхЗаписейДокументооборота.УчетнаяЗапись КАК УчетнаяЗапись
        |ИЗ
        |    РегистрСведений.ПользователиУчетныхЗаписейДокументооборота КАК ПользователиУчетныхЗаписейДокументооборота
        |ГДЕ
        |    ПользователиУчетныхЗаписейДокументооборота.Пользователь = &текпользователь";

    Запрос.УстановитьПараметр("текпользователь", Пользователи.ТекущийПользователь);
    РезультатЗапроса = Запрос.Выполнить();

    Если Не РезультатЗапроса.Пустой() Тогда
        ЕстьПравоНаВсплывающиеОкна = Истина;
    КонецЕсли;

    Если Не ЕстьПравоНаВсплывающиеОкна Тогда
        Возврат Ложь;
    КонецЕсли;
    // --- КОНЕЦ ВСТАВКИ ---

    ТекущиеУчетныеЗаписи = ДокументооборотСКО.ТекущиеУчетныеЗаписиНалогоплательщика;
    
    Если ТекущиеУчетныеЗаписи.Количество = 0 Тогда
        Возврат Ложь;
    КонецЕсли;

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    УчетныеЗаписиДокументооборота.Ссылка КАК УчетнаяЗапись
        |ПОМЕСТИТЬ УчетныеЗаписи
        |ИЗ
        |    Справочник.УчетныеЗаписиДокументооборота КАК УчетныеЗаписиДокументооборота
        |ГДЕ
        |    УчетныеЗаписиДокументооборота.Ссылка В(&ТекущиеУчетныеЗаписи)
        |    И НЕ УчетныеЗаписиДокументооборота.ОтключитьАвтообмен
        |;
        |
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
        |    ВЫРАЗИТЬ(Организации.УчетнаяЗаписьОбмена КАК Справочник.УчетныеЗаписиДокументооборота) КАК УчетнаяЗапись
        |ИЗ
        |    Справочник.Организации КАК Организации
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ УчетныеЗаписи КАК УчетныеЗаписи
        |        ПО Организации.УчетнаяЗаписьОбмена = УчетныеЗаписи.УчетнаяЗапись
        |ГДЕ
        |    Организации.ВидОбменаСКонтролирующимиОрганами = ЗНАЧЕНИЕ(Перечисление.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате)
        |    И НЕ Организации.ПометкаУдаления";

    Запрос.УстановитьПараметр("ТекущиеУчетныеЗаписи", ТекущиеУчетныеЗаписи);

    Возврат НЕ Запрос.Выполнить().Пустой();

КонецФункции

Этот код проверяет наличие текущего пользователя в регистре сведений. Если его там нет, функция возвращает Ложь, и уведомления не отображаются.

Шаг 5: Тестирование

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

Заключение

Мы рассмотрели, как с помощью расширения и переопределения функции ТекущемуПользователюАОДоступен в общем модуле ДокументооборотСКОВызовСервера можно эффективно управлять уведомлениями 1С-Отчетности. Это позволяет снизить информационный шум для сотрудников, не связанных с подачей отчетности, и повысить общую эргономику работы в системе.

Этот метод надежен и позволяет без проблем обновлять типовую конфигурацию, так как все изменения изолированы внутри расширения.

← На главную