1c несоответствие количества параметров операции веб сервиса и процедуры обработчика

Обновлено: 04.07.2024

Знаю, что на хабре не очень-то жалуют многострадальную 1С. Хотя, с выходом платформы 8.3 (с клиентами под Linux), ее стали любить несколько больше. Кстати, так же, совсем недавно интерфейс одной из основных разработок 1С – конфигурация Управление производственным предприятием – был полностью переведен на английский язык. Много раз я встречал вопросы о том, почему здесь не пишут об 1С. Ответ на них довольно очевиден – существует множество специализированных ресурсов, где можно оперативно обсудить все вопросы и что-то почитать.

Есть все основания полагать, что эта статья здесь не выживет, но я все же рискну, потому что в 1С есть некоторые интересные вещи, о которых стоит рассказать.

С некоторых пор в 1С 8.х появилась возможность использования веб-сервисов: 1С может выступать как поставщиком, так и потребителем. В этой статье я покажу, как использовать 1С в качестве потребителя на примере получения курсов валют с сервера ЦБР.

Веб-сервис

Конфигурирование

Для разработки я взял 1С 8.2 (8.2.15.317 в моем случае) и создал пустую конфигурацию. Для использования внешних веб-сервисов предусмотрен объект WS-ссылки, но использовать его не обязательно, к сервису можно обращаться динамически из кода. Я буду использовать первый вариант, а затем покажу, как можно использовать второй. В конфигурации создал обработку и назвал ее «ЗагрузкаКурсовВалютЦБР». Добавил форму (управляемую) и сделал ее основной. На форме я создал реквизиты и разместил элементы управления так, как показано на рисунке.



1С на основании полученного описания автоматически создаст визуальную карту веб-сервиса. Можно увидеть название веб-сервиса, посмотреть какие у него доступны операции а так же используемые типы данных.


Конфигурирование на этом почти закончено, осталось сделать пару штрихов для того, чтобы наше приложение выглядело более эстетично. Кликнем правой кнопкой мыши по корню конфигурации и вызовем меню «Открыть командный интерфейс рабочего стола». В появившемся окне необходимо снять флаг «Видимость» напротив обработки «Загрузка курсов валют ЦБР». Нажмем кнопку Ок. Далее еще правый клик по корню конфигурации и вызовем меню «Открыть рабочую область рабочего стола», там сделаем настройку как на рисунке:


Эти настройки позволят нам отобразить форму обработки прямо на рабочем столе (имеется ввиду рабочий стол программы 1С) в режиме 1С Предприятие.

Программирование

Теперь осталось наполнить смыслом нашу обработку: заставить ее получать курсы валют и отображать в таблице на форме. В режиме редактирования формы необходимо добавить новую команду формы, назовем ее ЗагрузитьВалюты. Эту команду необходимо связать с кнопкой, расположенной на форме. Действие для команды заполним следующим кодом (прим. автора: ничего себе, на хабре есть подсветка кода 1С, правда она работает не корректно):


Здесь сначала проверяется, заполнена ли дата (если не заполнена, то сообщаем об этом пользователю и больше ничего не делаем). Затем очищается таблица, расположенная на форме и вызывается процедура ЗагрузитьКурсыВалют(), в которую передается дата.

Код процедуры ЗагрузитьКурсыВалют(), пояснения данны в комментариях к коду:


Теперь можно обновлять конфигурацию БД (F7) и запускать 1С Предприятие (F5). Если все сделали верно, то должны увидеть окно как на рисунке ниже:


Чтобы проверить результат, нам нужно ввести дату, на которую хотим получить курсы валют и нажать на кнопку «Загрузить валюты». В случае успешного запроса, таблица на форме заполнится значениями курсов:


Напоследок хочу показать, как можно обратиться динамически к внешнему веб-сервису, то есть без добавления объекта WS-ссылка. Таким образом, мы можем использовать такие веб-сервисы из внешних обработок без привязки к конфигурации.

В процедуре ЗагрузитьКурсыВалют() строку


необходимо заменить двумя следующими строками


Сначала мы создаем так называемые определения для веб-сервиса из его WSDL. Затем так же создаем прокси для обращения к нему.

Как видно, использовать внешние веб-сервисы из 1С в целом довольно просто (хотя и есть некоторая сложность в понимании определения типов, у меня в том числе).

Если данная публикация найдет здесь отклик, то есть еще несколько тем, о которых можно рассказать.

Передача параметров веб сервису, и разбор полученного ответа

