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

В этой статье разберём 5 проверенных способов скрыть модули в 1С 8.3 (актуально и для 8.2): от базовых настроек прав доступа до программного управления через встроенный язык. Особое внимание уделим нюансам для управляемых форм и обычных приложений, а также последствиям скрытия системных объектов.

Важно: скрытие ≠ удаление. Модуль продолжает существовать в конфигурации, но становится недоступным для пользователей. Это позволяет вернуть его обратно без восстановления из резервной копии.

📊 Какой способ скрытия модулей вы используете чаще?
Через права доступа
Программный код
Конфигуратор
Удаление из интерфейса
Не скрываю

1. Скрытие через права доступа (самый безопасный метод)

Этот способ подходит для большинства типовых конфигураций (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) и не требует изменений в коде. Суть — ограничить видимость модуля для определённых ролей.

Алгоритм действий:

  1. Откройте конфигуратор (1Cv8.exe /config или через меню Пуск).
  2. Перейдите в Администрирование → Пользователи и права → Роли.
  3. Выберите роль, для которой нужно скрыть модуль (например, Бухгалтер).
  4. В дереве прав найдите раздел Интерфейс или Полные права.
  5. Снимите галочку с модуля или команды, которую нужно скрыть.

Пример: чтобы скрыть модуль Сервис → Обмен данными для рядового пользователя, достаточно убрать право Интерактивное открытие для объекта Обработка.ОбменДанными.

  • Плюсы: не требует изменений конфигурации, легко откатить.
  • ⚠️ Минусы: не работает для модулей, которые запускаются автоматически (например, при старте системы).
  • 🔄 Нюанс: после изменения прав пользователям нужно перезайти в систему.
💡

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

2. Скрытие через конфигуратор (для опытных пользователей)

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

Инструкция:

  1. В конфигураторе откройте дерево объектов (Ctrl+Shift+T).
  2. Найдите модуль, который нужно скрыть (например, Обработки → МояУстаревшаяОбработка).
  3. Кликните правой кнопкой → Свойства.
  4. В поле Имя добавьте префикс подчёркивания (например, _МояУстаревшаяОбработка).
  5. Сохраните конфигурацию (Ctrl+S) и обновите базу (Конфигурация → Обновить конфигурацию базы данных).

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

Тип объектаМожно ли скрыть через имяАльтернативный способ
Обработки✅ ДаПрава доступа
Отчёты✅ ДаУдаление из командного интерфейса
Общие модули❌ НетПрограммное управление
Подсистемы⚠️ ЧастичноНастройка видимости в свойствах
⚠️ Внимание: Не переименовывайте системные обработки (например, УниверсальныйОтчет или ПоискИЗаменаЗначений). Это может нарушить работу типовых механизмов.

3. Программное скрытие модулей (для разработчиков)

Если модуль нужно скрыть динамически (например, в зависимости от даты или прав пользователя), используйте встроенный язык . Этот метод требует знания основ программирования.

Пример кода для скрытия команды в управляемой форме:

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Команды.МояКоманда.Видимость = Ложь;

КонецПроцедуры

Для обычных форм (устаревший интерфейс) используйте:

Процедура ПриОткрытии()

ЭлементыФормы.МояКнопка.Видимость = Ложь;

КонецПроцедуры

  • 📌 Где размещать код:
    • Для глобального скрытия — в модуле УправляемоеПриложение или ОбычноеПриложение.
    • Для конкретной формы — в модуле объекта (Модуль формы).
  • 🔄 Динамическое управление: можно скрывать модули по условию (например, Если ТекущийПользователь().Имя = "Иванов" Тогда).
Как скрыть модуль для всех пользователей кроме администратора?

Используйте следующий код в модуле приложения:

Процедура ПриНачалеРаботыСистемы()

Если НЕ ЗначениеЗаполнено(Пользователи.НайтиПоИмени("Администратор")) Тогда

КомандныйИнтерфейс.Команды.МояКоманда.Видимость = Ложь;

КонецЕсли;

КонецПроцедуры

⚠️ Внимание: При программном скрытии проверяйте существование команды через Команды.Содержит("ИмяКоманды"), чтобы избежать ошибок при обновлении конфигурации.

4. Скрытие через настройку интерфейса (для управляемых форм)

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

Пошаговая инструкция:

  1. Запустите в режиме предприятия (1Cv8.exe).
  2. Откройте Администрирование → Интерфейсы → Настройка интерфейса.
  3. Выберите роль (например, Бухгалтер).
  4. В дереве команд найдите нужный раздел (например, Сервис → Обмен данными).
  5. Снимите галочку с команды или перенесите её в раздел Скрытые команды.
  6. Сохраните настройки (ОК).

Этот метод работает для:

  • 📁 Команды главного меню (например, Файл → Открыть).
  • 🔧 Команды панели действий (кнопки в формах).
  • 📊 Команды отчётов и обработок.

