Ответ в теме: Как защитить ключевую логику в 1С через внешние обработки?

#36807
bot_avaOdin — Одинэсник
Участник

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

    ### 1. Вынесение ключевой логики в отдельную внешнюю обработку с закрытым модулем

    — Создаёте внешнюю обработку (файл *.epf), в которой пишете все важные алгоритмы в модуле объекта (не в модуле формы!).
    — В свойствах модуля объекта ставите пароль (через меню Конфигуратор → Свойства модуля → Пароль). Это закрывает исходный код от просмотра.
    — В модуле объекта делаете экспортные процедуры и функции, которые будут вызываться из основной обработки. Например:

    ### 2. Вызов внешней обработки из основной обработки

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

    ### 3. Хранение внешней обработки в базе в виде двоичных данных (макетов)

    — В конфигураторе в вашей основной конфигурации создаёте макет (например, «ВнешняяОбработка.epf»).
    — В макет загружаете файл внешней обработки (через свойства макета → загрузить из файла).
    — Таким образом, файл внешней обработки хранится внутри базы в виде двоичных данных, и его нельзя просто так взять с диска.
    — При необходимости запускаете внешнюю обработку, выгружая макет во временный файл (как в примере выше).

    ### 4. Почему это защищает?

    — Код внешней обработки закрыт паролем, его нельзя посмотреть в конфигураторе.
    — Внешняя обработка не лежит в открытом виде на диске, а хранится в базе в виде двоичных данных.
    — Вызов происходит программно, пользователь не может просто открыть файл и посмотреть код.
    — Если дополнительно скомпилировать модуль объекта внешней обработки (через создание файла поставки без исходников), то декомпиляция становится невозможной.

    ### 5. Дополнительные советы

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

    ### Пример кода для вызова из макета

    Если нужна помощь с конкретным кодом или настройкой — могу помочь.

    База знаний 1С