Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
stepbystep:protect1c [2020/04/07 12:19] – nb | stepbystep:protect1c [2024/01/23 15:06] (текущий) – внешнее изменение 127.0.0.1 |
---|
| |
Далее рассмотрим всю процедуру по шагам. Создадим простую конфигурацию 1С, а для выдачи лицензий на работу с ней будем использовать демо-доступ к личному кабинету. Адрес, логин и пароль высылаются на электронную почту после регистрации. | Далее рассмотрим всю процедуру по шагам. Создадим простую конфигурацию 1С, а для выдачи лицензий на работу с ней будем использовать демо-доступ к личному кабинету. Адрес, логин и пароль высылаются на электронную почту после регистрации. |
| <note>Для удобства также существует [[https://www.youtube.com/watch?v=lVnr4Y0RjmE|видеоинструкция на Youtube]]</note> |
| |
===== Обзор демонстрационной базы ===== | ===== Обзор демонстрационной базы ===== |
Для примера будем использовать конфигурацию для учета домашних животных. | Для примера будем использовать конфигурацию для учета домашних животных. |
- Скачайте файл демонстрационной базы "КошкинДом.dt" (ссылка в электронном письме). | - Скачайте файл демонстрационной базы "КошкинДом.dt" (ссылка в электронном письме). |
- Создайте информационную базу из загрузите в нее копию из скаченнего файла.\\ Структура конфигурации имеет следующий вид. {{ :stepbystep:21-10-2016_11-23-09.png?nolink |}} В справочнике "Котики" содержится информацию о животных. При добавлении нового животного в справочник в качестве имени можно выбрать одну из популярных кличек. Клички хранятся в регистре сведений, а код для выборки записей из этого регистра расположен в общем модуле "КотыСервер". | - Создайте информационную базу из загрузите в нее копию из скачанного файла.\\ Структура конфигурации имеет следующий вид. {{ :stepbystep:21-10-2016_11-23-09.png?nolink |}} В справочнике "Котики" содержится информацию о животных. При добавлении нового животного в справочник в качестве имени можно выбрать одну из популярных кличек. Клички хранятся в регистре сведений, а код для выборки записей из этого регистра расположен в общем модуле "КотыСервер". |
- Откройте модуль формы элемента справочника "Котики". Модуль содержит код для заполнения выпадающего списка "Кличка" известными именами котов. Выборка элементов для списка выполняется в общем модуле "КотыСервер".<sxh>&НаСервереБезКонтекста | - Откройте модуль формы элемента справочника "Котики". Модуль содержит код для заполнения выпадающего списка "Кличка" известными именами котов. Выборка элементов для списка выполняется в общем модуле "КотыСервер".<sxh>&НаСервереБезКонтекста |
Функция ПолучитьСписокКличек(Пол) | Функция ПолучитьСписокКличек(Пол) |
Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов); | Элементы.Кличка.СписокВыбора.ЗагрузитьЗначения(КличкиКотов); |
| |
КонецПроцедуры</code> | КонецПроцедуры</sxh> |
- Перейдите к модулю "КотыСервер". Выборка кличек выполняется простым запросом с одним параметром. Код этого модуля будет в дальнейшем скрыт, а функция "ПолучитьСписокКличек" будет требовать наличие лицензии на продукт.<code>Функция ПолучитьКличкиКотов(Пол) Экспорт | - Перейдите к модулю "КотыСервер". Выборка кличек выполняется простым запросом с одним параметром. Код этого модуля будет в дальнейшем скрыт, а функция "ПолучитьСписокКличек" будет требовать наличие лицензии на продукт.<sxh>Функция ПолучитьКличкиКотов(Пол) Экспорт |
| |
Запрос = Новый Запрос; | Запрос = Новый Запрос; |
===== Регистрация продукта в личном кабинете ===== | ===== Регистрация продукта в личном кабинете ===== |
| |
<note tip>**Фича** - это та функциональная опция программы, которая подлежит лицензированию. Программный модуль, обработка, а также вся конфигурация 1С в целом могут являтся фичей. \\ | <note tip>**Фича** - это та функциональная опция программы, которая подлежит лицензированию. Программный модуль, обработка, а также вся конфигурация 1С в целом могут являться фичей. \\ |
**Продукт** - это минимально допустимый набор функциональных опций, который мы предлагаем клиенту как готовое решение. Продукт может состоять как из одной так и из нескольких фич, в зависимости от сложности лицензируемого решения.</note> | **Продукт** - это минимально допустимый набор функциональных опций, который мы предлагаем клиенту как готовое решение. Продукт может состоять как из одной так и из нескольких фич, в зависимости от сложности лицензируемого решения.</note> |
В данном примере не будем выделять отдельные функции конфигурации, поэтому в продукте будет одна фича и лицензирование по количеству пользователей работающих с конфигурацией. | В данном примере не будем выделять отдельные функции конфигурации, поэтому в продукте будет одна фича и лицензирование по количеству пользователей работающих с конфигурацией. |
===== Встраивание подсистемы лицензирования ===== | ===== Встраивание подсистемы лицензирования ===== |
| |
Настроим инструмент защиты конфигураций (ссылка в электронном письме). | Настроим **инструмент защиты** конфигураций **МИКО_ЗащитаКонфигураций** (ссылка в электронном письме). |
- Укажите в настройках код поставщика (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 |}} | - Создайте новую информационную базу, откройте ее в конфигураторе, загрузите конфигурацию из файла "**МИКО_ЗащитаКонфигураций.cf**", запустите в режиме 1С:Предпритие. |
| - В разделе "**Настройки**" вставьте ваши "**Код поставщика (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 |}} | - Откройте список фич и добавьте новую, с тем же кодом и наименованием, что и в личном кабинете.{{ :stepbystep:21-10-2016_12-03-34.png?nolink |}} |
- Создайте новую конфигурацию. Укажите имя конфигурации 1С и каталог файлов поставки (например, H:\tmp\КошкинДом\Поставка).{{ :stepbystep:21-10-2016_12-07-08.png?nolink |}} | - Перейдите в раздел "**Конфигурации**". Создайте новую конфигурацию. Укажите имя конфигурации 1С и каталог файлов поставки. Сохраните изменения. Идентификатор продукта будет сформирован автоматически и понадобится позже. |
- Сохраните изменения. Идентификатор продукта будет сформирован автоматически и понадобится позже. | {{ :stepbystep:soadanie_konfiguracii.png?nolink |}} \\ |
Перейдем к защищаемой конфигурации 1С. Сперва нужно перенести в конфигурацию объекты системы лицензирования. | Перейдем к защищаемой конфигурации 1С. Сперва нужно перенести в конфигурацию объекты системы лицензирования. |
- В конфигураторе защищаемой конфигурации откройте файл МИКО_ЗащитаКонфигураций.cf в режиме сравнения и объединения. | |
- Перенесите объекты (общие модули, макеты, формы) подсистемы "МИКО_СистемаЛицензирования" в защищаемую конфигурацию. | - Откройте в конфигураторе защищаемую конфигурацию, которую вы создали на этапе "Обзор демонстрационной базы". Выполните "**Конфигурация**" -> "**Сравнить и объединить с конфигурацией из файла**", выберите файл "МИКО_ЗащитаКонфигураций.cf". |
| - Перенесите объекты (общие модули, макеты, формы) подсистемы "МИКО_СистемаЛицензирования" в защищаемую конфигурацию. Для этого в окне основной конфигурации снимите флажок с корневого элемента, затем выполните "**Действия**" -> "**Отметить по подсистемам файла**". Установите флажок только у подсистемы "МИКО_СистемаЛицензирования". Выполните "**Установить**" -> "**Выполнить**". От сохранения настроек объединения конфигураций в xml-файл откажитесь. |
| {{ :stepbystep:obedinenie_konfigaraciy.png?nolink |}} |
- Откройте общий модуль "МИКО_ЛицензированиеПереопределяемый". | - Откройте общий модуль "МИКО_ЛицензированиеПереопределяемый". |
- Заполнение тело процедуры "ЛицензируемыеПродукты", указав наименование продукта и идентификаторы, полученные на предыдущих шагах (обведены синим цветом)<code>Процедура ЛицензируемыеПродукты(Продукты) Экспорт | - Заполнение тело процедуры "ЛицензируемыеПродукты", указав наименование продукта и идентификаторы, полученные на предыдущих шагах (обведены синим цветом)<sxh>Процедура ЛицензируемыеПродукты(Продукты) Экспорт |
| |
ОписаниеПродукта = Новый Структура; | ОписаниеПродукта = Новый Структура; |
ОписаниеПродукта.Вставить("Наименование", "Кошкин дом"); | ОписаниеПродукта.Вставить("Наименование", "Кошкин дом"); |
ОписаниеПродукта.Вставить("ИдентификаторКонфигурации", "9cf50201-976d-11e6-810f-0050568123f9"); | ОписаниеПродукта.Вставить("ИдентификаторКонфигурации", "b7ce16d5-e39f-11eb-bb18-005056882bf6"); |
ОписаниеПродукта.Вставить("ПрефиксКлюч", "DEMO"); | ОписаниеПродукта.Вставить("ПрефиксКлюч", "DEMO"); |
ОписаниеПродукта.Вставить("ИдентификаторФичи", "1"); | ОписаниеПродукта.Вставить("ИдентификаторФичи", "13"); |
ОписаниеПродукта.Вставить("ИдентификаторТриальногоПродукта", "25"); | ОписаниеПродукта.Вставить("ИдентификаторТриальногоПродукта", "74"); |
| |
Продукты.Добавить(ОписаниеПродукта); | Продукты.Добавить(ОписаниеПродукта); |
| |
КонецПроцедуры</code> | КонецПроцедуры</sxh> |
- В этом же модуле нужно указать местоположение макетов внешних компонент. В данном примере компоненты подключаются к демо-серверу лицензирования. Для подключения к собственным серверам требуются персонализированные под разработчика компоненты, получить их можно по запросу. <code> | - В этом же модуле нужно указать местоположение макетов внешних компонент. В данном примере компоненты подключаются к демо-серверу лицензирования. Для подключения к собственным серверам требуются персонализированные под разработчика компоненты, получить их можно по запросу у фирмы [[http://protect.miko.ru|"МИКО"]]. В данном демонстрационном примере выполните следующее: в дереве объектов конфигурации в группе "**Общие макеты**" загрузите в макет "**МИКО_КомпонентЗакрытогоМодуля_DEMO**" компонент "**МИКО_КомпонентЗакрытогоМодуля_DEMO.zip**", который выслан вам в письме. Архив не распаковывайте. <sxh>Процедура ПриИнициализацииЗакрытогоМодуля(ПрефиксКлюч, МестоположениеКомпонента) Экспорт |
Процедура ПриИнициализацииЗакрытогоМодуля(ПрефиксКлюч, МестоположениеКомпонента) Экспорт | |
| |
Если ПрефиксКлюч = "DEMO" Тогда | Если ПрефиксКлюч = "DEMO" Тогда |
| |
Если ПрефиксКлюч = "DEMO" Тогда | Если ПрефиксКлюч = "DEMO" Тогда |
МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентРегистрацииПродукта_DEMO"; | МестоположениеКомпонента = "ОбщийМакет.МИКО_КомпонентЗакрытогоМодуля_DEMO"; |
КонецЕсли; | КонецЕсли; |
| |
КонецПроцедуры</code> | КонецПроцедуры |
- Для работы закрытого модуля потребуется лицензионный ключ. Система будет периодически запрашивать ключ, а также может выдать новый при регистрации продукта.<code>Процедура ПриЧтенииЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт | </sxh> |
| - Для работы закрытого модуля потребуется лицензионный ключ. Система будет периодически запрашивать ключ, а также может выдать новый при регистрации продукта. В процедурах "ПриЧтенииЛицензионногоКлюча", "ПриЗаписиЛицензионногоКлюча" переменную "ИдентификаторКонфигурации" также поменяйте на ваш идентификатор конфигурации. <sxh>Процедура ПриЧтенииЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт |
| |
Если ИдентификаторКонфигурации= "9cf50201-976d-11e6-810f-0050568123f9" Тогда | Если ИдентификаторКонфигурации= "b7ce16d5-e39f-11eb-bb18-005056882bf6" Тогда |
ЛицензионныйКлюч = Константы.КошкинДомЛицензионныйКлюч.Получить(); | ЛицензионныйКлюч = Константы.КотыЛицензионныйКлюч.Получить(); |
КонецЕсли; | КонецЕсли; |
| |
Процедура ПриЗаписиЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт | Процедура ПриЗаписиЛицензионногоКлюча(ИдентификаторКонфигурации, ЛицензионныйКлюч) Экспорт |
| |
Если ИдентификаторКонфигурации= "9cf50201-976d-11e6-810f-0050568123f9" Тогда | Если ИдентификаторКонфигурации= "b7ce16d5-e39f-11eb-bb18-005056882bf6" Тогда |
Константы.КошкинДомЛицензионныйКлюч.Установить(ЛицензионныйКлюч); | Константы.КотыЛицензионныйКлюч.Установить(ЛицензионныйКлюч); |
КонецЕсли; | КонецЕсли; |
| |
КонецПроцедуры</code> | КонецПроцедуры</sxh> |
| - Установите пароль на текст общего модуля "КотыСервер" (например: 123) командой главного меню "**Текст**" -> "**Установить пароль**". Вместо установки пароля вы можете использовать [[protect1c:postavka|механизм создания файла поставки]], при помощи которого вы исключите из поставки текст защищаемого модуля. Но это более долгий и трудоемкий процесс. |
- Обновите конфигурацию базы данных. | - Обновите конфигурацию базы данных. |
- Настройте поставку конфигурации так, чтобы исходный текст модуля "КотыСервер" был исключен из конфигурации. | - Сохраните конфигурацию в файл "**КошкинДом.cf**". |
- Сформируйте файл поставки, разместив его по пути "H:\tmp\КошкинДом\Поставка\1.0\КошкинДом.cf". | |
| ===== Дальнейшая настройка в инструменте защиты ===== |
| |
Вернемся к инструменту защиты конфигураций. | Вернемся к инструменту защиты конфигураций. |
- Создайте новый образ конфигурации. Укажите путь к файлу конфигурации "H:\tmp\КошкинДом\Поставка\1.0\КошкинДом.cf". | - Создайте новый образ конфигурации. Укажите путь к файлу сохраненной конфигурации "**КошкинДом.cf**" {{ :stepbystep:soadanie_obraza.png?nolink |}} |
- Откройте образ конфигурации. В нем будет указан один программный модуль - КотыСервер.{{ :stepbystep:26-10-2016_22-36-35.png?nolink |}} | - Откройте образ конфигурации. В нем будет указан один программный модуль - КотыСервер. {{ :stepbystep:soadanie_obraza_nezashishenniy_modul.png?nolink |}} |
- Откройте модуль "КотыСервер" и создайте новую защитную маску. Для функции "ПолучитьКличкиКотов" укажите фичу "Учет котов".{{ :stepbystep:26-10-2016_22-47-43.png?nolink |}} | - Откройте модуль "КотыСервер" и создайте новую защитную маску. Для функции "ПолучитьКличкиКотов" укажите фичу "Учет котов". {{ :stepbystep:soadanie_zashitnoy_maskil.png?nolink |}} |
- Сохраните изменения и вернитесь на начальную страницу. | - Сохраните изменения и вернитесь на начальную страницу. |
- В журнале поставок напротив образа конфигурации нажмите на гиперссылку "Установить защиту". После завершения работы системы установки защиты в каталоге поставки появится файл "КошкинДом.protect.cf". | - В журнале поставок напротив образа конфигурации нажмите на гиперссылку "Установить защиту". После завершения работы системы установки защиты в каталоге поставки появится файл "**КошкинДом.protect.cf**". |
| |
===== Проверка результатов ===== | ===== Проверка результатов ===== |
| |
После выполнения всех этапов осталось проверить полученные результаты. | После выполнения всех этапов осталось проверить полученные результаты. |
- Создайте новую информационную базу и загрузите в нее копию базы "Кошкин Дом" из файла "КошкинДом.dt". | - Создайте новую информационную базу и загрузите в нее базу из файла "**КошкинДом.dt**" (изначальная информационная база, поставляемая вам в дистрибутиве). |
- Обновите конфигурацию информационной базы, загрузив ее из файла "КошкинДом.protect.cf". | - Выполните "**Конфигурация**" -> "**Сравнить и объединить с конфигурацией из файла**". Выберите файл конфигурации "**КошкинДом.protect.cf**". Нажмите "Выполнить". |
- Убедитесь, что текст модуля "КотыСервер" стал недоступен. | - Убедитесь, что текст модуля "КотыСервер" стал недоступен. |
- Запустите информационную базу в режиме предприятия и попробуйте открыть один из элементов справочника "Котики". На экране будет сообщение об ошибке: "Для выполнения операции требуется лицензионный ключ". {{ :stepbystep:18-11-2016_10-36-47.png?nolink |}} | - Запустите информационную базу в режиме предприятия и попробуйте открыть один из элементов справочника "Котики". На экране будет сообщение об ошибке: "Для выполнения операции требуется лицензионный ключ". {{ :stepbystep:18-11-2016_10-36-47.png?nolink |}} |
| |
Чтобы пользователь мог получить лицензионный ключ потребуется добавить форму регистрации. | Чтобы пользователь мог получить лицензионный ключ потребуется добавить форму регистрации. |
- Откройте модуль управляемого приложения и добавьте в него код следующего содержания: <code> | - Откройте модуль управляемого приложения и добавьте в него код следующего содержания: <sxh> |
Процедура ПриНачалеРаботыСистемы() | Процедура ПриНачалеРаботыСистемы() |
| |
МИКО_Лицензирование.ЗавершитьРаботу(НаименованиеКонфигурации); | МИКО_Лицензирование.ЗавершитьРаботу(НаименованиеКонфигурации); |
| |
КонецПроцедуры</code> | КонецПроцедуры</sxh> |
- Обновите и запустите информационную базу. При первом запуске появится окно регистрации продукта. {{ :stepbystep:18-11-2016_11-33-48.png?nolink |}} | - Обновите и запустите информационную базу. При первом запуске появится окно регистрации продукта. {{ :stepbystep:18-11-2016_11-33-48.png?nolink |}} |
- Нажмите кнопку "Перейти к регистрации клиента..." и заполните анкету нового клиента. {{ :stepbystep:18-11-2016_11-34-07.png?nolink |}} | - Нажмите кнопку "Перейти к регистрации клиента..." и заполните анкету нового клиента. {{ :stepbystep:18-11-2016_11-34-07.png?nolink |}} |
- Убедитесь, что элементы справочника "Котики" теперь открываются. При этом будет создана сессия с сервером лицензирования и произведен захват фичи, что можно проверить в разделе "Монитор сессий" личного кабинета разработчика (фильтр должен быть заполнен). {{ :stepbystep:18-11-2016_13-53-45.png?nolink |}} | - Убедитесь, что элементы справочника "Котики" теперь открываются. При этом будет создана сессия с сервером лицензирования и произведен захват фичи, что можно проверить в разделе "Монитор сессий" личного кабинета разработчика (фильтр должен быть заполнен). {{ :stepbystep:18-11-2016_13-53-45.png?nolink |}} |
- Завершите работу с программой 1С. Фича будет освобождена, а сессия завершена. | - Завершите работу с программой 1С. Фича будет освобождена, а сессия завершена. |
| |
| ===== Примечание ===== |
| В ваших конфигурациях модули, которые вы будете защищать должны иметь флажки "**Сервер**", "**Вызов сервера**". Флажок "**Клиент**" должен быть снят. |
| {{ :stepbystep:flajok_server.png?nolink |}} |
| |
| В защищаемых вами модулях должны быть какие-либо строковые литералы. Например |
| |
| {{ :stepbystep:strokovie_literali.png?nolink |}} |