Пример получения данных из другой базы 1С через Web-сервис





В данной статье описан пример получения данных справочника из другой базы 1С через Web-сервис.

Открываем базу источник

В дереве конфигурации находим объект Web-сервисы, добавляем новый веб-сервис WebFIZObmen и заполняем свойства как показано на рисунках

Далее опишем процедуру SubmitQuery, которая будет возвращать значения справочника и две дополнительные процедуры Сериалиации и Десериализации

сохраняем базу и открываем конфигуратор от имени администратора для публикации базы

 В меню Администрирование выбираем Публикация на веб-сервере

указываем имя базы и нажимаем Опубликовать 

После успешной публикации проверяем работоспособность web-ссылки

открываем браузер и вводим адрес http://localhost/ist/, где ist — имя опубликованной базы 

база должна открыться:

далее необходимо проверить работу wsdl ссылки http://localhost/ist/ws/WebFIZObmen?wsdl, она должна открыться через браузер примерно  вот так:

 

Переходим к базе приемника, открываем ее конфигуратором

Переходим к объекту конфигурации WS-ссылки, создаем новую WSСсылку,

 

в качестве URL источника указываем  http://localhost/ist/ws/WebFIZObmen?wsdl. если система просит логин и пароль, то указываем логин и пароль базы источника, под ним база приемник будет получать данные.

Далее создаем обработку получения ФИО, код загрузки:

Запускаем базу приемник, запускаем обработку получения ФИО

как мы видим фамилии вывелись в окне сообщений, полученные из базы приемника

 

