Разработка и Конфигурация · 8 мин
Как поставить пароль на модуль в 1С
Как поставить пароль на модуль в 1С через настройку поставки конфигурации. Пошаговая инструкция, ограничения, проверка результата и типичные ошибки.
Прямой команды «поставить пароль на модуль» в конфигураторе 1С нет. Защита исходного кода выполняется через механизм поставки конфигурации: модуль включается в поставку без исходного текста, а сама поставка защищается паролем. В результате пользователь, получивший такую конфигурацию, может выполнять код, но не может открыть текст модуля для просмотра и редактирования.
Такой подход применяют разработчики отраслевых решений, франчайзи и внедренцы, которые передают клиенту готовую конфигурацию или расширение, но не хотят раскрывать алгоритмы. Важно понимать, что механизм защищает именно от штатного просмотра в конфигураторе, а не является абсолютной криптографической защитой.
Ниже разобран полный порядок действий: подготовка конфигурации, создание поставки с паролем, проверка результата, ограничения механизма и типичные ошибки, из-за которых защита оказывается снятой или конфигурация перестаёт обновляться.
Как устроена защита модулей в 1С
Платформа 1С:Предприятие хранит модули в двух формах: исходный текст и скомпилированный байт-код. Когда модуль поставляется «без исходных текстов», в базу попадает только скомпилированная версия. Конфигуратор при попытке открыть такой модуль показывает сообщение о том, что текст модуля отсутствует в поставке.
Пароль задаётся не на отдельный модуль, а на всю поставку. Он запрещает изменение настройки поставки и снятие защиты. Поэтому правильная формулировка задачи — «защитить модуль поставкой с паролем», а не «зашифровать модуль».
Важно различать защиту модулей и пароль на конфигурацию целиком. Пароль на конфигурацию (при сохранении в файл или через свойства) ограничивает открытие конфигуратора, но не скрывает код у того, кто пароль знает. Поставка без исходных текстов скрывает код даже от администратора базы.
Подготовка перед настройкой поставки
Перед тем как ставить защиту, обязательно сделайте резервную копию информационной базы и выгрузите конфигурацию в файл cf. Если пароль будет утерян, а исходная база повреждена, восстановить тексты модулей будет невозможно — платформа не предоставляет способа снять защиту без пароля.
Проверьте, что конфигурация находится в состоянии, пригодном для поставки: нет синтаксических ошибок, все модули компилируются, конфигурация обновлена в базе данных. Ошибки компиляции при сборке поставки приведут к отказу или к неработоспособному модулю у клиента.
Также решите заранее, какие именно модули нужно скрыть. Обычно защищают общие модули с лицензионной логикой и алгоритмами, а модули форм и объектов оставляют открытыми, чтобы клиент мог дорабатывать интерфейс. Полное закрытие всех модулей сильно ограничивает сопровождение.
Пошаговая настройка поставки с паролем
Откройте конфигуратор под пользователем с правами администратора и перейдите в меню «Конфигурация → Поставка конфигурации → Настройка поставки». Если пункт недоступен, проверьте, что конфигурация не находится на полной поддержке с запретом изменений в текущей базе — настройку поставки выполняет разработчик в своей базе-источнике.
В диалоге настройки поставки создайте новую настройку или откройте существующую. В дереве объектов конфигурации найдите нужные модули — чаще всего это общие модули, модули объектов, модули менеджеров. Для каждого защищаемого модуля установите вариант поставки «без исходных текстов» (флажок поставки исходных текстов снят).
- 1Сделайте резервную копию базы и выгрузку cf с исходниками
- 2Откройте Конфигурация → Поставка конфигурации → Настройка поставки
- 3Создайте настройку поставки и укажите имя и поставщика конфигурации
- 4Для защищаемых модулей отключите поставку исходных текстов
- 5Задайте пароль на изменение настройки поставки
- 6Выполните Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления
- 7Проверьте результат на тестовой базе, загрузив cf из поставки
В свойствах настройки поставки задайте пароль. Используйте устойчивый пароль и храните его в менеджере паролей: восстановить его штатными средствами нельзя. После этого выполните «Создать файлы поставки и обновления» — платформа сформирует файлы cf и, при необходимости, cfu.
Полученный файл поставки — это то, что передаётся клиенту. Ваша рабочая база-источник остаётся с открытыми текстами, защита действует только в поставленной копии.
Проверка результата на тестовой базе
Создайте пустую тестовую базу и загрузите в неё файл конфигурации из поставки («Конфигурация → Загрузить конфигурацию из файла»). После загрузки попробуйте открыть защищённый общий модуль. Признак корректной защиты — сообщение о недоступности текста модуля и невозможность его редактирования.
Затем проверьте работоспособность: запустите тестовую базу в режиме предприятия и выполните операции, которые вызывают код защищённых модулей. Скомпилированный код должен выполняться без ошибок — отсутствие исходников не влияет на исполнение.
Как проверить результат
Текст недоступен, редактирование невозможно
Модуль открывается и читается — исходники попали в поставку
Функции защищённого модуля выполняются без ошибок
Ошибки вызова методов — модуль не скомпилирован в поставке
Запрашивается пароль
Настройка меняется свободно — пароль не задан
Ограничения и альтернативные способы защиты
Поставка без исходных текстов защищает от штатного просмотра в конфигураторе, но не гарантирует абсолютную защиту от целенаправленного анализа скомпилированного кода. Рассматривайте механизм как защиту от типового сценария копирования, а не как шифрование коммерческой тайны.
Если конфигурация должна оставаться расширяемой, альтернативой служит вынос закрытой логики в расширение конфигурации, которое поставляется отдельно и тоже может быть собрано без исходных текстов. Это позволяет клиенту обновлять основную конфигурацию, не затрагивая защищённую часть.
Сравнение вариантов
Штатный способ скрыть код модулей; требует аккуратного сопровождения обновлений через cfu
Подходит для отдельной защищаемой доработки; основная база обновляется независимо
Ограничивает вход в конфигуратор, но не скрывает код от того, кто пароль знает
Для внешних обработок и отчётов действует похожий принцип: их можно поставлять в скомпилированном виде, ограничив доступ к тексту модуля объекта. Это удобно для небольших коммерческих решений, не требующих полноценной поставки.
Типичные ошибки и как их избежать
Самая частая ошибка — утеря пароля при отсутствии резервной копии с исходниками. Вторая по частоте — сборка поставки из устаревшей версии конфигурации: клиент получает старый код, а разработчик уверен, что отправил актуальный. Всегда сверяйте версию конфигурации перед созданием файлов поставки.
Ещё одна проблема — обновление защищённой конфигурации у клиента обычной загрузкой cf из непоставочного файла: это может снять поддержку и нарушить последующие обновления. Клиенту передаются только файлы, сформированные механизмом поставки.
Что важно запомнить
Пароль на модуль в 1С реализуется через настройку поставки конфигурации: модуль поставляется без исходных текстов, а настройка защищается паролем. Перед защитой обязательно сохраните копию с исходниками, а результат проверьте на тестовой базе — и на недоступность текста, и на работоспособность кода.
Частые вопросы
Можно ли поставить пароль только на один модуль, а не на всю поставку?
Нет, пароль задаётся на настройку поставки целиком. Но скрыть исходные тексты можно выборочно — только для нужных модулей, остальные останутся открытыми в той же поставке.
Что делать, если пароль на поставку утерян?
Штатного способа восстановления нет. Если сохранилась база или выгрузка cf с исходными текстами, создайте новую настройку поставки с новым паролем. Если исходников нет, код считается безвозвратно закрытым.
Будет ли работать код модуля без исходных текстов?
Да. В базу попадает скомпилированный байт-код, который платформа исполняет в обычном режиме. Недоступен только просмотр и редактирование текста в конфигураторе.
Можно ли защитить модуль во внешней обработке?
Да, внешние обработки и отчёты можно поставлять в скомпилированном виде без исходного текста модуля. Это распространённый способ распространения небольших коммерческих решений.
Мешает ли защита модулей обновлению конфигурации у клиента?
Нет, если обновления формируются тем же механизмом поставки — файлами cfu. Проблемы возникают при попытке обновить защищённую конфигурацию произвольным cf-файлом, поэтому клиенту передают только поставочные файлы.