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