29 Comments

  1. aximo

    зачем здесь делать публикацию базы? достаточно опубликовать веб-сервиса

    Reply
  2. tvm

    зачем WS ссылку в конфу добавлять если она в тексте прописывается?

    Reply
  3. TODD22

    (2)если не путаю когда ws ссылка в коде то будет два обращения к серверу. Будет с начало получено wsdl описание а потом уже вызов сервиса. Если добавить ссылку в конфигураторе то можно подгрузить wsdl схему и тогда будет один вызов сервера.

    Reply
  4. kolya_tlt

    (3) всё правильно, для этого в БСП сделан служебный РС, чтобы не зашивать адрес в конфигураторе

    Reply
  5. kolya_tlt

    не очень понял зачем вообще параметр метода, который ни на что не влияет

    Reply
  6. gradi

    Имя юзера для подключения к WS лучше указывать на латинице. Как-то очень долго не могли проблему при подключении из-за кирилического имени.

    Reply
  7. Dach

    (5) как называется данный регистр, не подскажете?

    Reply
  8. Dach

    (7) а все, уже разобрался… КэшПрограммныхИнтерфейсов

    Reply
  9. vermouth

    я так понимаю, можно передать только данные примитивных типов, либо объекты идентичных (имеющихся в обеих конфигурациях)ссылочных типов?

    Reply
  10. tvm

    (9) с помощью XDTO-пакетов можно ссылочные типы

    Reply
  11. vermouth

    (10) это и логично было отразить в примере, на мой взгляд… а то получилось, что пример идентичен по смыслу и наполнению ролику «Обмен данными с мобильным приложением через веб-сервисы» урок-2 (ролик старый, просто недавно смотрел)

    Reply
  12. kolya_tlt

    (8) верно

    Reply
  13. frogo

    (11) передавать-то можно почти все. Главное, чтобы в конечном итоге «это» можно было сериализовать/десериализовать. Описывать все варианты — можно сильно устать 🙂

    А вообще — обмены с использованием web-сервисов или http-сервисов — очень удобная штука. Работают быстро, связать таким образом можно различные системы, главное чтобы они все поддерживали данные сервисы.

    Reply
  14. lvictor58

    Но насколько я понимаю механику процесса: для добавления нового вэб-сервиса надо снимать с поддержки конфигурацию базы данных. А нельзя ли этот механизм добавлять с помощью расширений или внешних обработок?

    Никто не вдавался в такие эксперименты?

    Я у себя на работе уже наловчился с помощью внешних обработок запускать регламентные задания по обмену данными по ФТП. Может и не так быстро, но все на внешних ресурсах, без кромсания типовой конфы. Было бы интересно что нибудь подобное на вэб-сервисах залабать.

    Reply
  15. Bene_Valete

    (14) Публиковала веб-сервис из расширения, все прекрасно работает) Также не хотелось из-за него самого снимать конфигурацию с поддержки. Вначале смутило, что он не появился в списке публикации и не появился в файле default.vrd, но оказалось что это нормальная ситуация, главное поставить галочку «Публиковать веб-сервисы расширений по умолчанию». При желании или для себя, чтобы не путаться, можно вписать руками в файл default.vrd.

    Reply
  16. ice-net

    (14) А чем плохо включать возможность редактирования конфигурации и добавлять новые объекты не изменяя существующих?

    Reply
  17. ellavs

    (14) вовсю пользуемся расширениями для добавления сервисов (правда мы отказались от веб-сервиса в пользу HTTP-сервиса, как более простого и быстрого в разработке). У нас несколько веб-проектов, а также 1С баз так взаимодействуют друг с другом и обмениваются данными. Пример, веб-приложение «Личный кабинет студента» — показывает данные из 1С:Университет, получая их через HTTP-сервис, добавленный в конфигурацию через расширение.

    Reply
  18. zabaluev

    Web сервисы неудобны и сложны, надо все описывать и настраивать. Куда проще и лучше в использовании http сервисы. Делаешь простой get запрос. Получаешь любые данные, даже произвольные массивы и таблицы значений.

    Вот 15 минутный видеоурок, по которому можно самому разобраться. https://youtu.be/tCZjGLtUdE8

    Reply
  19. rukalico

    (18) У каждой технологии есть свои плюсы и минусы.

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

    ХТТП сервисы просты и легковесны, но тема АПИ в них теряется. Вот это все таки минус.

    Reply
  20. kuzyara

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

    # #
    # #
    #####
    ### #
    #####
    Reply
  21. dsdred

    Прям как телепорт на 5 лет назад. Спасибо вспомнил молодость былую…

    Почему не OData или HTTP сервис?

    Reply
  22. rukalico

    (21) А причем здесь ОДата.. вот любят все ее упоминать не к месту.

    Как только нужно сделать чтото сложное, сложные запросы, сложные условия, то Одата идет лесом.

    А в ХТТП вы не получите ХДТО функциональность.

    Reply
  23. dsdred

    (22)

    А причем здесь ОДата.. вот любят все ее упоминать не к месту.

    Как только нужно сделать чтото сложное, сложные запросы, сложные условия, то Одата идет лесом.

    Я правильно понимаю, что Вы считаете свой пример сложным для ОДата?

    Я лишь к тому, что обычно демонстрируют примеры под которые годится ОДата и выглядит это как стрельба из базуки по мухам…

    А в ХТТП вы не получите ХДТО функциональность.

    В чем трагедия?

    Reply
  24. rukalico

    (23) Пример примеру рознь.

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

    Считывать порции тоже не получается.. Как организовать сценарий прочитать только изменившееся..

    По поводу трагедии ХДТО.. имеюю ввиду, что пропадает возможность получить схеме ХМЛ. А дальше кому как это трагедия. Не ну сам то я тоже ХТТП сервисы люблю. Но всеже.

    Reply
  25. dsdred

    (24)

    Я просто плюсов от ОДаты не видел ни разу.

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

    А для сложных вещей HTTP-сервис + JSON(ну или xml)

    Считывать порции тоже не получается.. Как организовать сценарий прочитать только изменившееся..

    Честно говоря не пробовал работать с планами обмена по OData, но по идее такая возможность есть.

    Планы обмена и OData

    А порции по OData в принципе можно организовать. https://infostart.ru/public/893304/

    Reply
  26. Yashazz

    1. Согласен насчёт ХТТП-обмена и не понимаю, что мешает прочитать xsd-схему и перекинуть хмл-файлом средствами отдельного метода того же рестового обмена.

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

    3. Описаны простейшие действия — а популярности у публикации, будто сакральные секреты открылись.

    Reply
  27. dsdred

    (14)

    Но насколько я понимаю механику процесса: для добавления нового вэб-сервиса надо снимать с поддержки конфигурацию базы данных. А нельзя ли этот механизм добавлять с помощью расширений или внешних обработок?

    Вот вам прям статья с примером http-сервиса в расширении HTTP Сервисы: Путь к своему сервису. Часть 1 от 15.07.2018

    Я у себя на работе уже наловчился с помощью внешних обработок запускать регламентные задания по обмену данными по ФТП. Может и не так быстро, но все на внешних ресурсах, без кромсания типовой конфы.

    Я так понимаю Вы не используете типовые механизмы (БСП:Дополнительные отчеты и обработки) позволяющие это сделать?

    Вот статья и по этим типовым механизмам БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному

    П.С. Все есть, надо просто читать ;))

    Reply
  28. RocKeR_13

    (16) Например увеличением времени на обновление, так как при включенном редактировании при обновлении происходит, если не ошибаюсь, сравнение

    1) старой основной конфигурации со старой конфигурацией поставщика

    2) старой конфигурации поставщика с новой конфигурацией поставщика

    3) старой основной конфигурации с новой конфигурацией поставщика

    Например, для файловой Бухни 3.0 время на обновление увеличивается в разы, а по сути дважды измененных объектов у нас и не будет. А уж если некоторый «профессионал» сразу всем объектам поставит режим поддержки «Редактируется с сохранением поддержки»…)))

    Reply
  29. vkozak

    Спасибо, что описали все доступно и наглядно продемонстрировали.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *