Пароль на код общего модуля в Конфигураторе 1С 8.3: когда он нужен и чем его заменить

· 9 мин

Содержание

Пароль на общий модуль ставят в Конфигураторе: откройте модуль, в главном меню выберите Текст → Установить пароль, дважды введите пароль и сохраните конфигурацию. После этого текст модуля открывается только по паролю, а код продолжает работать как обычно. Пункт меню Текст появляется только тогда, когда в Конфигураторе активно окно с текстом модуля.

Способов скрыть код общего модуля в 1С 8.3 три. Пароль — самый быстрый, но защищает только от случайного просмотра. Поставка без исходного текста — для тиражных решений, когда код вообще не должен попасть к клиенту. Запрет на запуск Конфигуратора — для своей базы, где надо закрыть код от собственных сотрудников. Ниже — как работает каждый вариант и где каждый ломается.

Зачем ставить пароль на общий модуль и от чего он не спасёт

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

Кому это нужно:

  • 🧩 Разработчику доработки — чтобы клиент или его штатный программист не правил алгоритм расчёта, за который вы отвечаете.
  • 🔑 Владельцу интеграции — если в модуле лежат логин и адрес сервиса (так делать не стоит, но так бывает).
  • 🛑 Команде поддержки — чтобы «случайный» правщик не сломал общий модуль, от которого зависит половина конфигурации.

Чего пароль не даёт:

  • ❌ Не защищает от целенаправленного взлома. Для защищённых модулей давно существуют сторонние утилиты, простой пароль снимают за секунды.
  • ❌ Не прячет сам факт существования модуля, его имя, свойства и экспортные процедуры: их видно в дереве конфигурации и в синтакс-помощнике.
  • ❌ Не ограничивает пользователей в режиме 1С:Предприятие. Права на данные задают роли, а не пароль модуля.

Какие модули имеет смысл закрывать

Не нужно ставить пароль на всё подряд. Каждый защищённый модуль — лишний шаг при обновлении и отладке. Разумный набор выглядит так:

  • 🔒 модули с вашим алгоритмом расчёта (тарифы, бонусы, распределение затрат);
  • 🔒 модули интеграции с внешними сервисами, где лежит логика обмена;
  • ✅ вспомогательные модули с форматированием строк и мелкими функциями — оставьте открытыми, в них часто приходится искать ошибки.

Хорошее правило: если модуль меняется чаще раза в месяц, пароль на нём будет больше мешать вам, чем защищать от других.

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

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

Подготовка занимает пять минут, но без неё пароль легко превращается в проблему для вас самих.

  1. Права. Войти в Конфигуратор может только пользователь с правом Администрирование. Если список пользователей пуст, в Конфигуратор пускают всех — с этим разберитесь заранее (см. раздел о защите ниже).
  2. Режим поддержки. Если общий модуль типовой и конфигурация на поддержке, модуль нельзя менять, пока не включена возможность изменения: Конфигурация → Поддержка → Настройка поддержки. Свои общие модули, добавленные в конфигурацию, на поддержке не стоят.
  3. Копия с открытым кодом. Выгрузите конфигурацию в файл: Конфигурация → Сохранить конфигурацию в файл…. Получится .cf с исходниками. Храните его у себя, а не в той же базе.
  4. Хранилище. Если база подключена к хранилищу конфигурации, захватите модуль в хранилище, иначе сохранить изменение не получится.
  5. Версия платформы. Функция есть во всех релизах 8.3. Если у разработчиков разные релизы платформы, договоритесь о едином номере — так меньше сюрпризов при открытии конфигурации.

Запишите пароль в менеджер паролей до того, как нажмёте ОК. Штатного способа восстановить забытый пароль модуля нет.

Как поставить пароль на общий модуль: по шагам

Шаг 1. Откройте модуль

  1. Запустите базу в режиме Конфигуратор.
  2. Откройте дерево: Конфигурация → Открыть конфигурацию.
  3. Разверните ветку Общие → Общие модули.
  4. Дважды щёлкните по нужному модулю — откроется окно с его текстом.

Шаг 2. Установите пароль

  1. Не закрывая окно модуля, щёлкните по его тексту, чтобы окно стало активным.
  2. В главном меню выберите Текст → Установить пароль.
  3. Введите пароль и подтверждение. Пароль чувствителен к регистру.
  4. Нажмите ОК и закройте окно модуля.

Шаг 3. Сохраните и примените

  1. Сохраните конфигурацию: Конфигурация → Сохранить конфигурацию (Ctrl+S).
  2. Обновите конфигурацию базы данных: Конфигурация → Обновить конфигурацию базы данных (F7).
  3. Закройте Конфигуратор, откройте его снова и попробуйте открыть модуль . Должен появиться запрос пароля.

Проверка в шаге 3 обязательна. Если запроса нет — пароль не сохранился, повторите шаг 2.

Если модулей несколько

Пароль ставится на каждый модуль отдельно. Пакетной команды «защитить все модули» в Конфигураторе нет. Для десятка модулей это рутина, но зато можно задать разные пароли разным модулям.

Тот же пункт меню работает для модуля объекта, модуля менеджера, модуля формы, а также для модулей внешней обработки и расширения — их открывают в Конфигураторе так же.

