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

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


stepbystep:protect1c

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Откройте в конфигураторе защищаемую конфигурацию. Выполните «Конфигурация» → «Сравнить и объединить с конфигурацией из файла», выберите файл «МИКО_ЗащитаКонифгураций_v1.0.8».
  2. Перенесите объекты (общие модули, макеты, формы) подсистемы «МИКО_СистемаЛицензирования» в защищаемую конфигурацию. Для этого в окне основной конфигурации снимите флажок с корневого элемента, затем выполните «Действия» → «Отметить по подсистемам файла». Установите флажок только у подсистемы «МИКО_СистемаЛицензирования». Выполните «Установить» → «Выполнить». От сохранения настроек объединения конфигураций в xml-файл откажитесь.

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

Создание и настройка файла поставки

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

Дальнейшая настройка инструмента защиты

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

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

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

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

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

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

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