В процессе администрирования крупных информационных баз 1С, особенно в учебных заведениях или организациях с большой текучкой кадров, часто возникает задача массового ограничения доступа. Например, когда необходимо закрыть вход для 700+ пользователей (студентов или бывших сотрудников) и оставить доступ только для одного администратора, чтобы в дальнейшем выдавать права только по запросу. Ручное редактирование каждой карточки — процесс трудоемкий и неэффективный. Рассмотрим наиболее надежные и быстрые способы решения этой задачи, проанализируем риски и разберем конкретные алгоритмы действий.
Этот метод подходит, если вы обладаете правами администратора и имеете возможность запустить внешнюю обработку или выполнить код через консоль. Суть метода заключается в переборе всех записей в справочнике Пользователи и установке признака, препятствующего входу.
Проанализируем пример кода, который позволяет автоматизировать этот процесс. Важно предусмотреть исключение для учетной записи администратора, чтобы не заблокировать собственный доступ.
Выборка = Справочники.Пользователи.Выбрать();
Пока выборка.Следующий() Цикл
// Проверяем, что это не наш текущий администратор и не группа пользователей
Если Выборка.Имя = "Администратор" Или Выборка.ЭтоГруппа Тогда
Продолжить;
Иначе
ОбъектПользователь = Выборка.ПолучитьОбъект();
// Устанавливаем признак недействительности
ОбъектПользователь.Недействителен = Истина;
// Используем ОбменДанными.Загрузка, чтобы обойти лишние проверки конфигурации
ОбъектПользователь.ОбменДанными.Загрузка = Истина;
Попытка
ОбъектПользователь.Записать();
Исключение
Сообщить("Не удалось изменить пользователя: " + Выборка.Наименование);
КонецПопытки;
КонецЕсли;
КонецЦикла;
В этом коде мы используем свойство ОбменДанными.Загрузка = Истина. Рассмотрим подробнее, зачем это нужно. Этот флаг отключает прикладные проверки в процедурах ПередЗаписью и ПриЗаписи, что позволяет выполнить операцию максимально быстро и без ошибок, связанных с неполным заполнением других реквизитов карточки пользователя.
Если вы не хотите писать код, в типовых конфигурациях (БП 3.0, БГУ 2.0, ЗГУ 3.0) есть мощный инструмент — Групповое изменение реквизитов. Разберем по шагам, как правильно им воспользоваться:
Пользователи.Ссылка (или Наименование). Установим вид сравнения "Не равно" и выберем вашу учетную запись администратора. Это гарантирует, что вы не заблокируете сами себя.Недействителен. Если оно не отображается, нажмем кнопку "Дополнительно" (или "Настройки") и установим флажок Показывать служебные реквизиты.Недействителен.Стоит отметить нюанс: в современных конфигурациях на базе БСП флаг Недействителен скрывает пользователя из списков, но для полной уверенности в запрете авторизации на уровне платформы следует также обращать внимание на реквизит ВходВПрограммуРазрешен. Однако доступ к нему через групповую обработку может быть ограничен, так как он синхронизирован с параметрами пользователя информационной базы (ИБ).
Если задача стоит не в удалении "мертвых душ", а во временном ограничении доступа для всех, кроме администрации, лучше использовать штатный механизм блокировки сеансов. Этот метод хорош тем, что он не вносит необратимых изменений в справочники.
Разберем алгоритм работы с этим инструментом:
Secret123).Теперь никто не сможет войти в систему. Чтобы зайти самому администратору, необходимо запустить 1С с параметром командной строки. Посмотрим на пример настройки ярлыка:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "ПутьКБазе" /UC Secret123
Параметр /UC позволяет игнорировать установленную блокировку. Это самый профессиональный способ управления доступом при массовых работах в базе.
В конфигурациях, использующих профили полномочий (БП, ЗУП, БГУ), права пользователей определяются их вхождением в Группы доступа. Вместо того чтобы помечать пользователей как недействительных, можно временно лишить их прав.
Проанализируем этот подход:
Пользователи.Результат: пользователь сможет авторизоваться в 1С, но увидит абсолютно пустой интерфейс без доступа к документам и справочникам. Это позволит избежать ошибок при записи объектов справочника Пользователи, если в базе настроены сложные связи.
Выясним, какие риски существуют при проведении подобных массовых операций и как их минимизировать:
1. Обязательное создание резервной копии.
Перед любым массовым изменением реквизитов (через код или обработку) необходимо создать архивную копию базы данных (dt-файл или копию файла 1Cv8.1CD). Если вы случайно ошибетесь в фильтре и заблокируете всех администраторов, восстановление может занять много времени. Для подготовки к массовым работам на нескольких системах можно заранее настроить автоматическое архивирование баз.
2. Проверка на тестовой базе.
Никогда не выполняйте подобные скрипты сразу в рабочей базе. Сначала отработайте процедуру на копии, убедитесь, что ваш администратор сохранил доступ, а остальные — потеряли его.
3. Наличие "Аварийного входа".
Рекомендуем заранее создать в конфигураторе пользователя с полными правами, который не связан с сотрудниками (например, с логином SuperAdmin), и надежно сохранить пароль от него. Это ваш "запасной выход" на случай программных сбоев при массовой записи справочника.
4. Серверные особенности.
Если ваша база работает в клиент-серверном варианте, вы также можете использовать Консоль администрирования кластера серверов 1С. В свойствах информационной базы можно установить флаг "Блокировка начала сеансов включена". Это работает аналогично способу №3, но на уровне сервера приложений, что еще более надежно.
Таким образом, мы рассмотрели различные варианты решения задачи. Для очистки базы от "мертвых душ" лучше всего подходит Способ 2 (Групповое изменение реквизитов) с флагом Недействителен. Для оперативного управления доступом и временных ограничений оптимальным будет Способ 3 (Код разрешения /UC).