В практике администрирования 1С часто встречается ситуация, когда на одном рабочем месте работают несколько сотрудников (например, кассиров). Для удобства и безопасности их запуск системы часто настраивается через .bat файлы, которые автоматически вводят логин/пароль и открывают специализированную обработку, блокирующую лишний интерфейс. Однако платформа 1С по умолчанию запоминает последнего успешно вошедшего пользователя, что создает риск: если кассир закроет рабочее окно и зайдет через обычный ярлык, он увидит свой логин и, введя пароль, получит полный доступ к системе без ограничений обработки. Разберем подробно, как решить эту задачу несколькими способами.
Платформа 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\.
Если вы хотите, чтобы при запуске через обычный ярлык поле пользователя всегда было пустым, мы можем принудительно передать пустой параметр /N. Выясним, как это работает: платформа приоритетно обрабатывает параметры запуска. Разберем настройку обычного ярлыка (того самого, через который кассиры могут «косячить»):
/N "".Аналогично можно поступить, создав файл ссылки .v8i. Если открыть его блокнотом, в секцию базы можно добавить строку: AdditionalParameters=/N "".
Это один из самых элегантных методов, не требующий написания скриптов. В конфигураторе 1С для каждого пользователя существует настройка «Показывать в списке выбора». Проанализируем алгоритм действий:
Это решение отлично сочетается с запуском через батник, так как в батнике имя пользователя /N прописано явно, и отсутствие пользователя в списке никак не помешает автоматическому входу.
Рассмотрим ситуацию из сообщения автора темы: кассиры имеют права администратора, и просто «спрятать» логин недостаточно. Нам нужно гарантировать, что система пустит пользователя только если он зашел через специальный бат-файл. Для этого воспользуемся механизмом ПараметрЗапуска.
Шаг 1. В батнике кассира добавим параметр /C (передача строки текста):
"C:\1C_Path\1cestart.exe" ENTERPRISE /F "Base_Path" /N "User1" /P "Pass" /C "SecureStart" /Execute "BlockUI.epf"
Шаг 2. В конфигурации (в модуле управляемого приложения) пропишем проверку в процедуре ПриНачалеРаботыСистемы:
Процедура ПриНачалеРаботыСистемы()
// Проверяем, передан ли секретный параметр из батника
Если ПараметрЗапуска <> "SecureStart" Тогда
Предупреждение("Запуск системы разрешен только через специализированный ярлык!");
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
Теперь, даже если кассир узнает пароль и введет его в обычном окне 1С, система увидит отсутствие параметра SecureStart и мгновенно закроется. Это обеспечит стопроцентное выполнение регламента входа.
Чтобы пользователи не могли подсмотреть логин и пароль, открыв батник в блокноте, рекомендуется использовать утилиты типа Bat to Exe Converter. Мы превращаем текстовый скрипт в полноценное приложение .exe. Это решает сразу две проблемы:
Проанализируем главную причину беспокойства: наличие админских прав у кассиров. В 1С существует механизм, позволяющий выполнять действия без полных прав пользователя — Привилегированные модули. Выясним, как это применить:
Привилегированный.Такой подход — самый правильный с точки зрения архитектуры безопасности 1С. Он исключает саму возможность «накосячить», вне зависимости от того, каким способом вошел пользователь.
Подводя итог, наиболее надежным и простым в реализации «быстрым» решением будет комбинация снятия галочки «Показывать в списке выбора» и использование параметра запуска /C для проверки легитимности сеанса. Это позволит очистить интерфейс входа и жестко заблокировать обходные пути для персонала.