Каталог решений - В помощь пользователям КЗК 2

В помощь пользователям КЗК 2

В помощь пользователям КЗК 2

В наличии

Задача:
Защитить внеш. обработку или отчет с помощью КЗК 2 — передать клиенту с тем что бы он мог ее запустить, но без копирования файла precomp.dll в каталог ИБ.

Так же может применяться и для блоков конфигурации.

Категория:

Описание

 

Решение

Использовать разработку:

Размещение двоичных данных в объектах 1С

//sale.itcity.ru/public/14459

Посмотреть на «живой» пример можно скачав

//sale.itcity.ru/public/download.php?file=64469

Способ:

1)   Обрабатываем файл precomp.dll обработкой  из «Размещение двоичных данных в объектах 1С» и получаем файл картинки. Вставляем этот файл в первую таблицу (если их несколько) в внеш. обработке в любое место. Картинка вставляется как объект картинка. Присваиваем ей имя «precomp»

2)   Далее обрабатываем код обработки с помощью КЗК 2 получаемзашифрованный код и блок с вызовом загрузки модуля защиты.Например:

// Текст автоматически вставлен при компиляции с помощью «Комплекса защиты конфигурации (версия 2.0)»

Попытка      // провека на загруженность компоненты Прекомпилятор,      // чтобы избежать зацикливания при окончании срока лицензии      Лицензия = СоздатьОбъект(«КЗК2.Лицензия«);Исключение      // загрузка компоненты Прекомпилятор      Если ЗагрузитьВнешнююКомпоненту(«precomp.dll«) = 0 Тогда           // при неудаче вывод предупреждения пользователю            Предупреждение(«Компонента прекомпиляции недоступна!«);      Иначе           // после удачной загрузки создаем внутренний объект компоненты            Лицензия = СоздатьОбъект(«КЗК2.Лицензия«);            // запускаем служебный метод, который перекомпилирует и перезапустит модуль            Лицензия.ПерезапуститьМодуль();           // ВНИМАНИЕ!             // Метод ПерезапуститьМодуль() является служебным и предназначен           // для вызова только из внешних обработок из стартера скомпилированной обработки.            // Самостоятельный вызов этого метода где-нибудь еще может привести к падению 1С:Предприятия      КонецЕсли;КонецПопытки;

 

//[BEGIN COMPILED]//Далее идет закодированный текст модуля 

3) в самый верх вставляем код извлечения файла precomp.dll из картинки в каталог ИБ. Текст можно копировать.

// выгрузка компонентов защиты «Комплекса защиты конфигурации (версия 2.0)»Попытка           глWSH = СоздатьОбъект(«WScript.Shell«);       ИмяФайла = «precomp.dll«;      ИдентификаторФайла = «precomp«;      РазмерФайла = «61440«; //- это размер файла-картинки из обработки получения картинки               Если ФС.СуществуетФайл(КаталогИБ()+ИмяФайла) = 0 Тогда            //РаспаковатьBin(ИмяФайла,ИдентификаторФайла,РазмерФайла)            КаталогФормы=«»;            ИмяФормы=«»;            РасположениеФайла(КаталогФормы,ИмяФормы);            ИмяВременногоФайла=КаталогИБ()+ИмяФайла;            ТекстСкрипта=«            |Sub Main            |     Dim FSO,F            |     Set FSO = CreateObject(«»Scripting.FileSystemObject»»)            |     Set F = FSO.OpenTextFile(«»»+КаталогФормы+ИмяФормы+»»»,1)            |     Str = «»»»            |     BeginFind = 0            |     Do            |           Char = F.Read(1)            |           Str = Str & Char            |           If BeginFind = 0 Then            |                If Right(Str,»+СокрЛП(СтрДлина(ИдентификаторФайла))+»)=»»»+ИдентификаторФайла+»»» Then            |                       BeginFind = 1            |                       Str = «»»»            |                 End If            |           Else            |                 If Right(Str,2) = «»BM»» Then            |                       F.Skip(1076)            |                       Str=F.Read(«+СокрЛП(РазмерФайла)+»)            |                       F.Close            |                       Set F=FSO.CreateTextFile(«»»+ИмяВременногоФайла+»»»)            |                       F.Write(Str)            |                       F.Close            |                       Exit Do            |                 End If            |           End If            |     Loop While F.AtEndOfStream=0            |End Sub            |»;            VBS=СоздатьОбъект(«MSScriptControl.ScriptControl»);             VBS.Language=«vbscript»;             VBS.Timeout=-1;             VBS.AddCode(ТекстСкрипта);             VBS.Run(«Main»);      КонецЕсли; Исключение      глWSH = 0;      Сообщить(«> Не удалось создать объект «»WScript.Shell»»       |Ничего страшного… можно продолжать работу…       |Сообщите Программисту 1C!«,»i«);КонецПопытки;

 

******************************************

Все. Когда пользователь откроет такую обработку с работает начальный код, который выгрузит из картинки библиотеку и поместит в каталог ИБ. Последующий код найдет, существующий уже, файл precomp.dll и загрузит защиту КЗК 2 в 1С. Далее обработка откроется и защищенный код будет успешно скомпилирован. 

has been added to your cart:
Оформление заказа