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

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


stepbystep:protect1c
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


Следующая версия
stepbystep:protect1c [2016/11/18 14:05] – создано mcvet
Строка 1: Строка 1:
 +====== Шаг за шагом: защита конфигурации 1С ======
  
 +В общем случае для защиты своей конфигурации 1С понадобится:
 +  * создать продукт в своем личном кабинете;
 +  * определить способ лицензирования продукта - по количеству пользователей или хостов;
 +  * установить на свой компьютер инструмент для выполнения процедуры защиты продукта;
 +  * добавить в продукт интерактивную форму активации продукта и вспомогательные модули системы лицензирования.
 +
 +Далее рассмотрим всю процедуру по шагам. Создадим простую конфигурацию 1С, а для выдачи лицензий на работу с ней  будем использовать демо-доступ к личному кабинету. Адрес, логин и пароль высылаются на электронную почту после регистрации.
 +
 +===== Обзор демонстрационной базы =====
 +
 +Для примера будем использовать конфигурацию для учета домашних животных.
 +  - Скачайте файл демонстрационной базы "КошкинДом.dt" (ссылка в электронном письме).
 +  - Создайте информационную базу из загрузите в нее копию из скаченнего файла.\\ Структура конфигурации имеет следующий вид. {{ :stepbystep:21-10-2016_11-23-09.png?nolink |}} В справочнике "Котики" содержится информацию о животных. При добавлении нового животного в справочник в качестве имени можно выбрать одну из популярных кличек. Клички хранятся в регистре сведений, а код для выборки записей из этого регистра расположен в общем модуле "КотыСервер".
 +  - Откройте модуль формы элемента справочника "Котики". Модуль содержит код для заполнения выпадающего списка "Кличка" известными именами котов. Выборка элементов для списка выполняется в общем модуле "КотыСервер".<code>&НаСервереБезКонтекста
 +Функция ПолучитьСписокКличек(Пол)
 +
 + Возврат КотыСервер.ПолучитьКличкиКотов(Пол);
 +
 +КонецФункции
 +
 +&НаКлиенте
 +Процедура ПолПриИзменении(Элемент)
 +
 + КличкиКотов = ПолучитьСписокКличек(Объект.Пол);
 +
 + Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов);
 +
 +КонецПроцедуры
 +
 +&НаСервере
 +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
 +
 + КличкиКотов = ПолучитьСписокКличек(Объект.Пол);
 +
 + Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов);
 +
 +КонецПроцедуры</code>
 +  - Перейдите к модулю "КотыСервер". Выборка кличек выполняется простым запросом с одним параметром. Код этого модуля будет в дальнейшем скрыт, а функция "ПолучитьСписокКличек" будет требовать наличие лицензии на продукт.<code>Функция ПолучитьКличкиКотов(Пол) Экспорт
 +
 + Запрос = Новый Запрос;
 + Запрос.Текст = 
 + "ВЫБРАТЬ
 + | КличкиКотов.Кличка
 + |ИЗ
 + | РегистрСведений.КличкиКотов КАК КличкиКотов
 + |ГДЕ
 + | КличкиКотов.Пол = &Пол";
 + Запрос.УстановитьПараметр("Пол", Пол);
 +
 + Результат = Запрос.Выполнить();
 +
 + МассивКличек = Результат.Выгрузить().ВыгрузитьКолонку("Кличка");
 +
 + Возврат МассивКличек;
 +  
 +КонецФункции</code>
 +
 +===== Регистрация продукта в личном кабинете =====
 +
 +<note tip>**Фича** - это та функциональная опция программы, которая подлежит лицензированию. Программный модуль, обработка, а также вся конфигурация 1С в целом могут являтся фичей. \\
 +**Продукт** - это минимально допустимый набор функциональных опций, который мы предлагаем клиенту как готовое решение. Продукт может состоять как из одной так и из нескольких фич, в зависимости от сложности лицензируемого решения.</note>
 +В данном примере не будем выделять отдельные функции конфигурации, поэтому в продукте будет одна фича и лицензирование по количеству пользователей работающих с конфигурацией.
 +Перейдем к настройке продукта в личном кабинете разработчика.
 +  - Откройте личный кабинет и перейдите на страницу фич.
 +  - Добавьте новую фичу. В качестве названия укажите "Кошкин дом". Идентификатор фичи можно указать произвольный, но позже его нужно будет повторить в коде защищаемой конфигурации (такие данные на изображениях будут обведены синим цветом). {{ :stepbystep:21-10-2016_11-42-58.png?nolink |}}
 +  - Далее перейдите к странице продуктов.
 +  - Добавьте новый продукт. Укажите в нем созданную ранее фичу и ограничение лицензии по количеству пользователей. Для наглядности в названии продукта отразим функционал и способ лицензирования: "Учет котов на 2х пользователей".{{ :stepbystep:21-10-2016_11-44-50.png?nolink |}}Идентификатор продукта присваивается автоматически.
 +{{ :stepbystep:25-10-2016_11-35-58.png?nolink |}}
 +
 +===== Встраивание подсистемы лицензирования =====
 +
 +Настроим инструмент защиты конфигураций (ссылка в электронном письме).
 +  - Укажите в настройках код поставщика (vendor code). Персональный код указан в настройках личного кабинета. Идентификатор разработчика генерируется автоматически и понадобится позже.{{ :stepbystep:21-10-2016_11-53-26.png?nolink |}}{{ :stepbystep:dn_arrow.png?nolink&48 |}}{{ :stepbystep:21-10-2016_11-56-52.png?nolink |}}
 +  - Откройте список фич и добавьте новую, с тем же кодом и наименованием, что и в личном кабинете.{{ :stepbystep:21-10-2016_12-03-34.png?nolink |}}
 +  - Создайте новую конфигурацию. Укажите имя конфигурации 1С и каталог файлов поставки (например, H:\tmp\КошкинДом\Поставка).{{ :stepbystep:21-10-2016_12-07-08.png?nolink |}}
 +  - Сохраните изменения. Идентификатор продукта будет сформирован автоматически и понадобится позже.
 +Перейдем к защищаемой конфигурации 1С. Сперва нужно перенести в конфигурацию объекты системы лицензирования.
 +  - В конфигураторе защищаемой конфигурации откройте файл МИКО_ЗащитаКонфигураций.cf в режиме сравнения и объединения.
 +  - Перенесите объекты (общие модули, макеты, формы) подсистемы "МИКО_СистемаЛицензирования" в защищаемую конфигурацию.
 +  - Откройте общий модуль "МИКО_ЛицензированиеПереопределяемый".
 +  - Заполнение тело процедуры "ЛицензируемыеПродукты", указав наименование продукта и идентификаторы, полученные на предыдущих шагах (обведены синим цветом)<code>Процедура ЛицензируемыеПродукты(Продукты) Экспорт
 +
 + ОписаниеПродукта = Новый Структура;
 + ОписаниеПродукта.Вставить("Наименование",                    "Кошкин дом");
 + ОписаниеПродукта.Вставить("ИдентификаторКонфигурации",       "9cf50201-976d-11e6-810f-0050568123f9");
 + ОписаниеПродукта.Вставить("ПрефиксКлюч",                     "DEMO");
 + ОписаниеПродукта.Вставить("ИдентификаторФичи",               "1");
 + ОписаниеПродукта.Вставить("ИдентификаторТриальногоПродукта", "25");
 +
 + Продукты.Добавить(ОписаниеПродукта);
 +
 +КонецПроцедуры</code>
 +  - В этом же модуле нужно указать местоположение макетов внешних компонент. В данном примере компоненты подключаются к демо-серверу лицензирования. Для подключения к собственным серверам требуются персонализированные под разработчика компоненты, получить их можно по запросу. <code>
 +Процедура ПриИнициализацииЗакрытогоМодуля(ПрефиксКлюч, МестоположениеКомпонента) Экспорт
 +
 + Если ПрефиксКлюч = "DEMO" Тогда
 + МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентЗакрытогоМодуля_DEMO";
 + КонецЕсли;
 +
 +КонецПроцедуры
 +
 +Процедура ПриИнициализацииФормыРегистрации(ПрефиксКлюч, МестоположениеКомпонента) Экспорт
 +
 + Если ПрефиксКлюч = "DEMO" Тогда
 + МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентРегистрацииПродукта_DEMO";
 + КонецЕсли;
 +
 +КонецПроцедуры</code>
 +  - Для работы закрытого модуля потребуется лицензионный ключ. Система будет периодически запрашивать ключ, а также может выдать новый при регистрации продукта.<code>Процедура ПриЧтенииЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт
 +
 + Если ИдентификаторКонфигурации= "9cf50201-976d-11e6-810f-0050568123f9" Тогда
 + ЛицензионныйКлюч = Константы.КошкинДомЛицензионныйКлюч.Получить();
 + КонецЕсли;
 +
 +КонецПроцедуры
 +
 +Процедура ПриЗаписиЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт
 +
 + Если ИдентификаторКонфигурации= "9cf50201-976d-11e6-810f-0050568123f9" Тогда
 + Константы.КошкинДомЛицензионныйКлюч.Установить(ЛицензионныйКлюч);
 + КонецЕсли;
 +
 +КонецПроцедуры</code>
 +  - Обновите конфигурацию базы данных.
 +  - Настройте поставку конфигурации так, чтобы исходный текст модуля "КотыСервер" был исключен из конфигурации.
 +  - Сформируйте файл поставки, разместив его по пути "H:\tmp\КошкинДом\Поставка\1.0\КошкинДом.cf".
 +
 +Вернемся к инструменту защиты конфигураций.
 +  - Создайте новый образ конфигурации. Укажите путь к файлу конфигурации "H:\tmp\КошкинДом\Поставка\1.0\КошкинДом.cf".
 +  - Откройте образ конфигурации. В нем будет указан один программный модуль - КотыСервер.{{ :stepbystep:26-10-2016_22-36-35.png?nolink |}}
 +  - Откройте модуль "КотыСервер" и создайте новую защитную маску. Для функции "ПолучитьКличкиКотов" укажите фичу "Учет котов".{{ :stepbystep:26-10-2016_22-47-43.png?nolink |}}
 +  - Сохраните изменения и вернитесь на начальную страницу.
 +  - В журнале поставок напротив образа конфигурации нажмите на гиперссылку "Установить защиту". После завершения работы системы установки защиты в каталоге поставки появится файл "КошкинДом.protect.cf".
 +
 +===== Проверка результатов =====
 +
 +После выполнения всех этапов осталось проверить полученные результаты.
 +  - Создайте новую информационную базу и загрузите в нее копию базы "Кошкин Дом" из файла "КошкинДом.dt".
 +  - Обновите конфигурацию информационной базы, загрузив ее из файла "КошкинДом.protect.cf".
 +  - Убедитесь, что текст модуля "КотыСервер" стал недоступен.
 +  - Запустите информационную базу в режиме предприятия и попробуйте открыть один из элементов справочника "Котики". На экране будет сообщение об ошибке: "Для выполнения операции требуется лицензионный ключ". {{ :stepbystep:18-11-2016_10-36-47.png?nolink |}}
 +
 +Чтобы пользователь мог получить лицензионный ключ потребуется добавить форму регистрации.
 +  - Откройте модуль управляемого приложения и добавьте в него код следующего содержания: <code>
 +Процедура ПриНачалеРаботыСистемы()
 +
 + ИнициализироватьСистемуЛицензирования("Кошкин дом");
 +
 +КонецПроцедуры
 +
 +Процедура ПриЗавершенииРаботыСистемы(Отказ, ТекстПредупреждения)
 +
 + ЗавершитьРаботуСистемыЛицензирования("Кошкин дом");
 +
 +КонецПроцедуры
 +
 +
 +////////////////////////////////////////////////////////////////////////////////
 +
 +Процедура ИнициализироватьСистемуЛицензирования(НаименованиеКонфигурации)
 +
 + Попытка
 +
 + МИКО_Лицензирование.НачатьРаботу(НаименованиеКонфигурации);
 +
 + Исключение
 +
 + ПараметрыФормы = Новый Структура;
 + ПараметрыФормы.Вставить("НаименованиеПродукта", НаименованиеКонфигурации);
 + ПараметрыФормы.Вставить("ОписаниеОшибки",       ИнформацияОбОшибке().Описание);
 +
 + ОткрытьФорму("ОбщаяФорма.МИКО_РегистрацияПродукта", ПараметрыФормы);
 +
 + КонецПопытки;
 +
 +КонецПроцедуры
 +
 +Процедура ЗавершитьРаботуСистемыЛицензирования(НаименованиеКонфигурации)
 +
 + МИКО_Лицензирование.ЗавершитьРаботу(НаименованиеКонфигурации);
 +
 +КонецПроцедуры</code>
 +  - Обновите и запустите информационную базу. При первом запуске появится окно регистрации продукта. {{ :stepbystep:18-11-2016_11-33-48.png?nolink |}}
 +  - Нажмите кнопку "Перейти к регистрации клиента..." и заполните анкету нового клиента. {{ :stepbystep:18-11-2016_11-34-07.png?nolink |}}
 +  - Нажмите кнопку "Зарегистрировать". Если данные введены корректно, то система выдаст новый лицензионный ключ, в который будет зашит продукт идентификатором 25 - "Учет котов на 2х пользователей". Все выданные ключи можно увидеть в соответствующем разделе личного кабинета разработчика (фильтр должен быть заполнен). {{ :stepbystep:18-11-2016_13-35-10.png?nolink |}}
 +  - Убедитесь, что элементы справочника "Котики" теперь открываются. При этом будет создана сессия с сервером лицензирования и произведен захват фичи, что можно проверить в разделе "Монитор сессий" личного кабинета разработчика (фильтр должен быть заполнен). {{ :stepbystep:18-11-2016_13-53-45.png?nolink |}}
 +  - Завершите работу с программой 1С. Фича будет освобождена, а сессия завершена.
stepbystep/protect1c.txt · Последнее изменение: 2024/01/23 15:06 — 127.0.0.1