Иногда возникает необходимость защитить свое творение, представлен разработанный мною подход, дорогие читатели, на ваше суждение и понимание, данная статья просвещена конфигурированию в 8 версии.
Итак для начала вы создали отчет, обработку или документ который конечно же является шедевром и те ноу хау которые вы там воплотили, не хочется по каким либо причинам, моральным или материальным, делится с клиентом.
1) Разработчики восьмой платформы для этих целей нам предлагают закрыть модуль паролем. Ну что же, большое вам за это спасибо.
Однажды у меня возникла ситуация когда клиент пожелал платить деньги позже, ну что же, хорошо, но прокактить вам жадины меня не придется, работа была сделана в срок и естественно была запоролена.
2) Но ведь от этого она не теряет свой функционал и рабочие свойства, мне могут сказать что работа выполнена плохо и денег мы вам не дадим. Ну что ж, в свой запороленый модуль я вставил такой код:
//СИСТЕМА ЗАЩИТЫ
Функция ПрекратитьРаботу()
ПрекратитьРаботу = ?(ВосстановитьЗначение("ПрекратитьРаботу123456789")=Неопределено,Ложь,Истина);
Если ТекущаяДата()>'20071231' или ПрекратитьРаботу Тогда
СохранитьЗначение("ПрекратитьРаботу123456789",Истина);
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Который вызывался перед ключевой процедурой или функцией, как вы видите она привязана ко времени и когда оно, время, приходит значение сохраняется даже перевод стрелок не спасает вредного клиента от головной боли, и ему придется раскошелится или связаться с разработчиком.
3)Идем дальше, бывают ситуации когда нужно позволить пользователю обновить конфигурацию, но если вы поставили пароль то при объединении он его обязательно спросит, что же делать, мой вам совет выполните все ваши важные и ключевые процедуры, функции (Даже можно включить вызов из них функции защиты) в экпортном виде, в модуле внешней обработки (модуль которой конечно вы закрыли).
Обработка готова и ваш документ умеет к ней обращатся, теперь нужно сохранить ее в двоичном виде макета, в объекте метаданных который вы разрабатывали.
Можно использовать такой код :
ДвоичныеДанные = Документы.[ваш документ ].ПолучитьМакет("Макет");
ВременнаяОбработка = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные.Записать(ВременнаяОбработка);
НашаСекретнаяОбработка = ВнешниеОбработки.Создать(ВременнаяОбработка);
И теперь обращаясь к нашим любимым процедурам через созданную и закрытую обработку, мы не имеем проблем с обновлением.
Спасибо за внимание.