Как сделать поле Пользователь пустым при входе в 1С и предотвратить обход ограничений интерфейса

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

В практике администрирования 1С часто встречается ситуация, когда на одном рабочем месте работают несколько сотрудников (например, кассиров). Для удобства и безопасности их запуск системы часто настраивается через .bat файлы, которые автоматически вводят логин/пароль и открывают специализированную обработку, блокирующую лишний интерфейс. Однако платформа 1С по умолчанию запоминает последнего успешно вошедшего пользователя, что создает риск: если кассир закроет рабочее окно и зайдет через обычный ярлык, он увидит свой логин и, введя пароль, получит полный доступ к системе без ограничений обработки. Разберем подробно, как решить эту задачу несколькими способами.

Решение 1: Удаление файла запомненного пользователя def.usr

Платформа 1С:Предприятие хранит имя последнего вошедшего пользователя в специальном файле def.usr. Если мы удалим этот файл перед запуском системы, поле «Пользователь» в окне авторизации окажется пустым. Рассмотрим, как это реализовать программно через бат-файл. Проанализируем путь к этому файлу: он находится в локальном профиле пользователя Windows.

Добавим в ваш исполняемый .bat файл строку удаления перед запуском самой 1С:


rem Очистка имени последнего пользователя перед запуском
del /q /f "%APPDATA%\1C\1cv8\*\def.usr"

rem Запуск 1С с нужными параметрами
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Base1C" /N "Cashier1" /P "123" /Execute "C:\Service\Workplace.epf"

Важный момент: Использование маски * позволяет не искать конкретный идентификатор базы в кэше, однако будьте осторожны, если на компьютере много баз — файл удалится для всех. Если нужно точечное воздействие, укажите точный путь к папке конкретной информационной базы внутри %APPDATA%\1C\1cv8\.

Решение 2: Использование параметров командной строки в ярлыках

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

  1. Нажмите правой кнопкой мыши на ярлык 1С и выберите «Свойства».
  2. В поле «Объект» в конце строки допишите: /N "".
  3. Теперь при запуске этого ярлыка система будет пытаться войти под пользователем с пустым именем, что гарантированно очистит поле ввода.

Аналогично можно поступить, создав файл ссылки .v8i. Если открыть его блокнотом, в секцию базы можно добавить строку: AdditionalParameters=/N "".

Решение 3: Скрытие пользователей из списка выбора

Это один из самых элегантных методов, не требующий написания скриптов. В конфигураторе 1С для каждого пользователя существует настройка «Показывать в списке выбора». Проанализируем алгоритм действий:

  1. Зайдите в Конфигуратор — Администрирование — Пользователи.
  2. Для каждого кассира откройте карточку и снимите галочку «Показывать в списке выбора».
  3. Теперь при стандартном запуске (через 1cestart) окно выбора пользователя будет пустым. Пользователю придется вводить логин вручную, что они делать поленятся или не смогут, если не знают точного написания логина.

Это решение отлично сочетается с запуском через батник, так как в батнике имя пользователя /N прописано явно, и отсутствие пользователя в списке никак не помешает автоматическому входу.

Решение 4: Защита от несанкционированного входа через «Параметр запуска»

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

Шаг 1. В батнике кассира добавим параметр /C (передача строки текста):


"C:\1C_Path\1cestart.exe" ENTERPRISE /F "Base_Path" /N "User1" /P "Pass" /C "SecureStart" /Execute "BlockUI.epf"

Шаг 2. В конфигурации (в модуле управляемого приложения) пропишем проверку в процедуре ПриНачалеРаботыСистемы:


Процедура ПриНачалеРаботыСистемы()
    // Проверяем, передан ли секретный параметр из батника
    Если ПараметрЗапуска <> "SecureStart" Тогда
        Предупреждение("Запуск системы разрешен только через специализированный ярлык!");
        ЗавершитьРаботуСистемы(Ложь);
    КонецЕсли;
КонецПроцедуры

Теперь, даже если кассир узнает пароль и введет его в обычном окне 1С, система увидит отсутствие параметра SecureStart и мгновенно закроется. Это обеспечит стопроцентное выполнение регламента входа.

Решение 5: Конвертация бат-файлов в EXE

Чтобы пользователи не могли подсмотреть логин и пароль, открыв батник в блокноте, рекомендуется использовать утилиты типа Bat to Exe Converter. Мы превращаем текстовый скрипт в полноценное приложение .exe. Это решает сразу две проблемы:

Решение 6: Правильное разграничение прав (Привилегированный режим)

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

  1. Вместо назначения роли «Полные права» создайте роль с минимально необходимым доступом (только запуск клиента).
  2. Все сложные операции (проведение документов, работа с оборудованием), требующие высоких прав, вынесите в общий модуль с установленным свойством Привилегированный.
  3. В этом случае код будет исполняться с правами сервера, игнорируя ограничения текущего пользователя.

Такой подход — самый правильный с точки зрения архитектуры безопасности 1С. Он исключает саму возможность «накосячить», вне зависимости от того, каким способом вошел пользователь.

Подводя итог, наиболее надежным и простым в реализации «быстрым» решением будет комбинация снятия галочки «Показывать в списке выбора» и использование параметра запуска /C для проверки легитимности сеанса. Это позволит очистить интерфейс входа и жестко заблокировать обходные пути для персонала.

← На главную