Многие пользователи 1С:Бухгалтерии 3.0 сталкиваются с проблемой: после подключения сервиса 1С-Отчетность уведомления о поступлении новых сообщений или требований начинают выскакивать у всех пользователей системы, независимо от их ролей и необходимости работы с отчётностью. Постоянные уведомления могут приводить к отвлечению, смещению фокуса окна и даже ошибочному получению документов нецелевыми пользователями. В этом руководстве мы подробно разберем, как обеспечить показ уведомлений только для ответственных лиц, полностью отключив их для остальных пользователей.
Для начала, давайте рассмотрим различные подходы к решению этой задачи, начиная со стандартных настроек и заканчивая программной доработкой.
При возникновении задачи управления уведомлениями, первое, что мы обычно проверяем – это стандартные настройки программы. Разберем, какие возможности они предоставляют и почему их может быть недостаточно для нашей цели.
Мы можем перейти в раздел Отчетность, справки — 1С-Отчетность — закладка Настройки — Настройки обмена с контролирующими органами. В открывшемся окне следует выбрать Расширенные настройки. Здесь находятся параметры, относящиеся к УчетнойЗаписиДокументооборота. Теоретически, здесь можно найти опции для отключения автоматического обмена. Однако, как правило, эти настройки влияют на работу сервиса в целом.
Иногда всплывающие уведомления связаны с выполнением регламентных заданий. Мы можем рассмотреть возможность их отключения, но это приведет к полному отключению уведомлений для всех пользователей. В таких случаях администраторам часто требуется предварительный просмотр прав и профилей групп доступа, чтобы понять, как изменение ролей повлияет на работу системы.
При появлении всплывающего уведомления часто присутствует кнопка "Больше не показывать". Но она отключает лишь текущее уведомление. При появлении новых сообщений уведомление снова появится, поэтому это не является постоянным решением.
Некоторые пользователи путают уведомления от 1С-Отчетности с общими новостными оповещениями. Настройки новостей не затрагивают уведомления, поступающие непосредственно от сервиса 1С-Отчетность, касающиеся входящих сообщений и требований от контролирующих органов.
Исходя из вышеизложенного, стандартные средства не предоставляют достаточной гибкости. Для тех, кто ищет готовый инструмент, существует специальное расширение, реализующее отключение оповещений от контролирующих органов в БП 3. Если же вы хотите реализовать это самостоятельно, нам потребуется программная доработка.
Наиболее эффективным и рекомендованным способом для тонкой настройки видимости уведомлений является программная модификация с помощью расширения конфигурации. Этот подход позволяет изменить поведение стандартной функции без изменения самой конфигурации.
В процессе анализа внутренней логики 1С:Бухгалтерии мы выясняем, что за проверку доступности уведомлений для текущего пользователя отвечает функция ТекущемуПользователюАОДоступен, расположенная в общем модуле ДокументооборотСКОВызовСервера. Наша задача – модифицировать эту проверку, добавив дополнительное условие, связанное с правами текущего пользователя.
Для внесения изменений создадим расширение.
ТекущемуПользователюАОДоступенТеперь нам нужно добавить в расширение общий модуль ДокументооборотСКОВызовСервера и переопределить в нем нужную функцию.
ДокументооборотСКОВызовСервера.ТекущемуПользователюАОДоступен и добавьте её в расширение с типом "Вызывать вместо с контролем" или используйте директиву &ИзменениеИКонтроль.Мы вставим код, который будет проверять, имеет ли текущий пользователь право на просмотр всплывающих окон. Для этого можно использовать РегистрСведений.ПользователиУчетныхЗаписейДокументооборота.
Вот пример модифицированного кода функции smfo_ТекущемуПользователюАОДоступен:
&ИзменениеИКонтроль("ТекущемуПользователюАОДоступен")
Функция smfo_ТекущемуПользователюАОДоступен()
Если Не ОбщегоНазначения.ДоступноИспользованиеРазделенныхДанных Тогда
Возврат Ложь;
КонецЕсли;
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.УчетныеЗаписиДокументооборота) Тогда
Возврат Ложь;
КонецЕсли;
// --- ВСТАВКА НАШЕГО КОДА ДЛЯ ПРОВЕРКИ ПРАВ ПОЛЬЗОВАТЕЛЯ ---
ЕстьПравоНаВсплывающиеОкна = Ложь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ПользователиУчетныхЗаписейДокументооборота.УчетнаяЗапись КАК УчетнаяЗапись
|ИЗ
| РегистрСведений.ПользователиУчетныхЗаписейДокументооборота КАК ПользователиУчетныхЗаписейДокументооборота
|ГДЕ
| ПользователиУчетныхЗаписейДокументооборота.Пользователь = &текпользователь";
Запрос.УстановитьПараметр("текпользователь", Пользователи.ТекущийПользователь);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ЕстьПравоНаВсплывающиеОкна = Истина;
КонецЕсли;
Если Не ЕстьПравоНаВсплывающиеОкна Тогда
Возврат Ложь;
КонецЕсли;
// --- КОНЕЦ ВСТАВКИ ---
ТекущиеУчетныеЗаписи = ДокументооборотСКО.ТекущиеУчетныеЗаписиНалогоплательщика;
Если ТекущиеУчетныеЗаписи.Количество = 0 Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| УчетныеЗаписиДокументооборота.Ссылка КАК УчетнаяЗапись
|ПОМЕСТИТЬ УчетныеЗаписи
|ИЗ
| Справочник.УчетныеЗаписиДокументооборота КАК УчетныеЗаписиДокументооборота
|ГДЕ
| УчетныеЗаписиДокументооборота.Ссылка В(&ТекущиеУчетныеЗаписи)
| И НЕ УчетныеЗаписиДокументооборота.ОтключитьАвтообмен
|;
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ВЫРАЗИТЬ(Организации.УчетнаяЗаписьОбмена КАК Справочник.УчетныеЗаписиДокументооборота) КАК УчетнаяЗапись
|ИЗ
| Справочник.Организации КАК Организации
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ УчетныеЗаписи КАК УчетныеЗаписи
| ПО Организации.УчетнаяЗаписьОбмена = УчетныеЗаписи.УчетнаяЗапись
|ГДЕ
| Организации.ВидОбменаСКонтролирующимиОрганами = ЗНАЧЕНИЕ(Перечисление.ВидыОбменаСКонтролирующимиОрганами.ОбменВУниверсальномФормате)
| И НЕ Организации.ПометкаУдаления";
Запрос.УстановитьПараметр("ТекущиеУчетныеЗаписи", ТекущиеУчетныеЗаписи);
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
Этот код проверяет наличие текущего пользователя в регистре сведений. Если его там нет, функция возвращает Ложь, и уведомления не отображаются.
После сохранения расширения необходимо тщательно протестировать изменения под разными учетными записями, чтобы убедиться, что уведомления приходят только тем, кому они действительно необходимы.
Мы рассмотрели, как с помощью расширения и переопределения функции ТекущемуПользователюАОДоступен в общем модуле ДокументооборотСКОВызовСервера можно эффективно управлять уведомлениями 1С-Отчетности. Это позволяет снизить информационный шум для сотрудников, не связанных с подачей отчетности, и повысить общую эргономику работы в системе.
Этот метод надежен и позволяет без проблем обновлять типовую конфигурацию, так как все изменения изолированы внутри расширения.