Доброго времени суток, уважаемые хабралюди!
Некоторые из вас наверное знают, что на платформе 1C:Enterprise 8 (1С: Предприятие 8) некоторыебезумцы умельцы, помимо приложений для бухгалтеров, делают, например еще и игры. Но речь пойдет не о разработке игр, хотя в какой-то мере веб-сервисы можно использовать и для этого.
Хотя платформа 1C:Enterprise 8 и предметно ориентирована, но благодаря наличию в ней технологий COM, OLE, XML, HTML, SOAP и некоторых других, может использоваться и для задач не связанных напрямую с автоматизацией бизнеса. Лично меня в ней привлекает очень быстрая скорость разработки, отладки и разворачивания приложения. Эти характеристики для меня являются ключевыми при выборе платформы для прототипирования.
Под катом я на простом примере покажу насколько быстро на платформе 1C:Enterprise 8 можно реализовать веб-сервис, разработать для него базу данных и опубликовать на веб-сервере. Приведенный пример, в немного измененном виде, используется в большом и реальном проекте, прототип которого было решено реализовать на 1C. Проект еще находится в стадии разработки, но я все больше склоняюсь к тому, чтобы и финальную реализацию сделать на этой платформе.
Для примера разработаем небольшой веб-сервис, обеспечивающий удаленное хранение файлов. Из функций веб-сервиса реализуем только помещение файла на сервер и его получение. Для доступа на веб-сервис будем использовать HTTP аутентификацию.
Специально для ненавистников кириллицы весь код (и наименование платформы) представлен в англоязычном написании.
Итак, приступим.
Надеюсь добавить новое приложение для разработки на платформе 1С не вызовет ни у кого каких бы то ни было затруднений. В общих чертах при добавлении (1) необходимо указать его наименование и место расположения. Для непосредственной разработки приложения необходимо перейти в режим Designer (2).

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

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

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

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

И добавим два метода PutFile(File тип base64binary) возвращаемое значение типа string и GetFile(Id тип string) возвращаемое значение типа base64binary. В модуле веб-сервиса напишем для них несколько строчек кода:
Всё, необходимые нам функции получения и помещения файла на сервер реализованы. Осталось только завести пользователей для HTTP аутентификации и опубликовать наш веб-сервис.
Вначале разработки в приложении отсутствуют какие либо пользователи и доступ к информационной базе разрешен без ввода имени и пароля. Для того чтобы это исправить необходимо добавить пользователей в информационную базу. Также эти пользователи будут использоваться и для HTTP аутентификации. Первое что мы сделаем, это добавим роль с полными правами.

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


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

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

Это всё, опубликованным веб-сервисом можно уже пользоваться.
Как мне кажется прочтение этого текста займет гораздо больше времени, чем заняла реализация. Надеюсь уважаемым хабралюдям было интересно узнать, что прототипировать веб-сервисы на платформе 1C:Enterprise 8 достаточно быстро и просто. В некоторых средах разработки обычный «Hello world» реализовать гораздо сложнее.
Некоторые из вас наверное знают, что на платформе 1C:Enterprise 8 (1С: Предприятие 8) некоторые
Хотя платформа 1C:Enterprise 8 и предметно ориентирована, но благодаря наличию в ней технологий COM, OLE, XML, HTML, SOAP и некоторых других, может использоваться и для задач не связанных напрямую с автоматизацией бизнеса. Лично меня в ней привлекает очень быстрая скорость разработки, отладки и разворачивания приложения. Эти характеристики для меня являются ключевыми при выборе платформы для прототипирования.
Под катом я на простом примере покажу насколько быстро на платформе 1C:Enterprise 8 можно реализовать веб-сервис, разработать для него базу данных и опубликовать на веб-сервере. Приведенный пример, в немного измененном виде, используется в большом и реальном проекте, прототип которого было решено реализовать на 1C. Проект еще находится в стадии разработки, но я все больше склоняюсь к тому, чтобы и финальную реализацию сделать на этой платформе.
Постановка задачи примера
Для примера разработаем небольшой веб-сервис, обеспечивающий удаленное хранение файлов. Из функций веб-сервиса реализуем только помещение файла на сервер и его получение. Для доступа на веб-сервис будем использовать HTTP аутентификацию.
Специально для ненавистников кириллицы весь код (и наименование платформы) представлен в англоязычном написании.
Итак, приступим.
Разработка базы данных
Надеюсь добавить новое приложение для разработки на платформе 1С не вызовет ни у кого каких бы то ни было затруднений. В общих чертах при добавлении (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» реализовать гораздо сложнее.