Отправляет email-рассылки с помощью сервиса Sendsay

Школа 1С

  Все выпуски  

Школа 1С: Игра в прятки (#58)


Школа 1С
Выпуск 58

Игра в прятки

Здравствуйте, дорогие подписчики!

Этот выпуск нашей рассылки «Школа 1С» вновь подготовлен совместно с командой проекта 1CV8GAMES, в рамках которого создаются и бесплатно распространяются игры для программ системы «1С:Предприятие 8». В конце апреля наши друзья из проекта 1CV8GAMES представили на своем сайте (www.1cv8games.ru) первые игры: «Пятнашки», «Флип-Флоп», «Мемо», «Цветоряд» и «Вращающийся квадрат», а в мае обещают выпустить еще несколько.

Те из вас, кто уже скачал эти игры, возможно, обратили внимание, что они оформлены в виде внешних обработок системы «1С:Предприятие 8.1» и поставляются без исходных текстов модулей. В этом выпуске мы попросили Евгения Огнева – одного из участников проекта – рассказать об имеющихся в распоряжении программиста стандартных средствах системы «1С:Предприятие» для ограничения доступа к «внутренностям» своих разработок.

Слово Евгению:

 

Предисловие

Многие разработчики время от времени сталкиваются с необходимостью скрыть, спрятать подробности внутреннего устройства создаваемых ими конфигураций или внешних отчетов и обработок. Эту задачу можно решать разными способами: применять встроенные стандартные средства «1С:Предприятия», использовать специализированные сторонние продукты (есть уже несколько подобных программных и программно-аппаратных комплексов) или разрабатывать собственные системы защиты. Каждый из этих способов обладает своими «плюсами» и «минусами», однако, подробно рассматривать их не входит в мои планы.

Целью этого выпуска является рассказ об имеющихся встроенных возможностях системы «1С:Предприятие» для защиты своих разработок. Сразу хочу отметить, что эти возможности не абсолютны, и назвать такую защиту серьезной, к сожалению, нельзя.

 

1С:Предприятие 7.7

Система «1С:Предприятие 7.7» предоставляет возможность ограничения доступа к внутреннему устройству всей разработки в целом. Можно установить пароль на всю конфигурацию или внешний отчет/обработку. Ограничить доступ к отдельному объекту конфигурации нельзя.

Установить пароль на конфигурацию можно следующим образом:

      загрузите Конфигуратор, выбрав информационную базу с нужной конфигурацией;

      в меню «Конфигурация» выберите пункт «Открыть конфигурацию»;

      откройте свойства конфигурации (двойной клик в дереве конфигурации на его корневом элементе – названии конфигурации, можно правой кнопкой мыши на названии конфигурации вызвать контекстное меню и выбрать в нем пункт «Свойства», можно, выбрав корень дерева конфигурации, нажать Alt+Enter или в меню «Действия» выбрать пункт «Свойства...»);

      выберите закладку «Задача» и нажмите кнопку «Сменить пароль»;

      введите пароль, а затем его подтверждение;

      нажмите кнопку «ОК» и сохраните конфигурацию.

Теперь при попытке открыть окно конфигурации в Конфигураторе будет появляться запрос пароля. Открыв конфигурацию, пароль можно снять. Для этого выполняйте те же действия, но на запрос нового пароля и его подтверждения просто ничего не вводите.

Установить пароль на внешний отчет или внешнюю обработку можно следующим образом:

      откройте в Конфигураторе нужный внешний отчет (или внешнюю обработку) – файл с расширением ert;

      в меню «Действия» выберите пункт «Установить пароль»;

      в окне «Установка пароля» нажмите кнопку «Пароль»;

      введите пароль, а затем его подтверждение;

      установите «галочку» «Запрашивать пароль при исполнении», если хотите ограничить доступ и к запуску отчета/обработки, в этом случае система будет спрашивать у пользователя пароль и при открытии ert-файла в режиме «1С:Предприятие»; если такой необходимости нет, «галочку» не устанавливайте;

      нажмите кнопку «ОК» и сохраните внешний отчет (обработку).

Теперь при попытке открыть в Конфигураторе этот ert-файл будет появляться запрос пароля. После открытия отчета/обработки пароль можно снять, выполняя те же действия и ничего не вводя на запрос нового пароля.

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

 

1С:Предприятие 8.0 и 8.1

В системе «1С:Предприятие 8» применен другой подход к защите разработок: ограничить доступ можно только к исходным текстам модулей, но не к структурам данных, формам или макетам. Ограничение доступа может быть организовано двумя способами: установкой пароля на доступ к тексту модуля или исключением текста модуля из поставки конфигурации.

Расскажу чуть подробнее и о первом, и о втором способе.

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

Установить пароль на доступ к модулю можно следующим образом:

      откройте в редакторе текстов модулей Конфигуратора нужный модуль;

      в меню «Текст» выберите пункт «Установить пароль...» (если такого пункта меню нет, то, вероятно, Вы редактируете модуль, который нельзя закрыть паролем; помните про ограничение?);

      введите пароль и его подтверждение, нажмите кнопку «ОК»;

      сохраните конфигурацию или внешний отчет/обработку (в зависимости от того, что это был за модуль).

Теперь при попытке открыть в Конфигураторе этот модуль будет появляться запрос пароля. Обратите внимание, что Вам не придется снова вводить пароль на доступ к модулю при повторном его открытии, если Вы не закрывали конфигурацию или окно с внешним отчетом/обработкой.

Чтобы снять или изменить пароль модуля, необходимо выполнить почти те же действия:

      откройте в редакторе текстов модулей Конфигуратора нужный модуль (для этого придется ввести действующий пароль на модуль);

      в меню «Текст» выберите пункт «Установить пароль...»;

      введите действующий пароль еще раз, нажмите кнопку «ОК»;

      введите новый пароль и его подтверждение (очистите эти поля, если хотите снять пароль), нажмите кнопку «ОК»;

      сохраните конфигурацию или внешний отчет/обработку (в зависимости от того, что это был за модуль).

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

Задействовать механизм формирования поставки прикладного решения можно следующим образом:

      откройте в Конфигураторе информационную базу, конфигурация и/или данные которой будут использоваться как основа поставки;

      в меню «Конфигурация» выберите пункт «Открыть конфигурацию» (эти действия не нужно выполнять, если окно с конфигурацией открылось автоматически);

      в меню «Конфигурация» в подменю «Поставка конфигурации» выберите пункт «Настройка поставки...»;

      признак поставки модулей объекта устанавливается с помощью кнопок «Изменить» (для выбранного объекта) или «Изменить подчиненные» (для всех подчиненных объектов относительно выбранного) – установите «галочку» «Включать в поставку исходный текст модулей объекта», если хотите, чтобы исходные тексты модулей объекта входили в поставку, или снимите ее, если хотите их исключить;

      в окне «Настройка поставки» установите «галочку» «Файл поставки может использоваться для обновления», нажмите кнопку «Закрыть»;

      сохраните конфигурацию;

      в меню «Конфигурация» в подменю «Поставка конфигурации» выберите пункт «Комплект поставки...»;

      выберите «переключатель» «Создать новое описание комплекта поставки», нажмите кнопку «ОК»;

      укажите название поставки и поставщика, нажмите кнопку «Далее >»;

      укажите параметры шаблона: поставщика, имя, версию и имя каталога поставщика; я рекомендую снять «галочку» «Определять параметры по текущей конфигурации», если есть пустые запрещенные для редактирования поля, и ввести недостающую информацию; имя каталога поставщика определяет подкаталог каталога шаблонов информационных баз системы «1С:Предприятие 8», в который будут устанавливаться шаблоны от этого поставщика;

      нажмите кнопку «Далее >»;

      выберите состав шаблона; по умолчанию установлены «галочки» «Текущая конфигурация» (это позволяет создавать пустые информационные базы) и «Текущая информационная база» (это позволяет создавать информационные базы в виде копии текущей) – такая настройка подходит для большинства случаев;

      нажмите кнопку «Готово»;

      сохраните описание комплекта поставки;

      нажмите кнопку «Создать комплект» и выберите каталог, в котором будут размещены установочные файлы.

Установить шаблон можно с помощью программы «setup.exe», информационная база разворачивается из шаблона стандартным образом. Теперь в конфигурации, полученной из этого шаблона, будут отсутствовать исходные тексты тех модулей, для которых при создании шаблона был установлен соответствующий признак.

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

      внешнюю обработку, исходный текст модуля объекта которой предполагается исключить, вставьте в какую-нибудь конфигурацию (проследите, чтобы типы реквизитов этой обработки не изменились); вставить внешнюю обработку в конфигурацию можно так: выберите в конфигурации ветвь «Обработки», вызовите кликом правой кнопки мыши контекстное меню, выберите пункт «Вставить внешнюю обработку, отчет...», выберите файл внешней обработки/отчета;

      используя приведенное выше описание, настройте поставку конфигурации таким образом, чтобы исключить текст модуля объекта этой обработки;

      сформируйте и установите шаблон этой конфигурации;

      откройте в Конфигураторе информационную базу, созданную на основе этого шаблона;

      в меню «Конфигурация» выберите пункт «Открыть конфигурацию» (эти действия не нужно выполнять, если окно с конфигурацией открылось автоматически);

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

Полученная внешняя обработка/отчет не будет содержать исходного текста модуля объекта. Обратите внимание, что упомянутое мной выше ограничение продолжает действовать: модули форм внешней обработки или внешнего отчета используя этот механизм защитить нельзя.

 

Послесловие

Я уже говорил об этом в Предисловии, но, тем не менее, считаю необходимым обратить Ваше внимание еще раз: описанные в этом выпуске стандартные встроенные возможности системы «1С:Предприятие», к сожалению, не обеспечивают серьезную защиту разработок.

Для версии 7.7 существует уже несколько сторонних решений, позволяющих снять пароль с конфигурации или внешнего отчета/обработки. Для версии «1С:Предприятие 8» существуют сторонние же продукты, дающие возможность декомпилировать скомпилированный код в поставках без исходных модулей. Это, конечно, не восстановит исходный текст полностью, но принцип работы понять можно будет.

Поэтому если Вам необходима серьезная защита Ваших разработок, используйте или разрабатывайте другие средства. Вот, что говорит об этом сама фирма «1С» (цитата с http://v8.1c.ru/predpriyatie/QuestionsPlatform.htm#12): «В целом 1С:Предприятие 8 ориентировано на то, чтобы пользователь мог анализировать устройство прикладного решения и при необходимости изменять его. Поэтому возможность защиты отдельных текстов модулей от просмотра является сервисной и предназначена для разработчиков, которые хотят ограничить возможность изменения пользователями фрагментов бизнес-логики своих решений».

Именно этими соображениями мы с коллегами по проекту 1CV8GAMES руководствовались, выбрав для наших игр поставку без исходных текстов модулей объектов. Целью было лишь ограничить возможность изменения наших разработок, ведь наверняка наши спонсоры не оценили бы скорое появление в сети Интернет наших же, по сути, игр, но только без их рекламы.

Тайны же из самой логики работы наших решений мы не делаем. Поэтому будем и дальше делиться с Вами нашими находками, нашим опытом и нашими успехами в создании игр и других решений для системы «1С:Предприятие».

 

Выпуск подготовил: Евгений Огнев
Редакторы: Владислав Аврутин, Игорь Медведев
Автор рассылки: Алексей Куприйчук


В избранное