К статье
Практический материал

Администрирование · 11 мин

Как поставить пароль на обработку 1С

Как поставить пароль на обработку 1С: защита внешней обработки кодом проверки, пароль на пользователя, ограничение прав и поставка без исходного кода.

Внешняя обработка 1С — это файл с расширением .epf, который может открыть любой пользователь, имеющий доступ к информационной базе или к самому файлу. Если обработка содержит коммерческую логику, работает с конфиденциальными данными или выполняет опасные операции (массовое изменение документов, очистку данных), возникает задача её защитить.

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

Важно понимать: встроенного штатного механизма «поставить пароль на файл .epf» в платформе 1С нет. Все способы защиты — это либо программная проверка пароля внутри кода обработки, либо разграничение прав в конфигурации, либо поставка обработки без исходного текста модулей. Ниже разобраны все рабочие варианты с пошаговыми действиями.

Какие способы защиты обработки существуют

Прежде чем выбирать метод, определите, от кого именно защищаетесь. Если от рядовых пользователей, которые не должны запускать опасную обработку, достаточно разграничения прав или простой проверки пароля в коде. Если от конкурентов или других разработчиков, которые могут открыть модуль и скопировать логику, нужна поставка без исходного кода.

Основные варианты: проверка пароля внутри обработки (форма ввода при открытии), ограничение прав на запуск внешних обработок в конфигурации, хранение обработки внутри базы в справочнике «Дополнительные отчеты и обработки» с настройкой доступа, защита файла средствами Windows и поставка модуля без исходного текста.

Сравнение способов защиты

Проверка пароля в коде обработки

Подходит для защиты от случайного запуска пользователями. Ограничение: тот, кто умеет открыть модуль в конфигураторе, увидит логику проверки.

Права в конфигурации

Надёжно блокирует запуск внешних обработок для выбранных ролей. Не защищает сам файл от копирования и просмотра кода.

Поставка без исходного кода

Защищает алгоритмы от просмотра. Требует аккуратной сборки, иначе обработка перестанет открываться.

Права на файл в Windows

Ограничивает доступ к файлу на диске. Не работает, если обработку уже скопировали.

Как поставить проверку пароля при открытии обработки

Самый распространённый способ — программная проверка пароля при открытии. Идея: в модуле формы обработки в обработчике «ПриОткрытии» запрашивается пароль, и если он неверный, обработка закрывается или отказывает в работе.

Откройте обработку в конфигураторе: Файл → Открыть → выберите файл .epf. Перейдите к основной форме обработки и откройте её модуль. Добавьте обработчик события «ПриОткрытии».

Пример простейшей реализации для управляемой формы:

&НаКлиенте

Процедура ПриОткрытии(Отказ)

ВведенноеЗначение = "";

Если НЕ ВвестиСтроку(ВведенноеЗначение, "Введите пароль", 20, Ложь) Тогда

Отказ = Истина;

Возврат;

КонецЕсли;

Если ВведенноеЗначение <> "МойПароль" Тогда

Отказ = Истина;

Предупреждение("Неверный пароль. Доступ запрещён.");

КонецЕсли;

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

Сохраните обработку и проверьте: при открытии через Файл → Открыть в режиме 1С:Предприятие появится запрос пароля, при неверном вводе обработка закроется. Для управляемых форм вместо модального ВвестиСтроку рекомендуется использовать ПоказатьВводСтроки с описанием оповещения, так как модальные вызовы в новых версиях платформы могут быть заблокированы настройками.

Порядок установки пароля в коде
  1. 1
    Откройте файл .epf в конфигураторе через Файл → Открыть
  2. 2
    Перейдите в модуль основной формы обработки
  3. 3
    Добавьте обработчик ПриОткрытии с запросом и проверкой пароля
  4. 4
    Замените хранение пароля в открытом виде на сравнение хеша (см. следующий раздел)
  5. 5
    Сохраните обработку и протестируйте запуск в режиме 1С:Предприятие
  6. 6
    Проверьте отказ при неверном пароле и успешный запуск при верном

Как не хранить пароль в открытом виде

Пароль, записанный строкой прямо в коде, увидит любой, кто откроет модуль обработки в конфигураторе. Это сводит защиту к нулю против технически грамотного пользователя. Решение — хранить не сам пароль, а его хеш и сравнивать хеши.

В платформе 1С есть объект ХешированиеДанных с поддержкой алгоритмов MD5, SHA1, SHA256. Пример проверки через хеш:

&НаСервере

Функция ПарольВерен(ВведенныйПароль)

Хеширование = Новый ХешированиеДанных(МетодХешированияДанных.SHA256);

Хеширование.Добавить(ВведенныйПароль);

ХешСтрокой = СтрЗаменить(Строка(Хеширование.ХешСумма), " ", "");

Эталон = "СЮДА_ВСТАВИТЬ_ХЕШ_ВАШЕГО_ПАРОЛЯ";

Возврат НРег(ХешСтрокой) = НРег(Эталон);

КонецФункции

Чтобы получить эталонный хеш, один раз выполните тот же код с вашим паролем и выведите результат в сообщение, затем скопируйте строку в константу Эталон. Учтите: хеш из строки в модуле всё равно можно подобрать перебором, если пароль короткий. Используйте пароль от 10–12 символов с буквами, цифрами и спецсимволами.

Как ограничить запуск обработки правами в конфигурации