В предыдущей статье мы проверяли орфографию с помощью веб сервиса от Яндекса. Сегодня мы создадим еще одну обработку с проверкой орфографии, но усложним задачу, если почитать документацию по яндекс спеллер API можно узнать, что проверка текста возможна на 3 языках:

  • ru – русский;
  • uk – украинский;
  • en – английский.

Также можно управлять параметрами проверки: таблицу берм из описания API спеллера. Это кстати неправильно по WSDL мы должны получить полное описание сервиса, а тут есть параметр, который вычислить без чтения документации невозможно, но главное что документация есть.

Значение (десятичное)

Описание (пример)

Пропускать слова, написанные заглавными буквами, например, "ВПК".

Пропускать слова с цифрами, например, "авп17х4534".

Пропускать интернет-адреса, почтовые адреса и имена файлов.

Подсвечивать повторы слов, идущие подряд. Например, "я полетел на на Кипр".

Пропускать слова, написанные латиницей, например, "madrid".

Только проверять текст, не выдавая вариантов для замены.

Отмечать слова, написанные латиницей, как ошибочные.

Не использовать словарное окружение (контекст) при проверке. Опция полезна в случаях, когда на вход сервиса передается список отдельных слов.

Игнорировать неверное употребление ПРОПИСНЫХ/строчных букв, например, в слове "москва".

Для того чтобы использовать несколько параметров их значение просто надо сложить вместе. Ну и указание формата проверяемого текста : plain - текст без разметки (значение по умолчанию) или html - HTML-текст.

Для установки параметров добавим к нашей предыдущей обработке дополнительную форму с незатейливым название «Настройки» Выглядеть она будет так:

Изображение

Немного изменим код обработки. Теперь нам нужно передать не просто текст в веб сервис, а структуру с несколькими параметрами, для этого нам нужно получить описание параметра веб сервиса.

Сначала смотрим, что мы должны передать веб сервису:

Изображение

Операции checkTexts мы должны передать параметр с типом CheckTextRequest, который состоит из атрибутов: lang, options, format, text.

Код, который осуществляет это следующий:

Заметьте, для облегчения понимания работы с веб сервисом я использовал Wsссылку из структуры метаданных конфигурации, но работаем мы с динамической ссылкой.

который состоит уже из SpellResult – ов. Посмотрим, как выглядит ответ сервера в XML формате, воспользовавшись soapUI.

Изображение

Модифицированный код разбора результата будет такой

как видите, мы просто спустились по структуре ХМЛ до уровня, на котором уже есть нужные нам данные.

Помогите пожалуйста, не могу разобраться. Есть веб сервис сторонний, подключаюсь к нему через 1с на последней строчке выдает ошибку: <Форма.Форма.Форма>: Метод объекта не обнаружен (addComment) Proxy.addComment("tasks",45578,"Тест","ACCOUNTING",""); В чем может быть дело. Из других систем этот метод работает

Прошу прощения. Это к 1С. Для сторонних может быть не так. Хотя кроме АдресВэбСервиса должно быть одинаково. Смотри в отладчике

В отладчике у меня есть только одна точка подключения, ее я и прописываю в Новый WSПрокси, если вызываю с окончанием soap, она ругается что порт не найден

Пробовала и "ПутьКМоемуСервису?wsdl" и "ПутьКМоемуСервису разницы нет

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает

Если подумать, то ПутьКМоемуСервису?wsdl забив в браузер ты увидишь описание web-сервиса.

создай в пустой конфе WSСсылку, закинь в нее свой wsdl и посмотри, какие методы 1Ска распознает Она ругается, что формат неверен, в каком формате нужно указывать url

Пишет что неверный формат, может нужно каку-нибудь библитеку подгрузить?

значит не судьба с этим сервисом из 1Ски поработать. SOAP он такой SOAP, слишком вольно местами трактуемый

Да не нужен мне твой сервант, сама проверь, открывается ли в браузере wsdl-ка

открывая ПутьКМоемуСервису.xml?wsdl я получаю тоже что и когда пишу ПутьКМоемуСервису.xml

ТС, у меня была схожая ситуация, вот статья с моими изысканиями:

В моем случае это не помогло(сторонний веб сервис был на Oracle Fusion Middlewere)

без разницы. Можно использовать любое MQ с поддержкой SOAP в качестве ws2ws-proxy

Ну не можешь и не можешь. Короче, ты описание сервиса через обычный браузер видишь?

Ищи метод addComment и смотри что он должен получить.

