Назад

Как из внешней обработки быстро сделать расширение?

Несколько популярных вопросов:

  1. Для чего это нужно? Для того, чтобы начать зарабатывать в нашем сервисе.
  2. Почему нельзя использовать обработку, а нужно именно расширение? Обработку нужно устанавливать в каждую область данных и контролировать обновление при выходе новой версии. Мы в своем сервисе используем подключение расширений на всю базу данных, т.е. расширение устанавливается один раз и действует сразу для всех пользователей. 
  3. Если расширение устанавливается сразу для всех пользователей, то как контролировать то, чтобы его возможности использовали только те пользователи, которые произвели оплату? Все просто. Для этого мы реализовали методы биллинга, которые возвращают ответ, допустимо пользователю использовать ваш функционал или нет. Вам остается встроить эти вызовы в необходимые места. Это мы рассмотрим ниже.

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

Здесь файл начальной обработки.

Переходим к созданию расширения. Будет всего 5 простых шагов.

Создаем новое расширение. 

Обязательно задаем имя и префикс расширения, который используем для всех новых (не заимствованных) объектов метаданных расширения. Они должно быть уникальными, чтобы не могли пересечься с другими расширениями. Например, недопустимо:  имя Расширение1 или префикс расш1 и т.д. Корректно: имя ExampleExtention, префикс EE_.

Например,

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Обязательно заполняем версию расширения и информацию о поставщике. Также желательно заполнить краткую и подробную информацию.

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Режим совместимости расширения должен быть такой же, как и у основной конфигурации.

Встраиваем обработку в расширение. 

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

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

После добавления обработки меняем в ее названии префикс.

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Если необходимо, чтобы обработка отображалась в меню, создаем новую подсистему и добавляем обработку в нее (либо делаем заимствование существующей и добавляем обработку в нее).

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Либо в существующую подсистему

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

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

Пример: ОткрытьФорму(ПрефиксИмениФорм + ИмяФормы);


&НаКлиенте


Функция ПолучитьПрефиксИмениФорм()


СимволТочка = “.”;


ПозицияТочки = СтрДлина(ЭтаФорма.ИмяФормы);


Пока Сред(ЭтаФорма.ИмяФормы, ПозицияТочки, 1) <> СимволТочка Цикл 


ПозицияТочки = ПозицияТочки – 1; 


КонецЦикла; 


ПрефиксИмениФорм = Лев(ЭтаФорма.ИмяФормы, ПозицияТочки);


Возврат ПрефиксИмениФорм;


КонецФункции 

Встраиваем в расширение функции проверки биллинга. 

Это самый важный шаг. Это позволит Вам контролировать запуск обработки пользователями, оплатившими функционал. Пример функций можно взять в примере расширения, опубликованного в данной статье. Шаблон расширения можно скачать ( Скачать Шаблон расширения, CFE, 36.0 КБ ).

Скопируем модуль EE_Биллинг из примера расширения и поменяем в нем префикс. Также для выполнения вспомогательных функций нам понадобится модуль EE_УниверсальныеФункцииКлиентСервер. Также меняем у него префикс на префикс, используемый в нашем расширении.

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Также для проверки работы биллинга скопируем обработку EE_Биллинг и также поменяем префикс.

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

В скопированном модуле QE_Биллинг заменим вызовы общего модуля  EE_УниверсальныеФункцииКлиентСервер на QE_УниверсальныеФункцииКлиентСервер. Также в форме обработки поменяем функции вызова биллинга, т.к. у нас поменялся префикс общего модуля

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

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

Если кратко, то идентификаторы для проверки можно получить в ЛК в разделе партнерам при редактировании сервиса:

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Проверка подключения услуги:

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Обработка приведена для примера. Вызова из модуля QE_Биллинг мы можете использовать по своему усмотрению. Допустим, мы можем использовать вызовы перед запуском обработки в процедуре ПриСозданииНаСервере и устанавливать Отказ = Истина в случае, если сервис или услуга не активированы.

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

Если Метаданные.ОбщиеМодули.Найти (“CTSM_EfsolУниверсальныеФункцииКлиентСервер”) <> Неопределено Тогда


ОбщийМодуль_CTSM_EfsolУниверсальныеФункцииКлиентСервер = ОбщегоНазначения.ОбщийМодуль(“CTSM_EfsolУниверсальныеФункцииКлиентСервер”);


ТокенCore = ОбщийМодуль_CTSM_EfsolУниверсальныеФункцииКлиентСервер.ПолучитьТокенПоЛогину(Логин);

Возврат ТокенCore;

КонецЕсли;

Т.к. модуль CTSM_EfsolУниверсальныеФункцииКлиентСервер  доступен только в продукционной среде, то в тестовом примере для получения токена используется дополнительная пара логин и пароль, по которым и получается токен. 

Далее по логину (при использовании токена) мы получаем необходимые данные по биллингу.

Таким образом, получается, что в тестовой среде мы должны в процедурах проверки биллинга использовать 5 параметров: ИД сервиса или услуги, Логин, ТекстОшибки, ЛогинДляПолученияТокена, ПарольДляПолученияТокена.

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

А в продукционной среде мы должны использовать всего 3 параметра: ИД сервиса или услуги, Логин, ТекстОшибки. Например, в процедуре ПриСозданииНаСервере :

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

либо перед выполнением какой-либо процедуры или функции

Как из внешней обработки быстро сделать расширение? - 42CLOUDS

Реализуем функции автотестирования нашего решения. 

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

Для этого скопируем модуль EE_AutoTest, обработку EE_Тестирование  и http-сервис EE_AutoTest (он нужен для вызова функций автотеста через интернет) из шаблона. Аналогично заменим префиксы этих объектов на префиксы расширения и поменяем внутри вызовы процедур. Количество и состав выполняемых тестов вы определяете сами. Обработка показывает лишь пример реализации. Если вам тесты не нужны, то достаточно в процедурах запуска тестов возвращать ОК.

Отправляем расширение на аудит. 

После проведения аудита пользователи смогут использовать Ваш функционал.

Пример готового расширения можно скачать ( Скачать Шаблон расширения, CFE, 36.0 КБ ).

Уже более 10 000 компаний работают в облачной 1С от 42Clouds

– Консультация по 1С Бесплатно!

– Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

– Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

Смотрите также

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных

Оставьте отзыв о нас

Расскажите, как сервис 42Clouds помог вашему бизнесу.

Отзыв будет опубликован после проверки модератором.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных