Защита кода 1С 8.3: пароль на модуль, поставка без исходников и права
Содержание
Чтобы поставить пароль
на модуль 1С, откройте конфигурацию в Конфигураторе, откройте нужный модуль в редакторе и выберите в главном меню Текст → Установить пароль. Введите пароль дважды, сохраните конфигурацию и обновите конфигурацию базы данных. После этого текст модуля откроется только тому, кто знает пароль, а сам код продолжит работать у всех пользователей.
Пароль защищает только текст одного модуля, а не всю базу и не данные. Если задача — закрыть разработку целиком или отдать решение клиенту без исходников, надёжнее поставка конфигурации без исходного текста и ограничение прав на запуск Конфигуратора. Оба способа разобраны ниже.
Зачем закрывать модуль паролем
Пароль на модуль ставят не от бухгалтера, а от другого программиста. Обычный пользователь в режиме «1С:Предприятие» код и так не видит.
Типичные причины:
- 🔒 Защита авторского решения. Вы написали обработку или доработку для клиента и не хотите, чтобы её алгоритм скопировали и перепродали.
- 🛠 Защита от случайной правки. В модуле расчётная логика, которую сопровождает один человек. Пароль останавливает коллегу, который «просто хотел поправить одну строку».
- 📦 Распространение тиражного решения. Разработчик закрывает модули с лицензионной проверкой или ноу-хау.
- 🧾 Разграничение ответственности. Если код закрыт, а что-то сломалось, проще понять, кто и где вмешивался.
Чего пароль не делает:
- не мешает запускать код — модуль исполняется как обычно;
- не скрывает объекты метаданных, формы, макеты и реквизиты;
- не защищает данные информационной базы;
- не запрещает удалить модуль целиком или заменить объект.
Если нужно закрыть от пользователей отчёты, документы или справочники, пароль на модуль не поможет. Это задача ролей и прав доступа в режиме «1С:Предприятие».
Какие модули 1С можно защитить
Пароль ставится на текст конкретного модуля, открытого в редакторе. Значит, закрыть можно любой модуль, у которого есть текст.
| Вид модуля | Где находится | Что обычно прячут |
|---|---|---|
| Общий модуль | ветка Общие → Общие модули | Служебные функции, проверку лицензии, интеграции |
| Модуль приложения / управляемого приложения | свойства корня конфигурации | Код при старте и завершении работы |
| Модуль сеанса | корень конфигурации | Установку параметров сеанса |
| Модуль внешнего соединения | корень конфигурации | Логику для COM-подключений |
| Модуль объекта | справочник, документ, обработка, отчёт | Обработку проведения, записи, заполнения |
| Модуль менеджера | тот же объект | Функции, вызываемые без экземпляра объекта |
| Модуль формы | форма объекта | Обработчики кнопок и событий формы |
| Модуль команды | общая команда или команда объекта | Код выполнения команды |
| Модуль набора записей | регистр | Обработку записи движений |
Внешние обработки и отчёты (файлы .epf и .erf) тоже содержат модули. Их открывают в Конфигураторе через Файл → Открыть, и пароль ставится тем же способом, что и в конфигурации.
Если ставите пароль на модуль в типовой конфигурации на поддержке, объект должен быть доступен для редактирования. Закрытая паролем доработка типового объекта усложнит каждое следующее обновление: при сравнении и объединении конфигураций текст этого модуля придётся открывать паролем.
Как поставить пароль на модуль 1С в Конфигураторе
Порядок одинаков для БП, ЗУП, УТ и любой другой конфигурации: механизм принадлежит платформе, а не прикладному решению.
Шаг 1. Сделайте копию
Выгрузите информационную базу через Администрирование → Выгрузить информационную базу или хотя бы сохраните конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл. Получится .cf с открытым кодом — он понадобится, если пароль потеряется.
Шаг 2. Откройте модуль
- Запустите Конфигуратор под пользователем с правом «Администрирование».
- Откройте дерево:
Конфигурация → Открыть конфигурацию. - Найдите нужный объект. Для общего модуля —
Общие → Общие модули, двойной щелчок по имени. - Для модуля объекта или менеджера: правый щелчок по объекту →
Открыть модуль объектаилиОткрыть модуль менеджера. - Для модуля формы: откройте форму и перейдите на вкладку «Модуль» внизу редактора формы.
Шаг 3. Установите пароль
- Поставьте курсор в текст модуля, чтобы активным было окно редактора.
- В главном меню выберите
Текст → Установить пароль. - Введите пароль и подтверждение.
- Нажмите «ОК».
Пароль хранится в самой конфигурации, отдельно от паролей пользователей базы.
Шаг 4. Сохраните и проверьте
- Нажмите
Конфигурация → Обновить конфигурацию базы данных(клавишаF7). - Закройте модуль и откройте его снова — Конфигуратор должен запросить пароль.
- Нажмите «Отмена» в окне пароля: текст не должен показаться.
- Запустите «1С:Предприятие» и проверьте, что код модуля работает как раньше.
Запишите пароль в менеджер паролей сразу, до закрытия Конфигуратора. Восстановить его средствами платформы нельзя.
Как снять или сменить пароль с модуля
Снять или изменить пароль может только тот, кто знает текущий.
Смена пароля
- Откройте защищённый модуль и введите текущий пароль.
- Снова выберите
Текст → Установить пароль. - Задайте новый пароль и подтвердите.
- Обновите конфигурацию базы данных (
F7).
Снятие защиты
- Откройте модуль и введите текущий пароль.
- Вызовите ту же команду установки пароля и оставьте поля нового пароля пустыми.
- Сохраните конфигурацию и проверьте, что модуль открывается без запроса.
Если пароль утерян
Здесь выбор небольшой:
- Восстановить модуль из резервной копии
.cfили из хранилища конфигурации, где он лежал без пароля. - Запросить открытую версию у разработчика, который ставил защиту.
- Если исходника нет и разработчик недоступен — переписать модуль заново по известной логике.
Утилиты «для снятия пароля с модуля» гуляют по форумам. Использовать их на чужом коде — нарушение прав автора. На своём коде — риск получить повреждённую конфигурацию и вредоносный файл в придачу. Резервная копия всегда дешевле.
Поставка без исходного текста — надёжнее пароля
Пароль на модуль — старый и слабый механизм. Если цель — отдать решение клиенту так, чтобы код нельзя было прочитать, используют поставку конфигурации без исходного текста. Платформа удаляет текст модулей и оставляет только скомпилированный код.
Как это сделать:
- Откройте
Конфигурация → Поставка конфигурации → Настройка поставки. - В дереве объектов отметьте модули, которые нужно закрыть, и выберите для них вариант поставки без исходного текста.
- Выполните
Конфигурация → Поставка конфигурации → Создать файлы поставки. - Отдайте клиенту полученный файл
.cf(или.cfuдля обновления).
После загрузки такой поставки модуль у клиента работает, но вместо текста в редакторе будет пусто — исходник физически отсутствует.
| Признак | Пароль на модуль | Поставка без исходного текста |
|---|---|---|
| Где хранится код | Текст в конфигурации, закрыт паролем | Текста нет, только скомпилированный код |
| Можно вернуть текст | Да, зная пароль | Нет, только из исходника разработчика |
| Стойкость к взлому | Низкая | Заметно выше |
| Отладка у клиента | Неудобна | Невозможна по закрытым модулям |
| Удобство сопровождения | Разработчик открывает паролем на месте | Правки — только у себя и новой поставкой |
| Когда выбирать | Внутренняя защита от случайных правок | Коммерческое решение для клиентов |
Исходник закрытой поставки держите у себя в хранилище конфигурации или в git. Если он пропадёт, восстановить код из поставки клиента будет нельзя.
Другие способы защитить модули и конфигурацию
Пароль на модуль и поставка без исходников закрывают код. Но часто задача шире: не дать вносить изменения вообще. Для этого есть ещё несколько инструментов.
- 👤 Права на Конфигуратор. Запустить Конфигуратор может только пользователь с правом «Администрирование». Уберите эту роль у всех, кому не нужен доступ к разработке, и задайте пароли пользователям в
Администрирование → Пользователи. - 📚 Хранилище конфигурации. Объекты захватываются на редактирование конкретным разработчиком, у каждого — свой логин и права. Любая правка видна в истории версий.
- 🧩 Расширения вместо правки типовой. Доработку кладут в расширение (
.cfe), а основная конфигурация остаётся на полной поддержке. Расширение можно поставить в базу отдельно и при необходимости отключить. - 🖥 Перенос логики на сервер. Код, который выполняется на сервере, не передаётся на клиентский компьютер. В сочетании с поставкой без исходников это хорошо скрывает алгоритм.
- 🔑 Система лицензирования конфигураций (СЛК). Для тиражных решений — защита на уровне ключа: без лицензии закрытые функции не выполняются.
Правила безопасной работы с паролями модулей
Пароль на модуль надёжен ровно настолько, насколько аккуратно с ним обращаются.
- Длина и сложность. Минимум 12 символов: буквы разного регистра, цифры, знаки. Слово «1234» или название фирмы подбирается за минуты.
- Отдельный пароль. Не используйте пароль администратора базы или пароль от Windows. Утечка одного не должна открывать всё остальное.
- Менеджер паролей. Храните пароли модулей в общем хранилище команды, а не в текстовом файле на рабочем столе.
- Реестр закрытых модулей. Ведите простую таблицу: какой модуль, когда закрыт, кем, где лежит исходник.
- Смена при уходе сотрудника. Ушёл разработчик, знавший пароль, — смените пароли на модулях, которые он закрывал.
- Открытый исходник отдельно. Рабочая версия с открытым кодом должна лежать в хранилище или в системе контроля версий. Пароль — защита копии у клиента, а не единственное место, где живёт код.
Перед передачей конфигурации клиенту откройте её в чистой базе и пройдитесь по всем закрытым модулям. Так вы убедитесь, что ничего не осталось открытым по ошибке и что всё работает.
Частые ошибки при защите модулей
Закрыли модуль до отладки. Найти ошибку в модуле под паролем неудобно: каждый раз приходится его открывать. Ставьте пароль последним шагом, на отлаженный код.
Защитили не тот модуль. Ключевая логика часто сидит не в модуле объекта, а в общем модуле, который он вызывает. Закрыли модуль формы — а алгоритм виден в общем модуле рядом.
Считали пароль надёжной защитой коммерческого кода. Для продажи решения на сторону пароль слаб. Здесь нужна поставка без исходного текста.
Поставили пароль в типовой конфигурации на поддержке. Следующее обновление превращается в ручное объединение с открытием защищённого модуля. Доработку лучше вынести в расширение.
Не обновили конфигурацию базы данных. Пароль сохранён в основной конфигурации, но в базе остаётся старая версия. Пользователи работают со старым кодом, а при выгрузке .cf из базы результат может удивить.
Потеряли исходник. Единственная копия модуля — под паролем, который никто не помнит. Без резервной копии такой модуль придётся писать заново.
Частые вопросы
Можно ли поставить один пароль на всю конфигурацию 1С?
Замедляет ли пароль на модуле работу программы?
Видит ли пользователь в 1С:Предприятии, что модуль закрыт?
Сохранится ли пароль при выгрузке в .dt или .cf?
Можно ли закрыть паролем внешнюю обработку?
.epf в Конфигураторе через Файл → Открыть, откройте модуль обработки и установите пароль тем же способом, затем сохраните файл.