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

Разработка и Конфигурация · 8 мин

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

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

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

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

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

Как устроена защита модулей в 1С

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

Пароль задаётся не на отдельный модуль, а на всю поставку. Он запрещает изменение настройки поставки и снятие защиты. Поэтому правильная формулировка задачи — «защитить модуль поставкой с паролем», а не «зашифровать модуль».

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

Подготовка перед настройкой поставки

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

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

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

Пошаговая настройка поставки с паролем

Откройте конфигуратор под пользователем с правами администратора и перейдите в меню «Конфигурация → Поставка конфигурации → Настройка поставки». Если пункт недоступен, проверьте, что конфигурация не находится на полной поддержке с запретом изменений в текущей базе — настройку поставки выполняет разработчик в своей базе-источнике.

В диалоге настройки поставки создайте новую настройку или откройте существующую. В дереве объектов конфигурации найдите нужные модули — чаще всего это общие модули, модули объектов, модули менеджеров. Для каждого защищаемого модуля установите вариант поставки «без исходных текстов» (флажок поставки исходных текстов снят).

Порядок действий
  1. 1
    Сделайте резервную копию базы и выгрузку cf с исходниками
  2. 2
    Откройте Конфигурация → Поставка конфигурации → Настройка поставки
  3. 3
    Создайте настройку поставки и укажите имя и поставщика конфигурации
  4. 4
    Для защищаемых модулей отключите поставку исходных текстов
  5. 5
    Задайте пароль на изменение настройки поставки
  6. 6
    Выполните Конфигурация → Поставка конфигурации → Создать файлы поставки и обновления
  7. 7
    Проверьте результат на тестовой базе, загрузив cf из поставки

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

Полученный файл поставки — это то, что передаётся клиенту. Ваша рабочая база-источник остаётся с открытыми текстами, защита действует только в поставленной копии.

Проверка результата на тестовой базе

Создайте пустую тестовую базу и загрузите в неё файл конфигурации из поставки («Конфигурация → Загрузить конфигурацию из файла»). После загрузки попробуйте открыть защищённый общий модуль. Признак корректной защиты — сообщение о недоступности текста модуля и невозможность его редактирования.

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

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

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

Открытие защищённого модуля в конфигураторе
Норма

Текст недоступен, редактирование невозможно

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

Модуль открывается и читается — исходники попали в поставку

Работа кода в режиме предприятия
Норма

Функции защищённого модуля выполняются без ошибок

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

Ошибки вызова методов — модуль не скомпилирован в поставке

Попытка изменить настройку поставки
Норма

Запрашивается пароль

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

Настройка меняется свободно — пароль не задан

Ограничения и альтернативные способы защиты

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

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

Сравнение вариантов

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

Штатный способ скрыть код модулей; требует аккуратного сопровождения обновлений через cfu

Расширение конфигурации

Подходит для отдельной защищаемой доработки; основная база обновляется независимо

Пароль на конфигурацию

Ограничивает вход в конфигуратор, но не скрывает код от того, кто пароль знает

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

Типичные ошибки и как их избежать

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

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

Типичные ошибки
01
Потеря пароля без резервной копии исходников — код восстановить нельзя
02
Защита всех модулей подряд — клиент не может доработать даже формы, сопровождение усложняется
03
Сборка поставки без проверки компиляции — у клиента код не выполняется
04
Передача клиенту обычной выгрузки cf вместо файла поставки — защита отсутствует
Итог

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

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

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

Можно ли поставить пароль только на один модуль, а не на всю поставку?

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

Что делать, если пароль на поставку утерян?

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

Будет ли работать код модуля без исходных текстов?

Да. В базу попадает скомпилированный байт-код, который платформа исполняет в обычном режиме. Недоступен только просмотр и редактирование текста в конфигураторе.

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

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

Мешает ли защита модулей обновлению конфигурации у клиента?

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