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

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)