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

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


stepbystep:protect1c

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

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

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

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

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

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

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

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

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

В данном примере не будем выделять отдельные функции конфигурации, поэтому в продукте будет одна фича и лицензирование по количеству пользователей работающих с конфигурацией. Перейдем к настройке продукта в личном кабинете разработчика.

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

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

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

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

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

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

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

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

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

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

  1. Создайте новую информационную базу и загрузите в нее копию базы «Кошкин Дом» из файла «КошкинДом.dt».
  2. Обновите конфигурацию информационной базы, загрузив ее из файла «КошкинДом.protect.cf».
  3. Убедитесь, что текст модуля «КотыСервер» стал недоступен.
  4. Запустите информационную базу в режиме предприятия и попробуйте открыть один из элементов справочника «Котики». На экране будет сообщение об ошибке: «Для выполнения операции требуется лицензионный ключ».

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

  1. Откройте модуль управляемого приложения и добавьте в него код следующего содержания:
    Процедура ПриНачалеРаботыСистемы()
    	
    	ИнициализироватьСистемуЛицензирования("Кошкин дом");
    	
    КонецПроцедуры
    
    Процедура ПриЗавершенииРаботыСистемы(Отказ, ТекстПредупреждения)
    	
    	ЗавершитьРаботуСистемыЛицензирования("Кошкин дом");
    	
    КонецПроцедуры
    
    
    ////////////////////////////////////////////////////////////////////////////////
    
    Процедура ИнициализироватьСистемуЛицензирования(НаименованиеКонфигурации)
    	
    	Попытка
    		
    		МИКО_Лицензирование.НачатьРаботу(НаименованиеКонфигурации);
    		
    	Исключение
    		
    		ПараметрыФормы = Новый Структура;
    		ПараметрыФормы.Вставить("НаименованиеПродукта", НаименованиеКонфигурации);
    		ПараметрыФормы.Вставить("ОписаниеОшибки",       ИнформацияОбОшибке().Описание);
    		
    		ОткрытьФорму("ОбщаяФорма.МИКО_РегистрацияПродукта", ПараметрыФормы);
    		
    	КонецПопытки;
    	
    КонецПроцедуры
    
    Процедура ЗавершитьРаботуСистемыЛицензирования(НаименованиеКонфигурации)
    	
    	МИКО_Лицензирование.ЗавершитьРаботу(НаименованиеКонфигурации);
    	
    КонецПроцедуры
  2. Обновите и запустите информационную базу. При первом запуске появится окно регистрации продукта.
  3. Нажмите кнопку «Перейти к регистрации клиента…» и заполните анкету нового клиента.
  4. Нажмите кнопку «Зарегистрировать». Если данные введены корректно, то система выдаст новый лицензионный ключ, в который будет зашит продукт идентификатором 25 - «Учет котов на 2х пользователей». Все выданные ключи можно увидеть в соответствующем разделе личного кабинета разработчика (фильтр должен быть заполнен).
  5. Убедитесь, что элементы справочника «Котики» теперь открываются. При этом будет создана сессия с сервером лицензирования и произведен захват фичи, что можно проверить в разделе «Монитор сессий» личного кабинета разработчика (фильтр должен быть заполнен).
  6. Завершите работу с программой 1С. Фича будет освобождена, а сессия завершена.
stepbystep/protect1c.txt · Последние изменения: 2016/11/18 11:05 — mcvet