Pull to refresh

Быстрое прототипирование веб-сервиса на платформе 1C:Enterprise 8

Reading time3 min
Views13K
Доброго времени суток, уважаемые хабралюди!

Некоторые из вас наверное знают, что на платформе 1C:Enterprise 8 (1С: Предприятие 8) некоторые безумцы умельцы, помимо приложений для бухгалтеров, делают, например еще и игры. Но речь пойдет не о разработке игр, хотя в какой-то мере веб-сервисы можно использовать и для этого.

Хотя платформа 1C:Enterprise 8 и предметно ориентирована, но благодаря наличию в ней технологий COM, OLE, XML, HTML, SOAP и некоторых других, может использоваться и для задач не связанных напрямую с автоматизацией бизнеса. Лично меня в ней привлекает очень быстрая скорость разработки, отладки и разворачивания приложения. Эти характеристики для меня являются ключевыми при выборе платформы для прототипирования.

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

Постановка задачи примера


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

Специально для ненавистников кириллицы весь код (и наименование платформы) представлен в англоязычном написании.

Итак, приступим.

Разработка базы данных


Надеюсь добавить новое приложение для разработки на платформе не вызовет ни у кого каких бы то ни было затруднений. В общих чертах при добавлении (1) необходимо указать его наименование и место расположения. Для непосредственной разработки приложения необходимо перейти в режим Designer (2).



Нам понадобится всего пара кликов, чтобы создать хранилище файлов в базе данных. Для этого добавляем в приложение catalog (справочник) FileStorage.



Определяем для него один единственный реквизит ValueStorage с типом ХранилищеЗначения.



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

Реализация веб-сервиса


Теперь приступим к разработке самого веб-сервиса.

Добавим новый веб-сервис в приложение. Зададим ему имя FileStorageService.



Обязательно определим для него пространство имен.



И добавим два метода PutFile(File тип base64binary) возвращаемое значение типа string и GetFile(Id тип string) возвращаемое значение типа base64binary. В модуле веб-сервиса напишем для них несколько строчек кода:

Function PutFile(File)

If File.Size() = 0 Then
Raise "INVALID_BINARY_DATA";
EndIf;

// Добавление файла в БД.
NewFile = Catalogs.FileStorage.CreateItem();
NewFile.ValueStorage = New ValueStorage(File);
NewFile.Write();

Return NewFile.Code;

EndFunction

Function GetFile(Id)

// Поиск файла в БД по переданному коду.
File = Catalogs.FileStorage.FindByCode(Number(Id));

If NOT ValueIsFilled(File) Then
Raise "INVALID_FILE_CODE";
EndIf;

Return File.ValueStorage.Get();

EndFunction


Всё, необходимые нам функции получения и помещения файла на сервер реализованы. Осталось только завести пользователей для HTTP аутентификации и опубликовать наш веб-сервис.

Публикация на веб-сервере


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



Далее назначим эту роль первому созданному пользователю (Administration -> Users -> Add) – администратору.





После этого в список добавим обычных пользователей.



После добавления пользователей опубликуем наш веб-сервис. Публикация (Administration -> Publishing on web-server...) возможна на IIS или Apache. Все необходимые для этого действия платформа выполняет автоматически. Нам необходимо только нажать кнопку Publish.



Это всё, опубликованным веб-сервисом можно уже пользоваться.

Как мне кажется прочтение этого текста займет гораздо больше времени, чем заняла реализация. Надеюсь уважаемым хабралюдям было интересно узнать, что прототипировать веб-сервисы на платформе 1C:Enterprise 8 достаточно быстро и просто. В некоторых средах разработки обычный «Hello world» реализовать гораздо сложнее.
Tags:
Hubs:
+1
Comments13

Articles

Change theme settings