<part name="type" type="xsd:string"/><part name="id" type="xsd:int"/><part name="comment" type="xsd:string"/><part name="user" type="xsd:string"/><part name="attachments" type="soap-enc:Array"/>

>>Из других систем этот метод работает Из каких других, 1С или что-то иное?

ты с регистром имя метода точно не путаешься, дело в том, что метод addcomment из и addComment из с точки зрения SOAP - разные

на perl они вызывают my $obj = $soap->addComment( $tw_type, $tw_id, $tw_comment, $tw_user, $tw_attachments );

в скорее всего ошибка. в perl пространство имен и прочее статично или дергает из определения?

обычно метод echo реализуют у сервисов для диагностики связи.

Можешь создать класс на Net для подключения вэб сервиса а затем через вот этот прокиси подключить его как ком

+ в передача параметров неправильная согласно : и. т. п.

1ска же нормально преобразует в xml примитивные типы, мне кажется, это излишество

с фабрикой я тоже пробовала, но проблема именно в том что 1с-ка не видит этот метод

Причина? Ты не знаешь статично оно в perl или динамично?

проблема в том, что wsdl скорее всего не соответствует спецификации. из-за чего 1Ска не может преобразовать его в XTDO.

ИМХО, там она просто из другого пространства имен цепляет.

URIПространстваИмен и прочее точно соответсвует определению?

Для anyType нужно явное создание типа. Но в данном случае ругается на метод. Если же в она WS ссылку не может загрузить, то возможно, что 1С не понимает. Если бы была ссыдка можно было бы проверить

Я давно разочаровался в 1с-овском SOAP. Сплошь и рядом продвинутые веб-сервисы юзают SOAP шире, чем его поддерживает 1С. В итоге 1С их "не понимает".

Вы статью читали, ссылку на которую я давал в самом начале? Делайте как там.

Сохрани WSDL-описание в xml-файл, и загрузи WSссылку, если будет ошибка "неверный формат", значит надо редактировать xml. Я так раздел за разделом отлаживал. Еще проверь веб-сервис на валидность, можно через сайт

Хорошая идея. Я тоже как-то было так отлаживал. Избавлял от циклических ссылок в пространствах имен (1С этого не переваривает). Думал, что победа близка. wsdl успешно загрузился. А потом выяснилось, что сервис использует хитрый способ авторизации через установку каких-то заголовков (подробности уже плохо помню), а 1С эту фигню не поддерживает. Было очень обидно.

файл сохранила, пишет что неверный формат, можно ли какой-нибудь прогой его проверить. Сайт не подходит

Может кто знает, что может не нравиться в wsdl 1с, почему она может писать неверный формат?

и что такое циклические ссылки в пространствах имен

wsdl валидный, я отправляла запрос с помощью soap-клиента, все нормально отрабатывает

В данной статье будет рассмотрены вопросы интеграции 1С с уже существующими веб-сервисами и использование самой 1С как веб-сервиса.

Далее для экономии веб-сервис будет именоваться просто сервис.

Риски использования веб-сервисов 1С

В платформе 1С81 появилась реализация веб-сервисов.

Но их использование чревато рисками:

Правила построения сервисов по продаже

Клиенту выдается документ о продаже (чек) только в том случае, если транзакция по сервису прошла успешно. Иначе возможна ситуация, когда клиент получит чек и будет пребывать в уверенности, что получил услугу, а на самом деле это не так.

Использование внешних SOAP-сервисов

Веб-сервисы SOAP используют WSDL схемы и объекты XDTO для представления данных.

Загрузка WSDL

Для того, чтобы использовать внешний сервис, нужно загрузить его WSDL-схему.

Проверка валидности WSDL-схемы


Особенности загрузки WSDL в 1С

Особенность загрузки WSDL в 1С в том, что валидные схемы могут не загружаться. Никакого встроенного валидатора нет, поэтому приходится искать ошибку методом деструктивного анализа, последовательно уменьшая количество элементов в схеме. Можно, например, удалить описание веб-сервиса.

1С не любит слово «policies». Если WS-ссылка не загружается, нужно убрать все, что связано с этим словом в любом XML-редакторе.

Обработка для тестирования работающего внешнего веб-сервиса

Для тестирования работающего внешнего веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf» из пакета к этой статье.


Таким способом можно протестировать любой сервис, который имеет простые точки входа, содержащие параметры простых типов: число, дата, строка.

В обработке можно указать также логин и пароль, которые требуются для авторизации доступа к веб-сервису.

Стандартные средства отладки сервисов

