Инструменты пользователя

Инструменты сайта


common:stepbystep1cprotect

Это старая версия документа!


Шаг за шагом: защита конфигурации 1С

В общем случае для защиты своей конфигурации 1С понадобится:

  • создать продукт в своем личном кабинете;
  • определить способ лицензирования продукта - по количеству пользователей или по количеству хостов.
  • установить на свой компьютер инструмент для выполнения процедуры защиты продукта;
  • добавить в продукт интерактивную форму активации продукта.

Далее рассмотрим всю процедуру по шагам. Создадим простую конфигурацию 1С, а для выдачи лицензий на работу с ней будем использовать демо-доступ к личному кабинету. Адрес, логин и пароль высылается на электронную почту после регистрации.

Обзор демонстрационной базы

Для примера будем использовать конфигурацию для учета домашних животных.

  1. Скачайте файл демонстрационной базы «МурМур.dt» (ссылка в электронном письме).
  2. Откройте скаченную базу в конфигураторе. Структура конфигурации имеет следующий вид. В справочнике «Котики» мы будем хранить информацию о наших животных. При добавлении нового животного в справочник в качестве имени можно выбрать одну из популярных кличек. Клички хранятся в регистре сведений, а код для выборки записей из этого регистра расположен в общем модуле «КотыСервер».
  1. Откройте модуль формы элемента справочника «Котики». Модуль содержит код для заполнения выпадающего списка «Кличка» известными именами котов. Выборка элементов для списка выполняется в общем модуле «КотыСервер».
    &НаСервереБезКонтекста
    Функция ПолучитьСписокКличек(Пол)
    	
    	Возврат КотыСервер.ПолучитьКличкиКотов(Пол);
    	
    КонецФункции
    
    &НаКлиенте
    Процедура ПолПриИзменении(Элемент)
    	
    	КличкиКотов = ПолучитьСписокКличек(Объект.Пол);
    	
    	Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов);
    	
    КонецПроцедуры
    
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    	
    	КличкиКотов = ПолучитьСписокКличек(Объект.Пол);
    	
    	Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов);
    	
    КонецПроцедуры
  2. Перейдите к модулю «КотыСервер». Выборка кличек выполняется простым запросом с одним параметром. Код этого модуля будет в дальнейшем скрыт, а функция «ПолучитьСписокКличек» будет требовать наличие лицензии на продукт.
    Функция ПолучитьКличкиКотов(Пол) Экспорт
    	
    	Запрос = Новый Запрос;
    	Запрос.Текст = 
    		"ВЫБРАТЬ
    		|	КличкиКотов.Кличка
    		|ИЗ
    		|	РегистрСведений.КличкиКотов КАК КличкиКотов
    		|ГДЕ
    		|	КличкиКотов.Пол = &Пол";
    	Запрос.УстановитьПараметр("Пол", Пол);
    	
    	Результат = Запрос.Выполнить();
    	
    	МассивКличек = Результат.Выгрузить().ВыгрузитьКолонку("Кличка");
    	
    	Возврат МассивКличек;
    	 
    КонецФункции

Регистрация продукта в личном кабинете

Фича - это тот функционал, который подлежит лицензированию. Это может быть отдельный модуль, обработка или целая конфигурация. Далее, для примера, будем лицензировать конфигурацию.
Продукт - это то, что мы предлагаем клиентам. Продукт может состоять из одной или нескольких фич. Т.е. лицензируемый функционал (фичи) может быть предложен клиенту как по отдельности, так и в виде комплекта.

Перейдем к настройке продукта в личном кабинете.

  1. Откройте личный кабинет и перейдите на страницу фич.
  2. Добавьте новую фичу. В качестве названия укажите «Учет котов».
  3. Далее перейдите к странице продуктов.
  4. Добавьте новый продукт. В нашем примере будет продукт с одной фичей и с ограничением лицензии по количеству пользователей. Для наглядности в названии продукта отразим функционал и способ лицензирования: «Учет котов на 10 пользователей».

Встраивание подсистемы лицензирования

Настроим инструмент защиты конфигураций (ссылка в электронном письме).

  1. Укажите в настройках код поставщика (vendor code). Персональный код указан в личном кабинете. Идентификатор разработчика генерируется автоматически и понадобится позже.
  2. Откройте список фич и добавьте новую, с тем же кодом и наименованием, что и в личном кабинете.
  3. Создайте новую конфигурацию. Укажите имя конфигурации 1С и каталог файлов поставки (например, H:\tmp\ПоставкаМурМур).
  4. Сохраните изменения. Идентификатор продукта будет сформирован автоматически и понадобится позже.

