Как защитить модуль внешней обработки от "чайника" знают все - поставить на него пароль. А что делать если основную ценность обработки представляет не только модуль но и макет табличного документа содержащий множество различных секций, который Вы рисовали не одну ночь. За примером далеко ходить не надо - посмотрите на любую форму Госкомстата :)
Ну что, поехали - постановка задачи: защитить макет табличного документа внешней обработки.
1). Сохраняем наш супер-макет табличного документа в MXL-файл - МойМакет.mxl
2). Удаляем его из обработки.
3). Архивируем МойМакет.mxl с помощью архиватора в формате ZIP, ОБЯЗАТЕЛЬНО С ПАРОЛЕМ - МойСекретныйПароль, получаем файл МойМакет.zip
4). Добавляем в нашу обработку макет типа Двоичные данные, называем его ШифрованныйМакет и загружаем в него файл МойМакет.zip
5). В форме обработки:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Печать("ШифрованныйМакет");
КонецПроцедуры
6). Модуль обработки:
Процедура Печать(ИмяМакета) экспорт
ИмяMXLфайла = "МойМакет.mxl";
// Извлекаем файл ZIP из макета и сохраняем во временный файл
ИмяВременногоФайлаZIP = ПолучитьИмяВременногоФайла("zip");
ДвоичныеДанные = ПолучитьМакет(ИмяМакета);
ДвоичныеДанные.Записать(ИмяВременногоФайлаZIP);
// Извлекаем из ZIP-архива MXL-файл и сохраняем его во временный файл
ЧтениеZIP = Новый ЧтениеZipФайла(ИмяВременногоФайлаZIP, "МойСекретныйПароль");
ЭлементZIPАрхива = ЧтениеZIP.Элементы.Найти(ИмяMXLфайла);
ЧтениеZIP.Извлечь(ЭлементZIPАрхива, КаталогВременныхФайлов(), РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
ЧтениеZIP.Закрыть();
// Получаем макет табличного документа из MXL-файла
Макет = Новый ТабличныйДокумент;
Макет.Прочитать(КаталогВременныхФайлов()+ ИмяMXLфайла);
// Заметаем следы
УдалитьФайлы(КаталогВременныхФайлов()+ИмяMXLфайла);
УдалитьФайлы(ИмяВременногоФайлаZIP);
// Показываем результирующий табличный документ пользователю
Табличныйдокумент = Новый ТабличныйДокумент;
ОбластьМакета = Макет.ПолучитьОбласть("Область1|Область2");
Для Счетчик1 = 1 по 10 цикл
Табличныйдокумент.Вывести(ОбластьМакета);
Для Счетчик2 = 1 по 4 цикл
Табличныйдокумент.Присоединить(ОбластьМакета);
КонецЦикла;
КонецЦикла;
Табличныйдокумент.Защита=Истина;
Табличныйдокумент.Показать();
КонецПроцедуры
7). А теперь самое главное: ставим пароль на модуль нашей внешней обработки - МойСекретныйПароль, иначе все наши выкрутасы с шифрованием-дешифрованием - коту под хвост :)
Конечно кто-то скажет, что данную защиту можно взломать, и конечно он окажется прав, потому что взломать можно ЛЮБУЮ ЗАЩИТУ. Идеальной защиты не существует, как впрочем, и ничего идеального ...
Вроде ничего не забыл. Пользуем, плюсуем :)