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