Как скрыть пункт меню "Обновление программы" в конфигурациях 1С 8.3

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), таких как Зарплата и управление персоналом 3.1 или Бухгалтерия государственного учреждения 2.0, администраторы часто сталкиваются с необходимостью ограничить доступ рядовых сотрудников к определенным сервисным функциям. Одной из таких задач является скрытие пункта "Обновление программы" в разделе Администрирование — Интернет-поддержка и сервисы. Это позволяет избежать случайного запуска процесса обновления пользователями, не обладающими достаточной квалификацией.

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

Почему простое изменение видимости в Конфигураторе не дает результата?

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

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

Способ 1: Скрытие элемента через «Изменить форму» (для пользователей)

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

  1. Необходимо зайти в программу под учетной записью того пользователя, которому нужно ограничить видимость меню.
  2. Переходим в раздел Администрирование — Интернет-поддержка и сервисы.
  3. В правом верхнем углу нажимаем кнопку Еще и выбираем пункт Изменить форму.
  4. В открывшемся дереве элементов находим группу, отвечающую за обновление. Обычно она называется ГруппаОбновлениеПрограммы или ГруппаОбновлениеЛеваяКолонка.
  5. Снимаем флажок (галочку) слева от названия этой группы.
  6. Нажимаем ОК. Пункт меню исчезнет из интерфейса данного пользователя.

Рассмотрим ситуацию, когда пользователей много. Чтобы не заходить под каждым сотрудником отдельно, администратор может воспользоваться инструментом Копирование настроек (раздел Администрирование — Настройки пользователей и прав). Там можно выбрать «эталонного» пользователя, у которого пункт уже скрыт, и «растиражировать» его настройки внешнего вида на всех остальных сотрудников или выбранную группу доступа.

Способ 2: Настройка прав доступа и ролей

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

  1. Перейдем в Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Создадим новый профиль на основании существующего (например, копированием профиля с ограниченными правами).
  3. Проанализируем список разрешенных ролей. Для того чтобы пункт «Обновление программы» скрылся, необходимо исключить роли, содержащие в названии слова ОбновлениеКонфигурации, ПроверкаОбновлений или УстановкаОбновлений.
  4. Также важно проверить право ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок, так как механизм обновления часто использует внешние компоненты.

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

Способ 3: Программное скрытие через расширение (рекомендуемый метод)

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

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

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


&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Проверяем, является ли текущий пользователь администратором
    Если Не РольДоступна("ПолныеПрава") Тогда
        
        // Скрываем группу обновления для всех, кроме администраторов
        Если Элементы.Найти("ГруппаОбновлениеПрограммы") <> Неопределено Тогда
            Элементы.ГруппаОбновлениеПрограммы.Видимость = Ложь;
        КонецЕсли;
        
        // Дополнительно можно скрыть конкретные команды
        Если Элементы.Найти("ОбновитьПрограмму") <> Неопределено Тогда
            Элементы.ОбновитьПрограмму.Видимость = Ложь;
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Разберем, что именно делает этот код. Мы используем метод &После, чтобы наше условие выполнялось уже после того, как типовой код БСП установил свои настройки видимости. Мы проверяем наличие роли ПолныеПрава. Если ее нет, мы принудительно устанавливаем Видимость = Ложь для группы элементов. Важно использовать метод Найти(), чтобы избежать ошибок в случае, если в будущем обновлении конфигурации имя элемента изменится.

Работа с функциональными опциями

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

Если вам необходимо оставить возможность обновления только себе, вы можете программно переопределить значение этой функциональной опции в модуле сеанса или через то же расширение, проверяя текущего пользователя. Однако метод с управлением видимостью элементов формы (Способ 3) считается более гибким и безопасным для целостности системы.

Подведем итог: для быстрого разового скрытия используйте "Изменить форму", а для надежного запрета на уровне всей системы лучше всего подходит небольшое расширение с проверкой прав доступа.

← На главную