Как снять пароль с общего модуля или сменить его

Пароль известен

  1. Откройте модуль и введите текущий пароль.
  2. В главном меню снова выберите Текст → Установить пароль.
  3. Чтобы снять защиту, оставьте поля пустыми. Чтобы сменить — введите новый пароль.
  4. Сохраните конфигурацию и обновите конфигурацию базы данных.

Пароль забыт

Здесь выбора немного:

  • 📦 Загрузить копию с открытым кодом. Если у вас есть .cf до установки пароля, сравните его с текущей конфигурацией и перенесите нужный модуль: Конфигурация → Сравнить, объединить с конфигурацией из файла…. Отметьте только этот модуль.
  • 🗂 Взять модуль из хранилища. Если пароль ставили уже после помещения модуля в хранилище, нужная версия есть в его истории.
  • 👤 Спросить автора доработки. Если модуль писал подрядчик, пароль или исходник — его зона ответственности, особенно если это прописано в договоре.

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

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

Ошибки и подвохи защищённых модулей

Диагностика: выберите симптом

Ещё три вещи, о которых узнают слишком поздно:

  • 🔄 Обновления. Каждое обновление типовой конфигурации превращается в цикл «снять пароль → обновить → поставить заново». Если подрядчик ставит пароли на типовые модули, закладывайте это время в регламент.
  • 📁 Выгрузка в файлы. При Конфигурация → Выгрузить конфигурацию в файлы защищённый модуль не выгружается обычным текстом. В системе контроля версий вы увидите изменение, но не увидите, что именно поменялось.
  • 🔍 Глобальный поиск. Поиск по всем текстам конфигурации не находит вызовы внутри защищённого модуля. Рефакторинг, затронувший такой модуль, легко пропустить.

Чем заменить пароль: другие способы защитить общий модуль

От кого вы защищаете код?

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

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

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

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

Сравнение способов

СпособКогда подходитРиски и минусы
Пароль на модульЗащита от случайной правки и любопытстваСнимается сторонними утилитами; мешает обновлению и сравнению
Поставка без исходного текстаТиражное решение, передача кода клиентуНужно хранить исходную конфигурацию; клиент не сможет сам исправить ошибку
Закрытый КонфигураторСвоя база, защита от сотрудниковНе помогает, если у человека есть копия базы
Хранилище конфигурацииКоманда разработчиковНе скрывает код, только контролирует изменения
Внешний сервис или компонентаЦенный алгоритм, коммерческая тайнаДороже в разработке и сопровождении

Перенос логики в серверный модуль

Общий модуль с флажком Сервер (без флажков клиента) исполняется только на стороне сервера. В клиент-серверном варианте код такого модуля не передаётся на компьютер пользователя. Если ценную часть алгоритма держать в серверном модуле, а на клиент отдавать только результат, код не утечёт вместе с клиентским кэшем. От администратора базы это не защищает, но снимает один канал утечки.

Хранилище конфигурации

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

Расширение вместо правки модуля

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

Безопасность: как не потерять ни код, ни контроль

Пароль на модуль бессмыслен, если любой сотрудник может открыть Конфигуратор и выгрузить базу. Порядок действий для администратора:

  1. Заведите пользователей. Пока список пользователей информационной базы пуст, Конфигуратор открывается без пароля у всех: Администрирование → Пользователи в Конфигураторе или раздел Администрирование → Настройки пользователей и прав в режиме 1С:Предприятие.
  2. Ограничьте право «Администрирование». Оно нужно для запуска Конфигуратора. Оставьте его двум-трём ответственным, у остальных — роли без этого права.
  3. Закройте доступ к файлам базы. В файловом варианте каталог базы с 1Cv8.1CD должен быть доступен только тем, кто в нём работает, иначе базу просто скопируют. В клиент-серверном — ограничьте доступ к консоли кластера и СУБД.
  4. Разделите пароли. Пароль на модуль не должен совпадать с паролем администратора базы.
  5. Храните исходники вне базы. Отдельный .cf или выгрузка в файлы в системе контроля версий — с ограниченным доступом.
  6. Пропишите в договоре с подрядчиком, у кого хранятся пароли и исходный код и как они передаются при смене подрядчика.
Перед тем как закрыть модуль паролем
Выполнено: 0 / 5

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

Пароль на общий модуль замедляет работу 1С?
Нет. Пароль защищает только текст модуля в Конфигураторе. Платформа исполняет скомпилированный код, скорость та же.
Можно поставить один пароль на всю конфигурацию?
Штатно — нет, пароль задаётся на каждый модуль отдельно. Закрыть всю конфигурацию от правки можно запретом на запуск Конфигуратора или поставкой без исходного текста.
Видит ли пользователь в 1С:Предприятии, что модуль защищён?
Нет. Для пользователя ничего не меняется: команды, отчёты и обработки, вызывающие процедуры модуля, работают как раньше.
Можно ли вызывать процедуры защищённого модуля из других модулей?
Да. Экспортные процедуры остаются доступными, их имена видны в подсказке. Скрыт только текст реализации.
Что будет с паролем после загрузки конфигурации из файла .cf?
Пароль хранится внутри конфигурации. Если модуль в файле был защищён, после загрузки он останется защищённым тем же паролем.