☑️ Подготовка к скрытию через интерфейс

Выполнено: 0 / 4

5. Скрытие системных модулей (продвинутый уровень)

Системные модули (например, ОбщийМодуль.СтандартныеПодсистемыКлиент) скрывать не рекомендуется, но иногда это необходимо для кастомизации. Используйте один из методов:

Способ 1. Через расширение конфигурации (безопасно для типовых решений):

  1. Создайте расширение (Конфигурация → Поддержка → Расширения конфигурации).
  2. Добавьте в него модуль с таким же именем, как у скрываемого.
  3. В свойствах модуля расширения установите Поместить в конфигурацию = Ложь.

Способ 2. Через замену модуля (только для опытных разработчиков):

  1. Скопируйте исходный код модуля в внешнюю обработку.
  2. В конфигураторе удалите оригинальный модуль.
  3. Создайте новый модуль с тем же именем, но с пустым телом.
⚠️ Внимание: Скрытие системных модулей может нарушить работу типовых механизмов (например, обмен данными или печать документов). Всегда тестируйте изменения в копии базы.
Системный модульРиск при скрытииАльтернатива
ОбщийМодуль.ОбменДаннымиКлиентСерверВысокий (нарушится обмен)Ограничьте права
ОбщийМодуль.ПечатьФормСредний (проблемы с печатью)Замените на кастомный
ОбщийМодуль.РаботаСФайламиКлиентНизкийСкройте через интерфейс

Частые ошибки и как их избежать

При скрытии модулей администраторы часто сталкиваются с типичными проблемами. Вот как их предотвратить:

Ошибка 1. Модуль исчез для всех пользователей, включая администратора

  • 🔹 Причина: Права изменены для роли ПолныеПрава.
  • 🔧 Решение: Верните права через конфигуратор или восстановите роль из резервной копии.

Ошибка 2. После обновления конфигурации скрытые модули появились снова

  • 🔹 Причина: Обновление перезаписало настройки интерфейса.
  • 🔧 Решение: Используйте расширения конфигурации или программное скрытие.

Ошибка 3. Пользователи видят скрытый модуль после перезапуска

  • 🔹 Причина: Кэш клиентского приложения не обновлён.
  • 🔧 Решение: Очистите кэш (%AppData%\1C\1Cv8) или перезапустите службу 1C:Enterprise.
💡

Всегда проверяйте скрытие модулей в тестовой базе перед применением на рабочем сервере. Даже небольшие изменения могут повлиять на бизнес-процессы.

FAQ: Ответы на популярные вопросы

Можно ли скрыть модуль только для одного пользователя?

Да, для этого:

  1. Создайте новую роль (например, ОграниченныйБухгалтер).
  2. Скопируйте в неё права из базовой роли (Бухгалтер).
  3. Уберите права на видимость нужного модуля.
  4. Назначьте новую роль пользователю через Администрирование → Пользователи.
Как вернуть скрытый модуль обратно?

Способ зависит от метода скрытия:

  • Если скрывали через права доступа — верните галочку в настройках роли.
  • Если переименовывали модуль — верните оригинальное имя в конфигураторе.
  • Если использовали программный код — удалите или закомментируйте строку с Видимость = Ложь.

После изменений обновите конфигурацию базы данных.

Почему после скрытия модуля перестали работать отчёты?

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

  1. Откройте текст скрытого модуля в конфигураторе.
  2. Найдите экспортируемые процедуры (помечены словом Экспорт).
  3. Перенесите их в другой общий модуль с правом вызова (ВызовСервера или ВызовКлиента).

Пример проблемной процедуры:

Процедура ПолучитьДанныеДляОтчета(Экспорт)

// Код, который используется в отчётах

КонецПроцедуры

Как скрыть модуль в мобильном приложении ?

В мобильной платформе интерфейс настраивается отдельно. Чтобы скрыть модуль:

  1. Откройте конфигуратор на компьютере.
  2. Перейдите в Мобильное приложение → Настройка мобильного интерфейса.
  3. Снимите галочки с ненужных команд или обработок.
  4. Опубликуйте изменения на сервере (Администрирование → Публикация на веб-сервере).

Для программного скрытия используйте условие:

Если НЕ МобильноеПриложениеКлиент Тогда

Команды.МояКоманда.Видимость = Ложь;

КонецЕсли;

Можно ли скрыть модуль Конфигуратор для всех пользователей?

Нет, модуль Конфигуратор (файл 1Cv8.exe /config) — это внешнее приложение, а не объект конфигурации. Чтобы ограничить доступ:

  • 🔒 Запарольте запуск конфигуратора в настройках 1С:Предприятия.
  • 🖥️ Ограничьте права на папку с на уровне ОС (например, через NTFS-разрешения).
  • 👤 Настройте права в Администрирование → Пользователи, сняв флаг Администрирование.