Если обработка встроена в конфигурацию как объект или подключена через механизм «Дополнительные отчеты и обработки» (БСП), доступ к ней управляется ролями. Это надёжнее пароля, потому что проверку выполняет сама платформа, а не код, который можно обойти.

В конфигураторе откройте ветку «Общие» → «Роли». Найдите роль, назначенную пользователям, и проверьте права на объект обработки: снимите флажки «Использование» и «Просмотр» у ролей, которым обработка не нужна. Для встроенной обработки можно создать отдельную роль «ИспользованиеОбработкиX» и выдать её только избранным пользователям.

Для дополнительных обработок в типовых конфигурациях (УТ, ERP, Бухгалтерия) доступ настраивается в разделе «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки». В карточке обработки есть закладка «Размещение» и настройки доступа, где можно ограничить круг пользователей через группы доступа или профили.

Дополнительно проверьте права на сам запуск внешних файлов: у роли не должно быть права «Интерактивное открытие внешних отчетов и обработок», если пользователю вообще нельзя открывать сторонние .epf. Это закрывает обход через Файл → Открыть.

Как защитить исходный код обработки

Чтобы никто не смог прочитать или изменить логику обработки, используйте поставку без исходного текста модулей. В этом случае в файле остаётся только скомпилированный образ модуля, и конфигуратор не показывает код.

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

Практический нюанс: перед поставкой без исходного кода обязательно сохраните полную копию обработки с исходниками в отдельном надёжном месте. Восстановить текст модуля из скомпилированного образа штатными средствами невозможно — потеря оригинала означает потерю возможности доработки.

Типичные ошибки
01
Хранение пароля открытым текстом в модуле — любой с доступом к конфигуратору прочитает его за минуту
02
Поставка без исходного кода без резервной копии — при необходимости доработки придётся писать обработку заново
03
Проверка пароля только на клиенте — серверный вызов можно выполнить, минуя форму; критичные операции проверяйте и на сервере
04
Забытое право интерактивного открытия внешних обработок у роли — пользователь запускает любые .epf, обходя ограничения
05
Короткий цифровой пароль — подбирается перебором даже при хранении хеша

Как проверить, что защита работает

После настройки протестируйте все сценарии, а не только «счастливый путь». Запустите обработку под пользователем без прав — должна появиться ошибка доступа или обработка не должна отображаться в списке. Откройте её через Файл → Открыть и введите неверный пароль — обработка должна закрыться без выполнения действий.

Проверьте отказ при отмене ввода пароля (кнопка «Отмена» в диалоге) — частая ошибка, когда при отмене обработка продолжает работу. Убедитесь, что в обработчике стоит Отказ = Истина и для этого случая.

Если используется поставка без исходного кода, откройте защищённый файл в конфигураторе: модуль формы должен быть недоступен для просмотра, при этом обработка обязана нормально запускаться в режиме Предприятия. Проверьте работоспособность на той же версии платформы, что и у конечных пользователей, — скомпилированный образ чувствителен к смене версии.

Контрольные точки

Как проверить результат

Запуск с неверным паролем
Норма

Обработка закрывается, данные не изменяются

Тревожный признак

Обработка открывается или выполняет действия

Отмена ввода пароля
Норма

Отказ от открытия

Тревожный признак

Обработка продолжает работу

Просмотр модуля в конфигураторе
Норма

Текст модуля недоступен или виден только хеш

Тревожный признак

Пароль виден открытым текстом

Запуск под пользователем без прав
Норма

Сообщение о нарушении прав доступа

Тревожный признак

Обработка запускается штатно

Ограничения и когда нужен другой подход

Ни один из описанных способов не даёт абсолютной защиты. Скомпилированный модуль можно декомпилировать специализированными инструментами, проверку пароля — обойти при наличии полных прав, а файл — скопировать до настройки прав на него. Задача этих мер — отсечь случайный доступ и усложнить намеренный взлом до уровня, когда он становится нерентабельным.

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

Итог

Что важно запомнить

Пароль на обработку 1С реализуется проверкой в обработчике ПриОткрытии со сравнением хеша, а не открытого пароля. Дополните защиту правами ролей в конфигурации и поставкой без исходного кода, сохранив копию с исходниками. Обязательно протестируйте отказ при неверном пароле, при отмене ввода и запуск под пользователем без прав.

Частые вопросы

Можно ли поставить пароль на файл .epf средствами Windows?

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

Пользователь забыл пароль от обработки — как восстановить доступ?

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

Работает ли проверка пароля в тонком и веб-клиенте?

Да, если используются немодальные методы (ПоказатьВводСтроки с оповещением). Модальные вызовы ВвестиСтроку могут быть заблокированы настройками платформы в тонком и веб-клиенте, и тогда запрос пароля просто не появится. Проверяйте обработку во всех клиентах, которые используются в вашей инфраструктуре.

Можно ли защитить обработку так, чтобы она работала только в одной базе?

Да, это называется привязкой. В коде обработки получите идентификатор информационной базы (строка соединения или уникальный идентификатор через СтрокаСоединенияИнформационнойБазы) и сравните с эталоном. Учтите, что при переезде базы на другой сервер строка соединения изменится, и привязку придётся обновлять.

Чем отличается защита обработки от защиты конфигурации паролем?

Пароль на конфигурацию (установка пароля на хранилище или на доступ к конфигуратору) защищает всю конфигурацию целиком от изменений. Защита обработки — точечная мера для отдельного файла или объекта. Это разные уровни: первое администрирует доступ разработчиков, второе — доступ пользователей к конкретному инструменту.