8.х Взаимодействие с внешним Web-сервисом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем smaximaa, 19 янв 2016.

  1. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Делаю интеграцию 1С с внешней информационной системой, и для этого в конфигураторе использую объект WS-ссылка, создаю её программно. Для работы с системой требуется авторизация в ней, и помимо ввода логина и пароля нужно ещё вводить другие данные. Вопрос, как передавать в систему эту данные(планирую передавать их через поля ввода на форме)?
    Сейчас в коде только это:

    Код:
    ОпределенияПодсистемаОбработкиЗаявок = Новый WSОпределения(
                                                            "http://api.vetrf.ru/schema/platform/services/ApplicationManagementService_v1.2.wsdl",
                                                            ЭлементыФормы.ИмяПользователя.Значение,
                                                            ЭлементыФормы.Пароль.Значение);
    ПроксиПодсистемаОбработкиЗаявок = Новый WSПрокси(
                                                    ОпределенияПодсистемаОбработкиЗаявок,
                                                    "http://api.vetrf.ru/schema/cdm/application/service",
                                                    "ApplicationManagementServiceBindingQSService",
                                                    "ApplicationManagementServiceBindingQSPort");
    И то, при исполнении кода выкидывает из режима предприятия
  2. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    ВСО.png ВСО.png
    Ну незнаю!
    У меня ваш код работает нормально, если не задавать логин и пароль =)
    --- Объединение сообщений, 19 янв 2016 ---
    А доп.параметры - как хотите, так и задавайте.
    Можно вводом с клавиатуры, можно их хранить где-то в базе, и получать программно, если веб-сервис планируется запускать автоматически, без участия пользователя
  3. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    хм, а вы в самом конфигураторе делаете или через внешнюю обработку, и какая версия платформы у вас?
  4. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    У меня была Бухгалтерия 2.0 открыта под платформой 8.3.7.1845
    Создал внешнюю обработку и прописал в ней ваш код, только без пароля и логина, поскольку через браузер спокойно заходит на
    http://api.vetrf.ru/schema/platform/services/ApplicationManagementService_v1.2.wsdl
    не запрашивая учетной информации
  5. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    попробовал с пустым логином и паролем, всё равно ошибка и выкидывает
  6. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    У нас тут у многих слово "ошибка" без конкретики вызывает бурные эмоции.
    Напишите текст ошибки, вашу версию платформы, скриншот приложите
    http://api.vetrf.ru/schema/platform/services/ApplicationManagementService_v1.2.wsdl
    По этому адресу можете зайти через браузер?
    Появляется WSDL-описание сервиса? Или файлик wsdl скачивается?
  7. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Версия платформы - 1С:Предприятие 8.3 (8.3.6.2390).
    А ошибка вот такая(возникает после закрытия в режиме предприятие, перед этим ещё быстро мелькает окошко с сообщением "Запись дампа" и всё):
    Безымянный.png
    Файл скачивается.
    Последнее редактирование: 19 янв 2016
  8. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    1. Что за база? Какая конфигурация? Режим работы файловый или серверный? Обычные или управляемые формы?
    2. После закрытия чего возникает ошибка?
  9. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    Попробуй на других версиях платформы.
  10. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    1. КА демо, но пробовал на пустой конфигурации и ничего не менятся. Файловый. Обычные формы.
    2. Алгоритм возникновения ошибки такой: при нажатии на кнопку где находится код возникает окошко с сообщением "Запись дампа" и быстро закрывается, сама программа закрывается и появляется ошибка как на скриншоте.
  11. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    У меня тоже вылетает, на первой строчке кода, если запускать под версией 8.3.6.2390.
    Попробуйте обновить платформу
    smaximaa нравится это.
  12. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    В 8.3.4.496, но без записи в дамп, ошибка: (Ошибка при вызове конструктора (WSОпределения)), пробовал без логина/пароля.

    Visual Studio - ссылку читает прекрасно, показывает 2 доступных метода
    upload_2016-1-19_17-19-42.png
  13. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Помогло, спасибо!
  14. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Возвращаюсь) При исполнении кода возникает следующая ошибка:

    {Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (submitApplicationRequest)
    Отправка = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest(apiKey, application);
    по причине:
    Ошибка вызова операции сервиса: {http://api.vetrf.ru/schema/cdm/appl...ceBindingQSService:submitApplicationRequest()
    по причине:
    Неизвестная ошибка. Ошибка работы с Интернет: Failure when receiving data from the peer
    по причине:
    Ошибка работы с Интернет: Failure when receiving data from the peer

    Код:
    Код:
        //Создаём определения веб-сервиса по WSDL-описанию   
        ОпределенияПодсистемаОбработкиЗаявок = Новый WSОпределения(
                                                            "http://api.vetrf.ru/schema/platform/services/ApplicationManagementService_v1.2.wsdl");
                                                          
        //Создаём прокси для обращения к веб-сервису и получение фабрики XDTO
        ПроксиПодсистемаОбработкиЗаявок = Новый WSПрокси(
                                                    ОпределенияПодсистемаОбработкиЗаявок,
                                                    "http://api.vetrf.ru/schema/cdm/application/service",
                                                    "ApplicationManagementServiceBindingQSService",
                                                    "ApplicationManagementServiceBindingQSPort");   
        Фабрика = ПроксиПодсистемаОбработкиЗаявок.ФабрикаXDTO;
      
        //Передаём логин и пароль для входа в веб-сервис
        //ПроксиПодсистемаОбработкиЗаявок.Пользователь = ИмяПользователя;
        //ПроксиПодсистемаОбработкиЗаявок.Пароль = Пароль;
      
        //Создаём объекты XDTO - параметры вызова веб-сервиса
        SubmitApplicationRequest = Фабрика.Создать(Фабрика.Тип(
                                            "http://api.vetrf.ru/schema/cdm/application/ws-definitions",
                                            "submitApplicationRequest"));
        Application = Фабрика.Создать(Фабрика.Тип(
                                            "http://api.vetrf.ru/schema/cdm/application",
                                            "Application"));
        ApplicationDataWrapper = Фабрика.Создать(Фабрика.Тип(
                                            "http://api.vetrf.ru/schema/cdm/application",
                                            "ApplicationDataWrapper"));
                                      
        //Присваиваем значения свойствам объектам XDTO
        //SubmitApplicationRequest.apiKey = APIKey;
        //SubmitApplicationRequest.application = Application;
        //Application.data = ApplicationDataWrapper;
        //Application.serviceId = ServiceID;
        //Application.issuerId = IssuerID;
        //Application.issueDate = Формат(ТекущаяДата(), "ДФ=гггг-ММ-ддTЧЧ:мм:сс");
        //Сообщить(Формат(ТекущаяДата(), "ДФ=гггг-ММ-ддTЧЧ:мм:сс"));
      
        //Обращаемся к операции веб-сервиса
        Отправка = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest(apiKey, application);
    
    Ошибка появляется и при закоменченных строках
  15. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    А, отладчик чего показывает?
  16. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Вы имеете ввиду какой текст ошибки он приводит или что? Текст я указал.
  17. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Нашёл инфу что в 1с подключаться к внешним веб-сервисам можно только напрямую, а я в инет выхожу через домен, может из за этого проблема? Хоть люди пишут что и так заходят, у всех по разному в общем. Через тот же SoapUI, запрос без проблема отправляется и ответ приходит. Я запутался -Banghead-
  18. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Есть подозрение что отправляю не правильные параметры методу сервиса, но если посмотреть на структуру, то всё правильно должно быть
    Безымянный.png
  19. Andris_1c-pro
    Offline

    Andris_1c-pro Новичок в 1С

    Регистрация:
    12 сен 2014
    Сообщения:
    45
    Симпатии:
    8
    Баллы:
    4
    а типы совпадают?
  20. TopicStarter Overlay
    smaximaa
    Offline

    smaximaa Опытный в 1С

    Регистрация:
    18 ноя 2015
    Сообщения:
    62
    Симпатии:
    0
    Баллы:
    26
    Типы да, иначе бы была ошибка о несоответствии типов.
    Попробовал отправить левые параметры методу, например так:
    Код:
    Отправка = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest(
                                                                        Application.serviceId,
                                                                        Application.issuerId);
    
    И выскочила такая ошибка:
    {Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (submitApplicationRequest)
    Отправка = ПроксиПодсистемаОбработкиЗаявок.submitApplicationRequest(
    по причине:
    Несоответствие типов (параметр номер '2')

Поделиться этой страницей