12

Асинхронный вызов веб-сервисов в 1C:Предприятие 7.7/8.0/8.1/8.2

by Elisy 16. November 2009 03:01

Статья описывает работу 1С:Предприятие популярных версий с веб-сервисами через .Net framework. Детализирует асинхронный режим их вызова. А также демонстрирует веб-сервис прогнозирования на основе тренда и сезонности.

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

Хотя 1С:Предприятие 8 позволяет работать с веб-сервисами, асинхронный их вызов родными средствами затруднен. В 7.7 веб-сервисы совсем не предусмотрены.

Пример вызова построен на основе .Net framework и новой версии компонента Elisy .Net Bridge 3. В качестве веб-сервиса взят класс прогнозирования на основе тренда и сезонности. Через веб-интерфейс вы можете обратиться к нему по адресу http://code.elisy.net/services/forecast.aspx, а сам веб-сервис находится здесь: http://code.elisy.net/services/forecastservice.asmx.

Обработка, которая приводится для свободного скачивания, написана для 1С версии 8.1 и выглядит следующим образом:

Внешний вид обработки 1С для асинхронного вызова веб-сервисов

Исходными данными для обработки служат значения генератора случайных чисел. После нажатия "Выполнить" происходит обращение к веб-сервису, после чего блокируется командная панель. При этом пользователь может продолжать работать с 1С. Как только будут получены результаты от веб-сервера, снимается блокировка кнопок и выводится диаграмма. На диаграмму выводятся исходные данные, тренд, сезонные колебания и прогноз.

Остановимся подробнее на коде обработки. После нажатия "Выполнить" управление переходит процедуре КнопкаВыполнитьНажатие. Подключается внешний компонент Elisy.Net Bridge.

Для работы с веб-сервисами на основе SOAP предназначен класс .Net Framework SoapHttpClientProtocol. Для того, чтобы подключить механизм наследования и установки атрибутов, воспользуемся определением C# кода в переменной исходныйКод, который скомпилируем вызовом процедуры СкомпилироватьИсходныйКод. Такой подход более подробно рассмотрен в статье "Определение классов .Net и работа с ними в 1С:Предприятие". Таким образом определим класс ВебСервисы.Прогнозирование. Членами ВебСервисы.Прогнозирование являются: ThisForm – указатель на форму обработки 1С функцию которой нужно вызвать при получении результатов работы веб-сервиса. После окончания работы нужно очистить эту ссылку через метод ClearResources. ForecastAsync позволяет вызвать удаленный веб-сервис и передать в него исходные параметры, а также указать, что при получении результата необходимо вызвать метод OnForecastOperationCompleted. OnForecastOperationCompleted вызывает процедуру ВызовЗавершен формы после получения результатов.

Очередность работы процедур и методов представлена на схеме:

Очередность вызовов процедур и методов при реализации асинхронного вызова веб-сервисов в 1С:Предприятие 7.7/8.0/8.1/8.2

1- пользователь нажимает кнопку "Выполнить" и вызывается обработчик события КнопкаВыполнитьНажатие. 2- Обработчик события блокирует кнопки, подготавливает входные параметры для вызова веб-сервиса и вызывает метод ForecastAsync. 3- ForecastAsync обращается к удаленному веб-серверу и не дожидаясь ответа позволяет 1С продолжить работу. 4- веб-сервер отвечает и срабатывает событие OnForecastOperationCompleted. 5- OnForecastOperationCompleted вызывает процедуру ВызовЗавершен формы, передавая в нее нужные параметры. ВызовЗавершен разблокирует кнопки и выводит результаты.

Методика, описанная здесь, позволяет в 1С 7.7/8.0/8.1/8.2 использовать веб-сервисы, запускать несколько веб-сервисов одновременно, во время обращения к веб-сервисам работать пользователю с 1С. Веб-сервис примера использует протокол SOAP. Но при необходимости можно написать веб-сервис с другими отличными от Soap методами доступа, например: Json, Http Get, Http Post.

Обработка асинхронного вызова веб-сервисов для 1С 8.1(10,15 kb)

Tags: ,

1C.Net | C#

Comments

игорь
игорь
11/18/2009 5:47:44 AM #

Интересная статья. Жаль только я не понимаю в программировании.

Нелли
Нелли
11/18/2009 4:25:19 PM #

Ой, спасибо вам большое за эту статью. Мы в универе как раз разбирали эту тему.
Завтра покажу преподавателю ее.

web development
web development
11/19/2009 11:35:25 AM #

what a nice blog dear. I never seen such a quite attractive and useful blog after seeing it. I will pray for your success and also appreciate you at your great step that you have taken toward your bright future..

Thanks a lot again.

Igoryusha
Igoryusha
12/9/2009 11:28:36 PM #

Отличный урок для изучающих программу 1С:Предприятие

Marianka
Marianka
2/1/2010 5:43:11 PM #

Уныло все описано, без пикантных подробностей!

Elisy
Elisy
2/4/2010 5:35:01 AM #

Уныло все описано, без пикантных подробностей!
В смысле? Про любовь нигде нет? Smile

Stefan
Stefan
2/4/2010 9:46:08 AM #

Спасибо, что не забываете свои почитателей и читателей! Пишите еще!  

Tahna Katsambis
Tahna Katsambis United States
4/29/2010 7:30:09 AM #

Browsing a number of blogengine.net blogs - it appears a perfect platform. Best wishes to your web site, cheers!

secret seo tips
secret seo tips United States
5/11/2010 7:15:36 PM #

Umh, I think that the information must be free (first off all). This article contribute to the free informations, and I say a big thank you. Keep up your work, webmaster.

white hat seo
white hat seo United States
5/11/2010 7:15:50 PM #

Forgive me sir, could you please add more informations? I'm interested on this, but I need more infos, thanks.

secret seo tips
secret seo tips United States
5/11/2010 9:13:59 PM #

I love this article. There are'nt many posts that explain the subject matter.

white hat seo
white hat seo United States
5/11/2010 9:16:47 PM #

Hi, I really like the design of your site. What template are you using?

Powered by BlogEngine.NET 1.6.0.0
Original Design by Laptop Geek, Adapted by onesoft

Wisata Semarang : News : Travelling : Used Stationary Bikes : Used Stationary Bikes : Used Stationary Bikes : Seo Services Company : Indonesia Furniture Handicraft Wholesale Marketplace : My Blogpost : My Blogpost : My Blogpost: Eiknujomorp : Google Ranking Master Gujarat : Wisata Dieng