Введение
Начиная с версии 1.0.19, в среде OneScript, появился экспериментальный механизм http-сервисов. Он является аналогом механизма http-сервисов в 1С:Предприятие и позволяет взаимодействовать со средой OneScript по протоколу http практически также, как это происходит в среде 1С:Предприятие.
По сути – это классическое приложение (сайт) ASP.NET, с возможностью исполнения кода, написанного на языке 1С, в среде OneScript.
Для чего это может быть использовано
В отличие от технологии (//infostart.ru/public/722160/), которая ориентирована на полноценную веб-разработку, механизм http-сервисов скорее ориентирован на быстрое создание небольших сервисов, которые являются неким промежуточным звеном, между пользователем/внешним сервисом и информационной системой на базе 1С:Предприятие, в тех случаях, когда непосредственное использование средств платформы неудобно или невозможно по каким-либо причинам.
В качестве примера, в настоящей статье рассматривается реализация сервиса сброса пароля пользователя информационной базы, аналогично тому, как это реализовано на сайте Инфостарт. Подобный сервис может быть использован совместно с подсистемой Самообслуживание клиентов, для самостоятельного восстановления доступа внешнего пользователя в информационную базу.
Описание сервиса и логика работы
Итак, нам необходимо реализовать сервис самостоятельного восстановления доступа в информационную базу для внешних пользователей. В качестве образца, используем сервис восстановления доступа, который реализован на сайте Инфостарт. Логику его работы можно описать примерно следующей последовательностью действий:
- Пользователь, забывший пароль переходит по ссылке “Забыли пароль”
- В появившуюся форму ввода, пользователь вводит идентификационные данные (в нашем случае – это имя пользователя ИБ и адрес электронной почты).
- Пользователь нажимает кнопку Создать запрос и идентификационные данные поступают на вход сервиса.
- Сервис проверяет правильность данных (существует ли такой пользователь, активен ли он), а также допустимость создания запроса на сброс пароля (как пример - защита от перебора и создания множества валидных запросов).
- В случае успеха, сервис создает запрос на сброс пароля в информационной базе и сообщает об этом пользователю. Пользователю отправляется сообщение с кодом или ссылкой для подтверждения запроса. В случае, невозможности создания запроса выдается сообщение об ошибке. Запрос должен действительным ограниченный промежуток времени.
- Пользователь переходит на страницу подтверждения, ссылка на которую отправляется пользователю и вводит код подтверждения.
- Пользователь нажимает на кнопку Подтвердить и код подтверждения поступает на вход сервиса.
- Сервис анализирует допустимость кода подтверждения и в случае успеха, сбрасывает пароль соответствующего пользователя. Новый пароль отправляется пользователю по электронной почте или телефону.
Выбор технологии для реализации
В общем случае, данный сервис может быть реализован с использованием следующих технологий:
- Только штатные средства платформы - http-сервисы. Недостатком данного подхода является сложность защиты от DDoS атак и как следствие – возможное снижение производительности работы для внутренних пользователей.
- Использование отличных от 1C технологий, таких, как php, asp.net, OneScript или других, совместно со средствами платформы.
В настоящей статье, мы остановим свой выбор на OneScript, поскольку для человека, программирующего на 1С она имеет наименьший порог вхождения.
Реализация
Поскольку в настоящее время OneScript не поддерживает отладку для web-приложений, а программирование в блокноте и отладка через Сообщить не наш метод J, реализуем сервис с использованием только штатных средств платформы, а затем перенесем его в OneScript.
В аттаче к публикации есть демо-конфигурация, содержащая пример простой реализации такого сервиса средствами платформы, а также web-приложение OneScript и дальнейшее изложение будет основано на этих материалах (к сожалению отсутствует возможность бесплатного аттача файлов, поэтому за стартмани L).
Описание конфигурации и особенности реализации
Для простоты, справочник ВнешниеПользователи содержит имя пользователя информационной базы, а также адрес электронной почты.
Все функции и процедуры, реализация которых одличается для OneScript и 1С (работа с макетами, работа с информационной базой), для простоты вынесены в общий модуль ПлатформозависимыеOneScript.
Для простоты, обновление данных об активных пользователях в локальной бд сервиса реализовано в ручном режиме.
Не реализована отправка сообщений электронной почты. Для подтверждения запроса берем код подтверждения из соответствующего документа.
Для упрощения миграции Имена обработчиков http-сервисов изменены на предопределенное имя
ОбработкаВызоваHTTPСервиса .
Для упрощения миграции корневые url сервисов соответствуют именам файлов os.
Перенос сервиса на OneScript
Документацию по установке и использованию http-сервисов в OneScript можно посмотреть по следующим ссылке: https://github.com/EvilBeaver/oscriptiocontent/blob/master/markdown/docs/http.md
Поскольку в подавляющем большинстве случаев, в качестве клиентской операционной системы у пользователей является ОС Windows, в дальнейшем, будет рассмотрена установка и настройка именно для этой ОС.
Предварительные условия
На компьютере должен быть установлен .NET Framework, версии не ниже 4.5.2
На компьютере должна быть установлен IIS или IIS Express.
На компьютере должна быть установлена платформа 1С:Предприятие, версии не ниже 8.3.5. (Не относится к OneScript, необходимо для работы с демо-базой).
Демонстрационная база и веб-сервисы должны быть опубликованы на IIS с именами chpwddb и chpwd соответственно (Не относится к OneScript, необходимо для работы с демо-базой).
Создание web-приложения OneScript
Поскольку http-сервисы OneScript представляют собой обычный сайт/web-приложение ASP.NET, первым делом необходимо создать web-приложение.
Скачиваем zip архив с сайта http://oscript.io/.
В IIS Manager создаем web-приложение, примерно как описано здесь: https://metanit.com/sharp/mvc/13.2.php (до момента работы с Visual Studio). В процессе В поле псевдоним вводим onescript (может быть любое имя в зависимости от ваших потребностей), в поле Физический путь создаем и выбираем папку приложения (в нашем случае onescript), Выбираем классический пул приложений ASP.NET 4.0 или ASP.NET 4.5. и нажимаем ОК.
В папке приложения (для IIS – это c:\inetpub\wwwroot\onescript, для IIS express что-то вроде C:\Users\<username>\Documents\IISExpress) создаем папку Bin. Копируем в нее все dll из скачанного архива.
В папке приложения создаем файл web.config, примерно следующего содержания:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.os" type="OneScript.ASPNETHandler.ASPNETHandler, ASPNETHandler"/>
</httpHandlers>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<handlers>
<add name="OneScript" path="*.os" verb=
Вступайте в нашу телеграмм-группу Инфостарт