Часто перед администраторами и владельцами бизнеса встает задача ограничить доступ пользователей к программе в определенные периоды — например, в праздничные дни, выходные или при проведении инвентаризации. Если вы используете версию 1С:Розница Базовая, вы сталкиваетесь с ограничением: данная версия не поддерживает изменение конфигурации и использование расширений для доработки логики системы. Давайте разберем, какие подходы можно применить, чтобы решить эту задачу, не переходя на версии ПРОФ или КОРП.
Поскольку мы не можем менять конфигурацию, внешняя обработка становится нашим основным инструментом. Мы можем создать файл .epf, который будет выполнять проверку текущей даты при запуске.
ПриНачалеРаботыСистемы. Поскольку внешняя обработка не всегда автоматически «цепляется» к старту системы без внесения изменений, мы можем запускать 1С через ярлык с параметром /Execute.Пример логики проверки даты во внешней обработке:
Процедура ПриНачалеРаботыСистемы()
ТекущаяДата = ТекущаяДата();
Если СписокЗапрещенныхДат.Найти(ТекущаяДата) <> Неопределено Тогда
Предупреждение("Доступ к базе закрыт администратором!");
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
Важно помнить, что этот метод является «мягкой» защитой. Пользователь при наличии прав администратора компьютера может попытаться обойти такой запуск, поэтому данный способ подходит для дисциплинированных пользователей.
В платформе 1С:Предприятие 8.3 предусмотрен штатный механизм Блокировка соединений с информационной базой. Несмотря на то, что он чаще используется при обновлении, его можно автоматизировать для решения нашей задачи.
Рассмотрим, как реализовать это через Планировщик заданий Windows:
.bat. Первый будет активировать блокировку, второй — снимать её.1cv8.exe с параметрами командной строки. Параметр /UC позволяет передать код разрешения, если блокировка уже установлена.
"C:\Program Files\1cv8\bin\1cv8.exe" CONFIG /F "C:\PathToBase" /N Администратор /P Пароль /Block
Этот подход более надежен, так как блокировка происходит на уровне платформы: система просто не даст пользователю войти, выдавая сообщение о том, что база закрыта для обслуживания.
Если база является файловой (лежит в папке на диске), самый эффективный способ ограничить доступ — изменить права доступа ACL к файлу 1Cv8.1CD. Вы можете написать PowerShell-скрипт, который по расписанию будет запрещать группе пользователей Windows доступ на чтение к этой папке.
Преимущества данного метода:
Проанализировав ситуацию, мы рекомендуем выбрать метод, соответствующий вашему уровню технической подготовки:
внешнюю обработку с параметром запуска /Execute в ярлыке. Это быстро, не требует изменения ОС, но требует контроля за пользователями.скрипты PowerShell для управления правами доступа к папке с базой данных. Это гарантированный способ, который исключает возможность входа в базу в нерабочее время.Помните, что для базовых версий 1С любая «защита» носит рекомендательный характер. Если безопасность критически важна, рассмотрите возможность перехода на версию ПРОФ, где управление пользователями, правами и блокировками встроено в ядро системы и доступно через стандартный интерфейс Конфигуратора или Режима предприятия.