Здравствуйте, уважаемые программисты 1С! Представляю вашему вниманию, обсуждению и использованию Модуль для работы 1С с внешними веб-сервисами.
Кому это может пригодиться
1. Вы опытный программист, и в данный момент времени перед Вами стоит задача интегрировать 1С с внешними программами посредством вызова внешних веб-сервисов, и эта задача возникает у Вас периодически, каждый раз при этом Вы дублируете код - этот модуль придёт Вам на помощь, вызывайте любые операции любых веб-сервисов из кода в две строчки.
2. Вы только учитесь программировать или Вы опытный программист 1С, но у Вас абсолютно нет опыта работы с веб-сервисами и понятием XDTO в 1С - модуль поможет Вам в тестовом режиме использования понять на практике определенные нюансы работы с XDTO объектами в 1С, на примере с тестовыми внешними веб-сервисами (можете использовать в учебных целях общедоступный веб-сервис для работы с погодой GlobalWeather).
Конечно же, практика в виде чтения чужого кода с отладчиком хороша и полезна, не заменит никакую документацию, но для начала, если Вы не знакомы с веб-сервисами, но хотите понять всю суть работы с внешними веб-сервисами из 1С и публикации веб-сервисов 1С для внешнего использования, для начала советую прочитать статью о веб-сервисах в целом на хабре или на wikipedia, реализации веб-сервисов в 1С на ИТС, затем серию публикаций автора Evil Beaver под названием XDTO - это просто. По Вашему желанию можно поискать любую другую информацию на просторах интернета, всё зависит от Вашего настроя. Но давайте вернёмся к сути данной публикации.
Принцип работы данного модуля
Когда у меня встала задача интеграции 1С с внешними источниками, я сразу понял, что код нужно разделить на несколько уровней абстракции.
Общий модуль (1-ый уровень абстракции), который обслуживает определенный внешний веб-сервис, предоставляет такие функции как : получить структуру параметров определенной операции на данном веб-сервисе, выполнить определенную операцию на определенном веб-сервисе, который по мере необходимости обращается к 2-ому общему модулю (2-ой уровень абстракции), который уже на более низком уровне предоставляет все необходимые операции для работы с веб-сервисами.
Более подробно схематично:
От теории к практике
Как это работает в коде:
Платформа 8.3, управляемые формы.
Платформа 8.2, обычные формы.
Под капотом при получении параметров:
Под капотом при выполнении метода:
Как видно по последнему скрину, имеется возможность указать имя реквизита, который идентифицирует успешное выполнение, также модуль имеет функционал для создания анонимных типов, причем на любом уровне вложенности. Есть возможность передавать реквизит булевого типа - "Отказ", в случае, если веб-сервис вызывается при записи объектной сущности.
Так как статья ориентирована на программистов, так или иначе умеющих читать код 1С и делать логические выводы, я не буду слишком сильно углубляться в обьяснение принципов работы данного модуля.
Файлы во вложении:
1. Тестовые конфигурации с интегрированными тестовыми внешними веб-сервисами:
1.1. на платформе 8.2, с режимом запуска обычное приложение.
1.2. на платформе 8.3, с режимом запуска управляемое приложение.
1.3 Соответствующие обработки на обычных и управляемых формах, для вызова и тестирования интегрированных веб-сервисов.
2. Текстовые файлы содержащие код технического общего модуля и шаблон обслуживающего веб-сервис общего модуля.
3. Текстовый файл, описывающий необходимые действия для интеграции данного модуля.