Для отладки можно использовать программу SoapUI, который может передать произвольный запрос веб-сервису и получить от него ответ.

Использование 1С как сервиса

Правила разработки сервиса на базе 1С

Операция «Hello»

Правилом хорошего тона является создание в сервисе операцию, которая информирует о том, что сервис доступен. Это облегчает жизнь интеграторов, им будет проще проверять, налажена ли связь с сервисом.

Например, можно использовать операцию Hello без параметров, которая просто возвращает булево значение Истина.

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

Задача публикации Web-сервисов сводится к размещению конфигурационных файлов *.1cws Web-сервисов в соответствующем каталоге веб-сервера с соответствующими настройками для веб сервера. Для того, чтобы выполнить публикацию Web-сервисов, следует выполнить команду меню «Администрирование | Публикация Web-сервисов».

В результате выполнения этой команды будет открыто окно публикации Web-сервисов.

Окно публикации Web-сервисов содержит путь к веб-серверу и два списка:

  • «Web-сервисы» – список Web-сервисов конфигурации;
  • «Публикация» – список Web-сервисов, опубликованных на указанном веб-сервере.

С помощью кнопки «Соединение…» следует указать веб-сервер, на котором требуется опубликовать Web-сервисы.

Окно выбора пути к веб-серверу позволяет указать путь двумя способами:

  • на закладке «Файлы» – этот способ используется в том случае, когда публикация выполняется на том же компьютере, на котором установлен веб-сервер. В качестве пути указывается локальный каталог, соответствующий интернет-странице, с которой будет выполняться вызов публикуемого Web-сервера;
  • на закладке «FTP сайт» – этот способ используется в том случае, когда требуется опубликовать Web-сервис на удаленном компьютере. Для выполнения публикации необходимо указать параметры FTP-соединения с удаленным компьютером и каталог, в котором будет опубликован Web-сервис.

Публикация выбранного Web-сервиса осуществляется с помощью кнопки «Опубликовать»

Для отмены публикации Web-сервиса используется кнопка «Удалить».

Для обновления списка опубликованных Web-сервисов используется кнопка «Обновить текущий список».

Публиковать можно в локальном каталоге или по FTP. Можно публиковать и на удаленный сервер по UNC-пути, если удаленный сервер входит в локальную сеть.


Авторизация к веб-сервису 1С

Для доступа к сервису нужно пройти аутентификацию.

Обычно веб-сервис работает под одним конкретным пользователем (чаще - специально созданным). Можно пользователя 1С "прикрепить" средствами Windows-аутентификации к пользователю Windows IUSR_ (для пользователя отключить авторизацию 1С). Как вариант, можно очистить список пользователей 1С, тогда авторизация не требуется.

Если требуется несколько пользователей, то можно создать несколько логинов для веб-сервера, к каждому из них привязать пользователя Windows и соответственно, прописать в 1С доступ к пользователям Windows.

В свойствах Пользователь и Пароль объекта WSПрокси используется не логин 1С, а логин пользователя веб-сервера.

Тестирование веб-сервиса 1С

Для тестирования 1С как веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf», как описано в разделе «Тестирование работающего внешнего веб-сервиса».

Файл 1cws и является WSDL-описанием веб-сервиса 1С.

Использование сервисов в Рознице

Обычно в рознице сервисы используются для оказания различных услуг населению – прием платежей, погашение кредитов, денежные переводы, покупка программного обеспечения и т.п.

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

Сервис может быть по-разному интегрирован в розничную программу, написанную на языке 1С (УТ, Розница и другие):

  1. Может быть написана обработка или код на языке 1С, который выполняет всю работу с сервисом.
  2. Может использоваться программа, которая работает с сервисом, а в 1С передает только информацию для пробития чеков.

Организация служебных данных в 1С

Для хранения информации о транзакции в чеке необходимо создать дополнительную табличную часть «Сложные продажи» с реквизитами:

  • Номенклатура – привязка к номенклатуре чека.
  • Параметр - ссылка на справочник «Сложные продажи: Параметры».
  • Значение – значение параметра, составного типа. Строковое представление должно быть довольно длинным (1024 символа), чтобы помещался текст чека.

Справочник «Сложные продажи: Параметры» содержит перечень параметров транзакции.

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

Продавцу делается отдельная закладка (или печатная форма, чтобы не менять конфигурацию), в которой он может посмотреть табличку реквизитов транзакции для чека.

Использование обработок на языке 1С

Рассмотрим на примере условной услуги Paym для конфигурации «Розница».

