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

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

Иногда перед техническими специалистами возникает нестандартная задача от руководства: ограничить доступ к определенному журналу документов с помощью ввода пароля. Чаще всего речь идет о конфиденциальной финансовой информации, например, о журнале КассовыеОрдера. Разберем, как реализовать подобную проверку в коде формы, с какими подводными камнями придется столкнуться и почему такой механизм не гарантирует полной защиты информации.

Перехват открытия журнала: выбор правильного события

Основная ошибка при первой попытке решить данную задачу — использование события ПриОткрытии(). На этом этапе форма уже практически открыта и инициализирована, а простой оператор Возврат лишь прерывает исполнение процедуры, не отменяя саму прорисовку интерфейса пользователю.

Для блокировки открытия окна необходимо использовать событие ПередОткрытием. У данного обработчика есть стандартный параметр Отказ типа Булево. Если присвоить ему значение Истина, платформа прервет создание окна, и журнал документов не откроется.

Рассмотрим реализацию проверки в модуле формы журнала документов с помощью диалога ВвестиСтроку:


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    Пароль = "";
    Если ВвестиСтроку(Пароль, "Для доступа к кассовым документам введите пароль:") Тогда
        Если Пароль <> "СекретныйПароль123" Тогда
            Предупреждение("Введен неверный пароль!");
            Отказ = Истина;
        КонецЕсли;
    Иначе
        // Пользователь нажал кнопку «Отмена» или закрыл окно ввода
        Отказ = Истина;
    КонецЕсли;

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

Разберем логику работы приведенного фрагмента:

  1. Объявляем переменную Пароль с пустым строковым значением. Это необходимо, так как метод ВвестиСтроку передает введенный результат в первый параметр по ссылке.
  2. Функция ВвестиСтроку возвращает Истина, если пользователь нажал кнопку «ОК», и Ложь, если действие было отменено.
  3. Если диалог отменен пользователем или введенный пароль не совпал с эталоном, мы устанавливаем параметр Отказ = Истина. В результате журнал документов не отображается на экране.

Ограничения стандартного ввода строки

Хотя этот способ закрывает прямую потребность, проанализируем технические нюансы, которые снижают его безопасность и удобство:

  1. Отсутствие маскировки символов: Стандартный метод ВвестиСтроку показывает вводимый текст открытым видом. Окружающие сотрудники смогут легко увидеть пароль на мониторе. Для маскировки ввода (отображения звездочек) требуется вызывать отдельную вспомогательную форму с полем ввода, у которого включено свойство РежимПароля.
  2. Хранение секрета в коде конфигурации: Прописывать открытый пароль прямо в модуле формы крайне нежелательно. Значение видно в конфигураторе и в журнале истории изменений. Надежнее вычислять хеш введенной строки через объект ХешированиеДанных (алгоритм SHA-256) и сравнивать результат с эталонным хешем, сохраненным в безопасной константе.
  3. Режим модальности платформы: В современных версиях платформы 1С:Предприятие 8.3 при включенном запрете модальных окон синхронный вызов диалога приведет к исключительной ситуации. В таком случае требуется вызывать асинхронный метод ПоказатьВводСтроки с передачей обработчика оповещения.

Почему пароль на форму не защищает данные

Установка пароля исключительно на открытие формы журнала создает лишь видимость информационной безопасности. Важно понимать, какими путями пользователь без труда сможет обойти эту преграду и увидеть информацию:

  1. Индивидуальные списки документов: Журнал документов — это агрегирующее представление. Документы Приходный кассовый ордер и Расходный кассовый ордер остаются доступными через их собственные списки в командном интерфейсе.
  2. Формы выбора: При подборе документов в связанных операциях (например, в авансовых отчетах или выписках) платформа открывает форму выбора ордеров, минуя журнал.
  3. Отчеты и регистры: Движения денежных средств регистрируются в проводках бухгалтерского учета (счет 50) или регистрах накопления. Любой типовой отчет («Оборотно-сальдовая ведомость», «Карточка счета», кассовая книга) отобразит всю первичную информацию с возможностью открыть сам документ двойным кликом мыши.
  4. Навигационные ссылки и история: Пользователь может получить прямую внутреннюю ссылку на ордер или открыть его из меню платформы «История».

Корректный подход: разграничение прав доступа

Единственный надежный и поддерживаемый способ ограничения доступа к кассовым документам — это использование штатной подсистемы прав доступа платформы 1С:

  1. Настройка ролей: Создаем отдельную роль (или используем типовые профили групп доступа), в которой снимаем права Просмотр и Интерактивное открытие как для самого журнала, так и для всех входящих в него документов и связанных регистров. При отсутствии прав пользователь не сможет увидеть данные ни через интерфейс, ни через универсальные отчеты.
  2. Настройка командного интерфейса: Если задача состоит только в том, чтобы журнал не мешал рядовым сотрудникам, достаточно отключить видимость команды журнала в командном интерфейсе подсистем для определенных ролей без изменения программного кода.
  3. Применение расширений конфигурации: Если требование руководства запросить пароль обязательно к исполнению, предпочтительно реализовать перехват события формы в отдельном расширении конфигурации через аннотацию &Перед("ПередОткрытием"), не снимая основную базу с поддержки поставщика.
← На главную