База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как защитить ключевую логику в 1С через внешние обработки?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 часа, 21 минута назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
24 апреля 2026 в 12:52 #36806
2. Вынесение ключевой логики в внешние обработки с закрытыми модулями
— Вынесите важные алгоритмы в отдельные внешние обработки, модули которых запаролены.
— В основной обработке вызывайте эти внешние обработки.
— Можно хранить внешние обработки в базе в виде двоичных данных (макетов), чтобы не было простого доступа к файлам. — можно поподробнее -
24 апреля 2026 в 12:52 #36807
Разберу подробно, как организовать защиту ключевой логики через внешние обработки с закрытыми модулями и хранением их в базе в виде двоичных данных.
—
### 1. Вынесение ключевой логики в отдельную внешнюю обработку с закрытым модулем
— Создаёте внешнюю обработку (файл *.epf), в которой пишете все важные алгоритмы в модуле объекта (не в модуле формы!).
— В свойствах модуля объекта ставите пароль (через меню Конфигуратор → Свойства модуля → Пароль). Это закрывает исходный код от просмотра.
— В модуле объекта делаете экспортные процедуры и функции, которые будут вызываться из основной обработки. Например:1С (Код)1234Функция РассчитатьСекретноеЗначение(Параметр) Экспорт// Ваша логикаВозврат Параметр * 42; // примерКонецФункции—
### 2. Вызов внешней обработки из основной обработки
— В основной обработке (или конфигурации) вы программно загружаете внешнюю обработку из файла или из двоичных данных (макета).
— Для этого используйте методы из менеджераВнешниеОбработки:1С (Код)123456789101112131415161718// Путь к файлу внешней обработки (если храните как файл)ПутьКФайлу = "C:ПутьКВнешняяОбработка.epf";// Или если храните в макете, то сначала получаете двоичные данные макетаДвоичныеДанные = ЭтотОбъект.Макеты.Получить("ИмяМакета");// Записываете двоичные данные во временный файлВременныйФайл = ПолучитьИмяВременногоФайла("epf");ДвоичныеДанные.Записать(ВременныйФайл);// Получаете форму внешней обработкиФормаВнешнейОбработки = ВнешниеОбработки.ПолучитьФорму(ВременныйФайл);// Вызываете экспортную функциюРезультат = ФормаВнешнейОбработки.РассчитатьСекретноеЗначение(123);// Закрываете форму, если нужноФормаВнешнейОбработки.Закрыть();—
### 3. Хранение внешней обработки в базе в виде двоичных данных (макетов)
— В конфигураторе в вашей основной конфигурации создаёте макет (например, «ВнешняяОбработка.epf»).
— В макет загружаете файл внешней обработки (через свойства макета → загрузить из файла).
— Таким образом, файл внешней обработки хранится внутри базы в виде двоичных данных, и его нельзя просто так взять с диска.
— При необходимости запускаете внешнюю обработку, выгружая макет во временный файл (как в примере выше).—
### 4. Почему это защищает?
— Код внешней обработки закрыт паролем, его нельзя посмотреть в конфигураторе.
— Внешняя обработка не лежит в открытом виде на диске, а хранится в базе в виде двоичных данных.
— Вызов происходит программно, пользователь не может просто открыть файл и посмотреть код.
— Если дополнительно скомпилировать модуль объекта внешней обработки (через создание файла поставки без исходников), то декомпиляция становится невозможной.—
### 5. Дополнительные советы
— Для повышения защиты создайте пустую конфигурацию, встроите туда внешнюю обработку, снимите флаг «Включать исходный текст модулей» и создайте файл поставки. После этого модуль будет скомпилированным и закрытым.
— В основной конфигурации используйте вызов из двоичных данных, чтобы не хранить файл на диске.
— Если нужно обновлять внешнюю обработку — обновляйте макет с новым файлом.—
### Пример кода для вызова из макета
1С (Код)1234567891011Функция ВызватьВнешнююОбработку()ДвоичныеДанные = ЭтотОбъект.Макеты.Получить("ВнешняяОбработка.epf");ВременныйФайл = ПолучитьИмяВременногоФайла("epf");ДвоичныеДанные.Записать(ВременныйФайл);Форма = ВнешниеОбработки.ПолучитьФорму(ВременныйФайл);Результат = Форма.РассчитатьСекретноеЗначение(100);Форма.Закрыть();Возврат Результат;КонецФункции—
Если нужна помощь с конкретным кодом или настройкой — могу помочь.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.