Перейдем к защищаемой конфигурации 1С. Сперва нужно перенести в конфигурацию объекты системы лицензирования.

  1. В конфигураторе защищаемой конфигурации откройте файл МИКО_ЗащитаКонфигураций.cf в режиме сравнения и объединения.
  2. Перенесите объекты подсистемы «МИКО_СистемаЛицензирования» в защищаемую конфигурацию.
  3. Откройте общий модуль «МИКО_ЛицензированиеПереопределяемый».
  4. Заполнение тело процедуры «ЛицензируемыеПродукты», указав наименование продукта и идентификаторы, полученные на предыдущих шагах.
    Процедура ЛицензируемыеПродукты(Продукты) Экспорт
    	
    	ОписаниеПродукта = Новый Структура;
    	ОписаниеПродукта.Вставить("Наименование",              "Учет котов");
    	ОписаниеПродукта.Вставить("ИдентификаторПродукта",     "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
    	ОписаниеПродукта.Вставить("ИдентификаторРазработчика", "XX-XX-XX");
    	
    	Продукты.Добавить(ОписаниеПродукта);
    	
    КонецПроцедуры
  5. В этом же модуле нужно указать местоположение макетов внешних компонент. Все компоненты персонализированы под разработчика и получить их можно по запросу. В данном примере компоненты подключаются к демо-серверу лицензирования.
    Процедура ПриИнициализацииЗакрытогоМодуля(ИдентификаторРазработчика, МестоположениеКомпонента) Экспорт
    	
    	Если ИдентификаторРазработчика = "XX-XX-XX" Тогда
    		МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентЗакрытогоМодуля";
    	КонецЕсли;
    	
    КонецПроцедуры
    
    Процедура ПриИнициализацииФормыРегистрации(ИдентификаторРазработчика, МестоположениеКомпонента) Экспорт
    	
    	Если ИдентификаторРазработчика = "XX-XX-XX" Тогда
    		МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентРегистрацииПродукта";
    	КонецЕсли;
    	
    КонецПроцедуры
  6. Для работы закрытого модуля потребуется лицензионный ключ. Система будет периодически запрашивать ключ, а также может выдать новый при регистрации продукта.
    Процедура ПриЧтенииЛицензионногоКлюча(ИдентификаторПродукта, ЛицензионныйКлюч) Экспорт
    	
    	Если ИдентификаторПродукта = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" Тогда
    		ЛицензионныйКлюч = Константы.КотыЛицензионныйКлюч.Получить();
    	КонецЕсли;
    	
    КонецПроцедуры
    
    Процедура ПриЗаписиЛицензионногоКлюча(ИдентификаторПродукта, ЛицензионныйКлюч) Экспорт
    	
    	Если ИдентификаторПродукта = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" Тогда
    		Константы.КотыЛицензионныйКлюч.Установить(ЛицензионныйКлюч);
    	КонецЕсли;
    	
    КонецПроцедуры
  7. Обновите конфигурацию базы данных.
  8. Настройте поставку конфигурации так, чтобы и исходный текст модуля «КотыСервер» был исключен из поставки.
  9. Сформируйте файл поставки, указав папку «H:\tmp\ПоставкаМурМур».

Вернемся к инструменту защиты конфигураций.

  1. Создайте новый образ конфигурации. Укажите путь к файлу конфигурации «H:\tmp\ПоставкаМурМур\1.0\Коты.cf».
  2. Откройте образ конфигурации. В нем будет указан один программный модуль - КотыСервер.
  3. Откройте модуль «КотыСервер» и создайте новую защитную маску. Для функции «ПолучитьКличкиКотов» укажите фичу «Учет котов».
  4. Сохраните изменения, вернитесь на начальный экран.
  5. В журнале поставок напротив образа конфигурации нажмите на гиперссылку «Установить защиту». После завершения в каталоге поставки появится файл «1Cv8.protect.cf».

Проверка результатов

После выполнения всех этапов осталось проверить полученные результаты.

  1. Скопируйте информационную базу и загрузить в нее конфигурацию из полученного файла «Коты.protect.cf».
common/stepbystep1cprotect.1477038723.txt.gz · Последнее изменение: 2024/01/23 15:06 (внешнее изменение)