Содержание
Шаг за шагом: защита расширения конфигурации 1С
В общем случае для защиты своей конфигурации 1С понадобится:
- создать продукт в своем личном кабинете;
- определить способ лицензирования продукта - по количеству пользователей или хостов;
- установить на свой компьютер инструмент для выполнения процедуры защиты продукта;
- добавить в продукт интерактивную форму активации продукта и вспомогательные модули системы лицензирования.
В данной инструкции рассмотрим всю процедуру по шагам на примере простого расширения конфигурации 1С. . Для выдачи лицензий на работу с ней будем использовать демо-доступ к личному кабинету (адрес, логин и пароль высылаются на электронную почту после регистрации).
Обзор демонстрационной базы
Для примера будем использовать конфигурацию для учета домашних животных.
- Скачайте файл демонстрационной базы «КошкинДом.dt» (ссылка в электронном письме).
- Создайте новую информационную базу из загрузите в нее информационную базу из файла «КошкинДом.dt».
Структура конфигурации имеет следующий вид. Центральным объектом конфигурации является справочник «Котики», в котором содержится вся информация о животных. В примере мы будем выгружать данные этого справочника в XML-файл при помощи расширения. - Перейдите к расширению «Экспорт котов». Для этого выполните: «Конфигурация» → «Расширения конфигурации». В появившемся окне расширений конфигурации будет расширение «ЭкспортКотов». Нажмите «Открыть конфигурацию». Откроется окно конфигурации расширения. Единственный объект, который добавляет расширение - это форма списка «Экспорт_ФормаСписка».
- Откройте форму списка справочника. На форме расположена кнопка экспорта, которая вызывает диалоговое окно сохранения файла и формирует его содержимое. Код формирования файла расположен в модуле менеджера справочника:
Процедура ЭкспортКотов(ПолноеИмяФайла) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Котики.Код КАК Код, | Котики.Кличка КАК Кличка, | Котики.Порода КАК Порода, | Котики.Окрас КАК Окрас |ИЗ | Справочник.Котики КАК Котики"; РезультатЗапроса = Запрос.Выполнить(); ТаблицаКотов = РезультатЗапроса.Выгрузить(); ФайлXML = Новый ЗаписьXML; ФайлXML.ОткрытьФайл(ПолноеИмяФайла); ФайлXML.ЗаписатьОбъявлениеXML(); ФайлXML.ЗаписатьНачалоЭлемента("Коты"); Для Каждого СтрокаТаблицы Из ТаблицаКотов Цикл ФайлXML.ЗаписатьНачалоЭлемента("Кот"); ФайлXML.ЗаписатьАтрибут("Код", СтрокаТаблицы.Код); ФайлXML.ЗаписатьАтрибут("Порода", Строка(СтрокаТаблицы.Порода)); ФайлXML.ЗаписатьАтрибут("Окрас", СтрокаТаблицы.Окрас); ФайлXML.ЗаписатьТекст(СтрокаТаблицы.Кличка); ФайлXML.ЗаписатьКонецЭлемента(); КонецЦикла; ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.Закрыть(); КонецПроцедуры
- Код этого модуля мы будем защищать. Установите на него произвольный пароль командой главного меню «Текст» → «Установить пароль» (например, 123).
- Сохраните изменения и обновите конфигурацию базы данных.
- Выгрузите расширение в файл с именем «ЭкспортКотов.cfe».
Регистрация продукта в личном кабинете
Продукт - это минимально допустимый набор функциональных опций, который мы предлагаем клиенту как готовое решение. Продукт может состоять как из одной так и из нескольких фич, в зависимости от сложности лицензируемого решения.
В данном примере не будем выделять отдельные функции конфигурации, поэтому в продукте будет одна фича и лицензирование по количеству пользователей работающих с конфигурацией. Перейдем к настройке продукта в личном кабинете разработчика.
- Откройте личный кабинет и перейдите на страницу фич.
- Добавьте новую фичу. В качестве названия укажите «Экспорт котов». Идентификатор фичи можно указать произвольный. Некоторые данные (они будут выделены синим цветом) необходимо будет повторить в инструменте защиты конфигураций.
- Далее перейдите к странице продуктов. Добавьте новый продукт «Экспорт котов на 1 хост». В продукт добавьте созданную ранее фичу. Способ лицензирования - на хост.
- Сохраните продукт, идентификатор будет сгенерирован автоматически.
Настройка инструмента защиты
Настроим инструмент защиты конфигураций (содержится электронном письме).
- Создайте новую информационную базу, загрузите в нее конфигурацию из файла «МИКО_ЗащитаРасширений.cf». Запустите ее в режиме «1С:Предпритие».
- Заполните в настройках префикс ключ и код поставщика (vendor code). Персональные ключи разработчика указаны в настройках личного кабинета.
- В списке фич добавьте новую, с тем же кодом и наименованием, что и в личном кабинете.
- В пункте «Компоненты» подключите компонент закрытого модуля «МИКО_КомпонентЗакрытогоМодуля_DEMO.zip» (содержится в электронном письме).
- Перейдите к списку расширений и добавьте новое. В качестве файла расширения укажите «ЭкспортКотов.cfe», созданный ранее. Дождитесь завершения анализа конфигурации расширения, по окончанию будет сформирован образ конфигурации.
- Откройте созданный образ конфигурации. В дереве метаданных будут отображены те программные модули, содержание которых было скрыто, в нашем случае это модуль менеджера справочника «Котики».
- Выберите модуль менеджера справочника «Котики». Рядом отобразятся процедуры и функции этого модуля.
- Установите в соответствие процедуре «ЭкспортКотов» фичу «Экспорт котов».
- Сохраните изменения.
Чтобы пользователи могли активировать ключи или использовать триальный период, заполним данные о продукте.
- Откройте конфигурацию расширения «Экспорт котов».
- Заполните поле «Основная функция (фича)», указав ту фичу, доступность которой будет проверятся системой при запуске расширения. В этом примере у нас одна фича, ее и укажем.
- Заполните поле «Идентификатор триального продукта», указав идентификатор ранее созданного в личном кабинете продукта.
- Сохраните изменения.
Защита и проверка результатов
После выполнения настройки, можно установить защиту на расширение.
- Перейдите в раздел «Установка защиты».
- Выберите конфигурацию и ее образ в соответствующих полях.
- Укажите путь к защищаемому файлу расширения (выберем тот же файл «ЭкспортКотов.cfe»).
- Нажмите кнопку «Установить защиту» и дождитесь окончанию процедуры. В результате будет сформирован новый файл «ЭкспортКотов.protect.cfe».
Осталось проверить полученные результаты.
- Откройте в конфигураторе информационную базу, из которой вы выгружали расширение «ЭкспортКотов» на этапе «Обзор демонстрационной базы». Откройте «Расширения конфигурации».
- Загрузите конфигурацию расширения из файла «ЭкспортКотов.protect.cfe» заменив оригинал.
- Отключите безопасный режим работы расширения, если он был у вас был включен
- Убедитесь, что в конфигурации расширения появились новые объекты системы лицензирования, а текст защищаемого модуля стал недоступен.
- Следующий раздел выполняете в этой же конфигурации.
Настройка захвата основной фичи
Теперь нужно внести изменения в получившуюся конфигурацию, для того чтобы при ее запуске захватывалась основная фича создавалась пользовательская сессия.
1. Элемент нумерованного списка Элемент ненумерованного спискаВ основной конфигурации (а не в расширении) добавьте общий модуль с названием «Переопределяемый» (обращаю внимание, что название модуля должно быть именно таким). В настройках модуля должен быть флажок только «Сервер».
2. Внесите в модуль следующий код
Процедура ЛицензируемыеПродукты(Продукты) Экспорт
СтруктураДляЗапуска = Новый Структура;
СтруктураДляЗапуска.Вставить("Наименование", "Экспорт котов");
СтруктураДляЗапуска.Вставить("ПрефиксРасширения", "Экспорт_");
СтруктураДляЗапуска.Вставить("ПрефиксКлюч", "DEMO");
СтруктураДляЗапуска.Вставить("ИдентификаторФичи", "102");
СтруктураДляЗапуска.Вставить("ИдентификаторТриальногоПродукта", "96");
Продукты.Добавить(СтруктураДляЗапуска);
КонецПроцедуры
где значения структуры, соответствующие ключам «Наименование», «ПрефиксРасширения», «ПрефиксКлюч», «ИдентификаторФичи», «ИдентификаторТриальногоПродукта» возьмите из: Расширение «ЭкспортКотов» → Общие формы → «Экспорт_РегистрацияПродукта» → модуль формы → Функция «ОписаниеПродукта()»
3. В основной конфигурации откройте модуль управляемого приложения и добавьте в него следующий код.
Процедура ПриНачалеРаботыСистемы()
ИнициализироватьСистемуЛицензирования("Экспорт котов");
КонецПроцедуры
Процедура ПриЗавершенииРаботыСистемы(Отказ, ТекстПредупреждения)
ЗавершитьРаботуСистемыЛицензирования("Экспорт котов");
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
Процедура ИнициализироватьСистемуЛицензирования(НаименованиеКонфигурации)
Попытка
Экспорт_Лицензирование.НачатьРаботу(НаименованиеКонфигурации);
Исключение
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("НаименованиеПродукта", НаименованиеКонфигурации);
ПараметрыФормы.Вставить("ОписаниеОшибки", ИнформацияОбОшибке().Описание);
ОткрытьФорму("ОбщаяФорма.Экспорт_РегистрацияПродукта", ПараметрыФормы);
КонецПопытки;
КонецПроцедуры
Процедура ЗавершитьРаботуСистемыЛицензирования(НаименованиеКонфигурации)
Экспорт_Лицензирование.ЗавершитьРаботу(НаименованиеКонфигурации);
КонецПроцедуры
где параметр передающийся в процедуры «ИнициализироватьСистемуЛицензирования» «ЗавершитьРаботуСистемыЛицензирования» должен соответствовать значению ключа «Наименование»
структуры «СтруктураДляЗапуска» в процедуре модуля «Переопределяемый».
4. Запустите конфигурацию 1С в пользовательском режиме. При первом запуске появится предупреждение безопасности. Утвердительно ответьте на него, и запустите конфигурацию заново.
5. Нажмите «Регистрация продукта». При первом запуске появится окно регистрации продукта.
6. Нажмите кнопку «Перейти к регистрации клиента…» и заполните анкету нового клиента.
7. Нажмите кнопку «Зарегистрировать». Если данные введены корректно, то система выдаст новый лицензионный ключ. Все выданные ключи можно увидеть в соответствующем разделе личного кабинета разработчика (фильтр должен быть заполнен).
8. Проверим, что расширение работает. Откройте справочник «Котики» и нажмите кнопку «Экспорт…». Убедитесь, что файл сформировался. При этом будет выполнена привязка лицензионного ключа к текущему хосту, что можно проверить в разделе «Монитор сессий» личного кабинета разработчика (фильтр должен быть заполнен).