Отдельный вопрос – как обеспечить завершенность транзакции. Т.е. если транзакция прошла в сервисе, как сделать, чтобы она не потерялась в 1С. Наиболее оптимальный путь – сверка реестров. Но это предмет отдельного рассмотрения.

Использование программ, интегрируемых с 1С

Часто в веб-сервисах используется XDTO. Приведем наиболее важные советы и рецепты по использованию XDTO в 1С.

XDTO в платформе 1С

XDTO-пакеты, описанные в ветке «XDTO-объекты» конфигурации, доступны для создания типов и объектов в глобальной фабрике Фабрика XDTO. Это не сразу становится очевидным.

Некоторые типы в схеме не имеют имени, чтобы их получить, надо пройтись по иерархии типов.

В примере был описан список System, содержавший структуры XDTO. Чтобы создать саму структуру, нужно было получить ее тип таки вот образом:

Частые проблемы с XDTO

Разные форматы XSD-схем

В некоторых форматах теги называются xs:, в некоторых xsd:, но 1С благополучно понимает оба формата. Однажды была ситуация, что XSD нормально без ошибок импортировалась в 1С, но не создавала ни одного пакета. Причина была в отсутствии атрибута targetNamespace у тега , соответственно 1С не знала, в какой пакет помещать схему, но ошибок не выдавала.

Сопровождение сервисов

Учитывая, что сервис – это совокупность двух систем – 1С и внешней, ошибки могут быть в обоих системах, что снижает общую надежность работы.

Для того, чтобы проще было разбираться в причинах отказов в работе сервисов, рекомендуется использовать комплекс мер.

Протоколирование запросов

Рекомендуется сохранять все запросы и ответы на них в каталог программы, файлы сохранять в папки вида ГГГГММДД по дням. Это очень способствует пониманию причин проблем.

I. Раздел 1 – Пример реализации web-сервиса в системе «1С:Предприятие».
II. Раздел 2 – Пример обращения к web-сервису системы «1С:Предприятие» из стороннего приложения (разработка приложения в Delphi)
III. Раздел 3 – Пример обращения к web-сервису в системе «1С:Предприятие»
IV. Раздел 4 – Отладка web-сервисов в системе «1С:Предприятие»

ПРИМЕР РЕАЛИЗАЦИИ WEB-СЕРВИСА В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

ЗАДАЧА: Необходимо создать web-сервис, обращаясь к которому клиенты могут определить всю необходимую информацию по своим заявкам.

Задача является демонстрационной и служит только примером для понимания и обучения механизму web-сервисов.

Шаг 1. Создадим новую информационную базу без конфигурации для разработки новой конфигурации.

Шаг 2. Добавим в конфигурацию несколько новых объектов


Шаг 3. Создадим новый XDTO-пакет.

Почему и для чего мы создаем XDTO-пакет? Подробнее об использовании механизма XDTO можно прочитать в «Глава 16. Руководство разработчика» и здесь .

Коротко отметим лишь только то, что механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами.

В нашем случае пакет XDTO создается для описания возвращаемого значения web-сервиса.

Раскроем ветку «Общие» → «XDTO-пакеты» → Добавить…


Наш пакет содержит два типа объектов XDTO:

1) Сustomer – для передачи данных элемента справочника «Клиенты».

Этот тип объекта XDTO будет содержать следующие свойства:

2) Document – для передачи данных документа «Заявки»

Этот тип объекта XDTO будет содержать следующие свойства:


Шаг 4. Добавим в конфигурацию новый Web-сервис

Раскроем ветку «Общие» → «Web-сервисы» → Добавить…

Для Web-сервиса укажем следующими значения свойств:

- Имя файла публикации – request.1cws


Шаг 5. У созданного Web-сервиса определим операцию « GetData »


Значения свойств операции:

- Возможно пустое значение – Истина

- Имя процедуры – GetData .

Шаг 6. У операции GetData определим параметр Сustomer со следующими значениями свойств:

Направление передачи – входной .


Шаг 7. Откроем модуль созданного Web-сервиса и поместить в него функцию Получить(), которая будет выполняться при вызове данного Web-сервиса.

Функция GetData ( Сustomer )

// Получить типы объектов XDTO

КлиентСсылка = Справочники . Клиенты . НайтиПоНаименованию ( Сustomer );

Если Не ЗначениеЗаполнено ( КлиентСсылка ) Тогда

Запрос = Новый Запрос ;

"ВЫБРАТЬ ПЕРВЫЕ 1

| ПРЕДСТАВЛЕНИЕ(Заявка.Статус) КАК Статус,

| Документ.Заявка КАК Заявка

Запрос . УстановитьПараметр ( "Клиент" , КлиентСсылка );

РезультатЗапроса = Запрос . Выполнить ();

Если РезультатЗапроса . Пустой () Тогда

Выборка = РезультатЗапроса . Выбрать ();

Документ = Выборка . Ссылка . ПолучитьОбъект ();

// Создать объект XDTO заявки

Заявка = ФабрикаXDTO . Создать ( ЗаявкаТип );

Заявка . Numder = Выборка . Номер ;

Клиент = ФабрикаXDTO . Создать ( КлиентТип );

Клиент . Name = КлиентСсылка . Наименование ;

Заявка . Сustomer = Клиент ;

Заявка . Status = Выборка . Статус ;

Шаг 8. Опубликуем созданный Web-сервис на веб-сервере.

Пункт меню Конфигуратор: «Администрирование» → «Публикация на Web-сервере».

На вкладке «Web-сервисы» устанавливаем признак «Публиковать Web-сервисы» и напротив нашего нового Web-сервиса также ставим «галочку».


ПРИМЕР ОБРАЩЕНИЯ К WEB-СЕРВИСУ СИСТЕМЫ «1С:ПРЕДПРИЯТИЕ» ИЗ СТОРОННЕГО ПРИЛОЖЕНИЯ

Основное назначение механизма Web-сервисов в системе «1С:Предприятие» - это передача необходимых данных сторонним приложениям.

Рассмотрим пример разработки приложения на Delphi обращения к нашему web-сервису из первого раздела данной статьи.

Шаг 1. Создадим новый проект и на форме разместим несколько элементов управления

- текстовое поле – используется для вывода полученной от web-сервиса информации;

- две кнопки – очистка текстового поля и обращение к web-сервису;

- поле ввода – передаваемый в web-сервис параметр.


Шаг 2. Выполняем импорт WSDL-файла




В результате мы получаем новый модуль request (такое наименование мы определили непосредственно в 1С). В данном модуле имеется все необходимая информация по web-сервису.


Шаг 3. Напишем обработчик вызова web-сервиса


Переменная DocumentDataPortType уже определена в модуле request


Шаг 4. Запустить приложение и выполнить проверку.

ПРИМЕР ОБРАЩЕНИЯ К WEB-СЕРВИСУ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

Шаг 1. Создадим новую внешнюю обработку с именем «WEB_Service»

Шаг 2. Для обработки определим новую форму

Шаг 3. У формы укажем несколько реквизитов

Клиент – тип «Строка»

КлиентВозврат - тип «Строка»

НомерВозврат - тип «Строка»

СтатусВозврат - тип «Строка».

Выведем реквизиты на форму.


Шаг 4. Добавим команду формы « ПолучитьДанные »

Укажем обработчик команды

Процедура ПолучитьДанные ( Команда )

Процедура ПолучитьДанныеНаСервере ( Клиент )

// Создать WS-прокси на основании ссылки и выполнить операцию Получить()

ДанныеЗаявки = Прокси . GetData ( Клиент );

Если ДанныеЗаявки = Неопределено Тогда

КлиентВозврат = ДанныеЗаявки . Сustomer . Name ;

СтатусВозврат = ДанныеЗаявки . Status ;

НомерВозврат = ДанныеЗаявки . Numder ;

Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, двумя способами:

- с помощью статических ссылок, создаваемых в дереве конфигурации;

«плюс»: большая скорость работы;

«минус»: повторный импорт WSDL-описания средствами конфигуратора и сохранение измененной конфигурации.

- с помощью динамических ссылок, создаваемых средствами встроенного языка

(соответственно «минусы» статических для динамических – «плюсы»)

ОТЛАДКА WEB-СЕРВИСОВ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

Для локального web-сервиса необходимо:

Шаг 1. Положить на клиент, где запускается система 1С файлик webservicecfg.xml со следующим содержимом

Шаг 2. В файл default.vrd публикации конфигурации добавить строку

< debug enable = « true » url = » tcp : //localhost» />

Шаг 3. В конфигураторе выбрать пункт меню

«Отладка» → «Подключение» → «Автоматическое подключение» → «Web-сервисы на сервере»

Шаг 4. Нажать на кнопку «OK»


Для серверного варианта надо еще сервер 1с запускать в режим отладки с ключом /debug

Читайте также: