Ошибка wsdl должен содержать элемент definitions

Пытаюсь создать синхронизацию с мобильным приложением (1С)

Адрес = «http://192.168.1.92/pqt/ws/ws1.1cws?wsd1»;;

Попытка

    Определения = Новый WSОпределения(Адрес,»guest»,»gfhjkm»);

Исключение

    Сообщить(ОписаниеОшибки(),СтатусСообщения.Обычное); Возврат;

КонецПопытки;

Ошибка: «Ошибка при вызове конструктора (WSОпределения): WSDL должен содержать элемент definitions: Неверный формат

Если выходить с браузера, то:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>;

<soap:Body>

  <soap:Fault>

   <faultcode>soap:Client</faultcode>

    <faultstring>

     Несоответствие количества параметров операции веб-сервиса и процедуры-обработчика {http://localhost/ws1}:ВебОбмен:ВыполнитьОбмен()

    </faultstring>

   <detail/>

  </soap:Fault>

</soap:Body>

</soap:Envelope>

<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='

Related Posts

  • Получение логина и пароля техподдержки 1С из базы
  • Класс для вывода отчета в ExcelКласс для вывода отчета в Excel
  • Счет-фактура для УПП
  • Библиотека классов для создания внешней компоненты 1С на C#
  • Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
  • Прайс-лист с артикулом в отдельной колонке

12 Comments

  1. Я правильно понимаю, что некоторые моменты в этой статье для 8.2 неактуальны, т.к. 1cws более напрямую не публикуется как файл, а используется vrd?

    Reply

  2. (2) я работал на 8.2 с веб-сервисами и это именно по 8.2, хотя не исключаю что в последних релизах 8.2 чего-то поменяли. Уже год не ковыряю веб-сервисы, встроенные в 1с, все могло измениться…

    Reply

  3. (4) твою статью чисто визуально помню (из-за написания с украинским оформлением). а что именно из нее я использовал? Честно говоря, уже давно писалось.

    При беглом взгляде заимствований не вспомнил. Если укажешь на места, расставлю ссылки.

    Reply

  4. (6) жесть.

    и что нужно сделать? Ссылку на твою статью или картинку заменить?

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

    Смысл наезда?

    Я понимаю, если бы что-то из статьи было взято. А так просто скриншот, который лень было самому готовить, но который делается в любой конфе за 2 минуты?

    Если вопрос принципиальный, я сделаю новый шот.

    Reply

  5. (7) Ссылку на мою статью так как она была использована при написании твоего материала.

    Фиксин, это не наезд, это просьба соблюдать приличия и лицензионные ограничения GPL.

    Reply

  6. (8) я не вижу в этой статье материалов, кроме рисунка.

    Мне проще заменить скриншот. ок, заменю скриншот. Дай два дня.

    Считаю твой наезд весьма глупым и к GPL не относящимся, но это мое ИМХО.

    Я расцениваю это как припадок копирастии.

    в общем поправил, картинка эта:

    Когда пройдет модерация, ваша душенька может быть спокойна.

    Reply

  7. Вопиющее нарушение прав GPL, вопиющее! Автору арест, денежный штраф в пользу пострадавшего.

    Reply

  8. Начинающий в мобильных. (версия 1с8.3.10.2561)

    Создал веб сервис на пробном приложении (сервер, файловый вариант, в конфигураторе, настройке — «Персональный компьютер»), опубликовал через Апач 2.4 .

    С другого приложения (в конфигураторе настройка — «Мобильное устройство») пытаюсь подключиться к сервису.

    Выдает ошибку : «{ОбщаяКоманда.ОбменВНСиКНС.МодульКоманды(17)}: Ошибка при вызове конструктора (WSОпределения)

    Определения = Новый WSОпределения(Адрес,»autoobmen»,»autoobmen»,,);

    по причине:

    WSDL должен содержать элемент definitions

    по причине:

    Неверный формат. »

    Не могу понять почему требуется » элемент definitions» ? Версии сервера и мобильного приложений одинаковые . В созданном на сервере (при публикации) .vrd файле этот элемент отсутствует !

    Подскажите пожалуйста, в чем затык ! Прилагаю фрагмент вызова сервиса

    Reply

Leave a Comment

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

Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса

Публикация веб-сервиса — это процесс настройки веб-сервера (Apache или IIS) на работу совместно с Платформой 1С. То есть, после публикации, ваш веб-сервер станет посредником между клиентом веб-сервисов и базой 1С. При этом веб-сервер, а точнее менеджер сервисов 1с, запущенный в процессе веб-сервера, будет заниматься слежением за соединениями с информационной базой, приемом запросов от клиентов, поддержкой WSDL описания, сериализацией сообщений, реализацией протоколов SOAP.

Обязательным условием для   публикации является наличие установленного веб-сервера и установленные модули расширения веб-сервера. Модули расширения веб-сервера устанавливаются из инсталлятора платформы 1С. Веб-сервер Apache можно скачать по ссылке:  httpd-2.2.25-win32-x86-openssl-0.9.8y.msi или найти другую версию на странице загрузки. Про установку Apache довольно много статей, думаю установить ее не составит проблем.

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

Публикацию веб-сервисов можно выполнять и на ОС Linux и на ОС Windows. Я работал пока что только с Windows, потому расскажу про нее.

Публикация на ОС Windows

Если для публикации веб-сервиса на Linux не обойтись без командной строки(8.3 пока еще бета), то для публикации на Windows достаточно конфигуратора 1С.
Откройте конфигуратор и зайдите в меню «Администрирование — Публикация на веб-сервере…».

Публикация и тестирование веб-сервисов 1с на Apache

Появится окно «Публикация на веб-сервере».

Публикация и тестирование веб-сервисов 1с на Apache

Появится окно «Публикация на веб-сервере».

Публикация и тестирование веб-сервисов 1с на Apache

«Имя» — это имя публикации. Если бы можно было представить «сайт» 1С как папку на вашем веб сервере, то путь к этой папке в браузере как раз бы определялся как имя сервера / имя публикации. То есть ссылка на веб-клиент выглядит так:

http://имя сервера/имя публикации

Примечание: при использовании в качестве веб-сервера Apache все ссылки веб-клиента будут регистрозависимыми. То есть в данном случае при переходе по ссылке

http://имя сервера/forCodeNotesBlog

браузер не найдет такой страницы.

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


«Веб-сервер» — это список выбора веб-сервера из установленных на данный момент веб-серверов на текущей машине. Если вы установите веб-сервер Apache то он появится в этом поле автоматически.


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

«Публиковать тонкий клиент и веб-клиент» — указывает можно ли подключиться к базе в тонком клиенте и веб-клиенте. Простыми словами, если галочка снята то интерфейс конфигурации не будет отображен и работать с базой будет невозможно. Это может быть полезно если конфигурация выступает только как поставщик веб-сервисов.

«Публиковать Web-сервисы» — указывает, будут ли опубликованы ваши веб-сервисы.

После заполнения всех полей нажмите кнопку «Опубликовать» и веб-сервис будет опубликован.

Теперь можно воспользоваться свои веб-сервисом. После публикации я для начала смотрю формируется ли описание WSDL. Чтобы его получить достаточно браузера. Ссылка на описание WSDL формируется по следующему принципу:

http://имя сервера/имя публикации/ws/имя веб-сервиса?wsdl

То есть в нашем случае ссылка будет выглядеть так:

http://192.168.1.100/ForCodeNotesBlog/ws/WebService?wsdl

Если WSDL сформировался, то это хороший знак). 

Но сейчас мы рассмотрим более качественный продукт, чем самописная обработка — это кросстлатформенная система для работы с веб-сервисами soapUI(http://www.soapui.org).

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду «New soapUI project».

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду «New soapUI project».

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Появится окно ввода ссылки или файла с описанием веб-сервиса.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Нажмите ОК и в дереве проектов вы увидите свой веб-сервис. 

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку «Submit request to specified endpoint URl», изображенное в виде зеленой стрелочки.
После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.

Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами — ввоз данных в поля, вместо редактирования XML.

Если в вашей базе есть хотя бы один пользователь, то перед выполнением веб-операции вам нужно ввести его учетные данные. Для ввода учетных данных необходимо нажать кнопку «Aut» под левым окном.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку «Submit request to specified endpoint URl», изображенное в виде зеленой стрелочки.
После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.

Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами — ввоз данных в поля, вместо редактирования XML.

Если в вашей базе есть хотя бы один пользователь, то перед выполнением веб-операции вам нужно ввести его учетные данные. Для ввода учетных данных необходимо нажать кнопку «Aut» под левым окном.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

В поле «Authorisation Type» необходимо указать «Preemptive».

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.

Публикация и тестирование веб-сервисов 1с на Apache - soapUI

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

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

На приведенных выше изображениях, вы видите результат исполнения, описанной в других статьях, операции Plus2. Мы видим, что на выполнение операции ушло 1243 миллисекунд, что довольно много на операцию сложения. Объем переданных данных — 316 байт.

Примечание: для тестирования веб-сервисов у разработчиков soapUI есть еще одно бесплатное приложение — loadUI.

Допустим у вас есть веб-операция, имеющая операнд тип datetime. При выполнении обязательно указание даты и вы не можете указать пустое значение. Дата указывается в определенном формате:

ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм

либо

ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс

либо

ГГГГ-ММ-ДДTЧЧ:мм:СС

Пример:

2012-09-14T00:00:00.000+02:00

Возможно есть еще форматы записи для поля типа datetime. Причем формат ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм содержит в себе данные о часовом поясе отправителя запроса. Если веб-операция на 1С получает такое значение, то она считает это время местным временем отправителя и преобразует в свое местное время. Данный пример, а так же как указать значение null более подробно описаны в статье 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса.
Тип число тоже требует обязательного указания значения — хотя бы нуля.

Автор Сообщение

[Post New]15/11/2017 22:18:21

    

Тема: Re:Интеграция с 1С

[Up]

Андрей Любимов

Зарегистрирован: 17/10/2017 16:58:56
Сообщений: 12

Оффлайн


Мне просто интересно. На кой в IncomingOperation элементы consignment и vetCertificate имеют списочный тип, ЕСЛИ ТУДА ВСЕ РАВНО МОЖНО ЗАПИХАТЬ ТОЛЬКО ПО ОДНОМУ ЭЛЕМЕНТУ?


[Post New]16/11/2017 03:44:12

    

Тема: Re:Интеграция с 1С

[Up]

anig99

Зарегистрирован: 21/10/2016 20:05:29
Сообщений: 143

Оффлайн

anig99 wrote:Если у кого возникнет такая проблема, то на платформе 8.2.19.121 возникает ошибка

Определения = Новый WSОпределения(«http://api.vetrf.ru/schema/platform/services/2.0-RC-last/ams-mercury-g2b.service_v2.0_pilot.wsdl»);

по причине:

При создании описания сервиса произошла ошибка.

по причине:

Неправильный путь к файлу ‘ApplicationManagementService_v1.1.wsdl’

На 8.3 такой ошибки нет. Попытаюсь решить. Если получится, то сообщу.

Решил. http://api.vetrf.ru/schema/platform/services/2.0-RC-last/ams-mercury-g2b.service_v2.0_pilot.wsdl вообще не нужен. Вместо него достаточно ApplicationManagementService_v1.1.wsdl программно или как wsdl ссылку в конфигурацию. Спасибо mevgenym за его код https://github.com/mevgenym/1c_vetis.api

Для получения Фабрики нужно использовать такой код:

Не понятно как влияет, но ЗапросWeb = Новый HTTPЗапрос(«platform/services/ApplicationManagementService»); использовал ЗапросWeb = Новый HTTPЗапрос(«platform/services/2.0/ApplicationManagementService»); Вроде работает и так, и так.

serviceID поменять с mercury-g2b.service на mercury-g2b.service:2.0


[Post New]16/11/2017 11:22:12

    

Тема: Re:Интеграция с 1С

[Up]

nifor

[Avatar]

Зарегистрирован: 21/04/2017 04:01:50
Сообщений: 150

Оффлайн


Коллеги добрый день !!! Подскажите у кого то посредством 1С получилось заполнить атрибуты id и for (api 2.0) ? При заполнении строковым типом ругается на неверный формат при отправке запроса !!!

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 16/11/2017 11:22:29


[Post New]16/11/2017 19:44:13

    

Тема: Re:Интеграция с 1С

[Up]

vvche

Зарегистрирован: 13/06/2016 19:39:45
Сообщений: 45

Оффлайн

nifor wrote:Коллеги добрый день !!! Подскажите у кого то посредством 1С получилось заполнить атрибуты id и for (api 2.0) ? При заполнении строковым типом ругается на неверный формат при отправке запроса !!!

Подчеркивание впереди прицепите. Там базовый тип «NCName», а он должен содержать первым символом или букву или подчеркивание.


[Post New]16/11/2017 23:55:32

    

Тема: Re:Интеграция с 1С

[Up]

vvche

Зарегистрирован: 13/06/2016 19:39:45
Сообщений: 45

Оффлайн


Вот не пойму, в чем косяк.

Формирую ProcessIncomingConsignmentOperation в версии 2,0.

При сохранении XML с помощью ФабрикиXDTO «перепрыгивают» реквизиты.

(ФабрикаXDTO создается по рекомендациям, выложенным здесь на форуме, та же схема с 1,4 отрабатывала без проблем)

И вот эти issueDate и issueNumber, относящиеся к vetCertificate, почему-то уезжают вниз, хотя должны идти следом за issueSeries.

В итоге пакет шлюзом не принимается, выдает отлуп «Format validation failed due to XML Schema rules: Элемент ‘issueDate’ не предусмотрен.» — я так понимаю, что порядок элементов ему важен.

В SOAPui элементы на место поставишь — запрос проходит.

Грешил на релиз платформы, но на 8.3.8 , 8.3.9 , 8.3.10 результат одинаков.

1С, что-ли, не берет во внимание тег <xs:sequence> в XSD-схеме?..


[Post New]17/11/2017 04:55:36

    

Тема: Re:Интеграция с 1С

[Up]

nifor

[Avatar]

Зарегистрирован: 21/04/2017 04:01:50
Сообщений: 150

Оффлайн

vvche wrote:

nifor wrote:Коллеги добрый день !!! Подскажите у кого то посредством 1С получилось заполнить атрибуты id и for (api 2.0) ? При заполнении строковым типом ругается на неверный формат при отправке запроса !!!

Подчеркивание впереди прицепите. Там базовый тип «NCName», а он должен содержать первым символом или букву или подчеркивание.

Спасибо огромное !!!


[Post New]17/11/2017 08:51:48

    

Тема: Re:Интеграция с 1С

[Up]

vvche

Зарегистрирован: 13/06/2016 19:39:45
Сообщений: 45

Оффлайн

vvche wrote:Вот не пойму, в чем косяк.

Формирую ProcessIncomingConsignmentOperation в версии 2,0.

При сохранении XML с помощью ФабрикиXDTO «перепрыгивают» реквизиты.

Сам спросил, сам ответил

При импорте схемы document_v2.0.xsd 1С выставила в типе объекта VetDocument свойство «Упорядоченный» в «Ложь», отсюда и косяк.

Причем у базового типа Document все нормально.


[Post New]17/11/2017 13:50:10

    

Тема: Re:Интеграция с 1С

[Up]

ashugaenko

Зарегистрирован: 28/02/2017 11:51:59
Сообщений: 8

Оффлайн


.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 17/11/2017 16:38:37


[Post New]20/11/2017 14:36:33

    

Тема: Re:Интеграция с 1С

[Up]

mevgenym

Зарегистрирован: 19/05/2017 14:03:42
Сообщений: 312

Оффлайн


Появилась обратная «совместимость» с 1.4 по упаковкам (смотрел через getStockEntryChangesList):

— непонятно по каким соображениям назначился уровень и он разный

— почти все без количества и количество так и не соответствует 1.4

https://github.com/mevgenym/1c_vetis.api_v1.1

https://github.com/mevgenym/1c_vetis.api


[Post New]21/11/2017 17:00:15

    

Тема: Re:Интеграция с 1С

[Up]

FCool

Зарегистрирован: 21/11/2017 16:50:37
Сообщений: 3

Оффлайн


Добрый день.

Вопрос по API 2

Пытаюсь создать предприятие методом ModifyEnterpriseOperation

Определение = Новый WSОпределения(«http://api.vetrf.ru/schema/platform/services/2.0-RC-last/ams-mercury-g2b.service_v2.0_pilot.wsdl»);

ПодключениеОбмена = Новый WSПрокси(Определение,»http://api.vetrf.ru/schema/cdm/application/service»,»ApplicationManagementServiceBindingQSService»,»ApplicationManagementServiceBindingQSPort»,,, Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено ));

ПодключениеОбмена.Пользователь = «*************»;

ПодключениеОбмена.Пароль = «************»;

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»));

modifyEnterpriseRequest = Фабрика.Создать(Фабрика.Тип(«http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2», «ModifyEnterpriseRequest»));;

ApplicationDataWrapper.Добавить(ФормаXML.Элемент,»http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2″, «ModifyEnterpriseRequest», modifyEnterpriseRequest);

Application.data = ApplicationDataWrapper;

Application.serviceId = «mercury-g2b.service:2.0»;

Application.issuerId = «******************»;

Application.issueDate = ТекущаяДата();

SubmitApplicationRequest.apiKey = «***********************»;

SubmitApplicationRequest.application = Application;

Результат = ПодключениеОбмена.submitApplicationRequest(SubmitApplicationRequest.apiKey, SubmitApplicationRequest.application);

Вылезает такая ошибка:

Несоответствие типов XDTO:

Тип ‘{http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}ModifyEnterpriseRequest’ не найден

Тип принадлежит пакету, отсутствующему в фабрике типов XDTO

Может кто подскажет, что я делаю не так ?


[Post New]21/11/2017 17:08:43

    

Тема: Интеграция с 1С

[Up]

RomanWBD

[Avatar]

Зарегистрирован: 12/05/2016 11:36:01
Сообщений: 23

Оффлайн


Все делаете так, а вот шлюз API 2.0 с тестовым Меркурием явно работает не так. Сейчас по этому сервису в ответе всегда возвращается ошибка по любому сервису из ams-mercury-g2b.service_v2.0_pilot.wsdl.


[Post New]21/11/2017 17:10:32

    

Тема: Интеграция с 1С

[Up]

FCool

Зарегистрирован: 21/11/2017 16:50:37
Сообщений: 3

Оффлайн

RomanWBD wrote:Все делаете так, а вот шлюз API 2.0 с тестовым Меркурием явно работает не так. Сейчас по этому сервису в ответе всегда возвращается ошибка по любому сервису из ams-mercury-g2b.service_v2.0_pilot.wsdl.

Использовать API v1 ?


[Post New]21/11/2017 17:11:46

    

Тема: Re:Интеграция с 1С

[Up]

Андрей Любимов

Зарегистрирован: 17/10/2017 16:58:56
Сообщений: 12

Оффлайн

FCool wrote:

Добрый день.

Результат = ПодключениеОбмена.submitApplicationRequest(SubmitApplicationRequest.apiKey, SubmitApplicationRequest.application);

Вылезает такая ошибка:

Несоответствие типов XDTO:

Тип ‘{http://api.vetrf.ru/schema/cdm/mercury/g2b/applications/v2}ModifyEnterpriseRequest’ не найден

Тип принадлежит пакету, отсутствующему в фабрике типов XDTO

Здравствуй! Операцию не получится сделать через прокси. У них в WS определении нет типов, связанных с операциями. Запрос нужно делать через HTTP.

Тут примерно описано: http://vetrf.ru/vetrf-forum/posts/listByUser/9167.page


[Post New]21/11/2017 17:11:55

    

Тема: Интеграция с 1С

[Up]

RomanWBD

[Avatar]

Зарегистрирован: 12/05/2016 11:36:01
Сообщений: 23

Оффлайн


1.4 вроде работает, проверял как раз после того как 2.0 перестал отправлять нормальные результаты.


[Post New]21/11/2017 17:26:35

    

Тема: Интеграция с 1С

[Up]

GusVal

Зарегистрирован: 10/11/2017 12:14:53
Сообщений: 176

Оффлайн


А API 2.0 насколько тестовое?

RomanWBD wrote:Все делаете так, а вот шлюз API 2.0 с тестовым Меркурием явно работает не так. Сейчас по этому сервису в ответе всегда возвращается ошибка по любому сервису из ams-mercury-g2b.service_v2.0_pilot.wsdl.

Вообще-то им бы следовало об этом большими буквами да на главной странице форума…


The XML document has its top-level elements in the namespace http://schemas.xmlsoap.org/wsdl/ (WSDL), so that it needs to be validated against the XML Schema for WSDL.

You will also need the «schema of schemas» (XML Schema for XML Schema) in scope, as an XML Schema is nested inside wsdl:types, to make sure that this part also gets validated properly.

The schema referenced in the question (for urn:com/IMIC) is relevant for the actual SOAP data (as it is imported by the nested schema), but not for the WSDL document, as far as I understand it. The apparent complexity comes from the two levels of validation:

  • on the one hand SOAP data against WSDL (including against the nested XML Schema)
  • on the other hand the WSDL document validated against the «meta-schema» (the topic of this question).

It is important to reason only on one level at a time.

In order to validate on xmlvalidation.com as well as most XML Schema validation engines, you need to supply the schema locations with an xsi:schemaLocation attribute. This attribute takes a list of URLs: a schema namespace, its location (for WSDL it is the same as the namespace), another schema namespace, its location, etc. Since you need two schemas, this makes it four URLs, like so:

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://com.my.company/IFBTCIBPSI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="IFBTCIBPSI" targetNamespace="http://com.my.company/IFBTCIBPSI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ http://schemas.xmlsoap.org/wsdl/ http://www.w3.org/2001/XMLSchema https://www.w3.org/2001/XMLSchema.xsd" > <!-- rest of document --> </wsdl:definitions/> 

Note that xmlvalidation.com seems to be missing two files (XMLSchema.dtd and datatypes.dtd) that it asks for. If it does, you can just copy and paste from these locations:

  • https://www.w3.org/2001/XMLSchema.dtd
  • https://www.w3.org/2001/datatypes.dtd

On my side, the validation seems to then succeed (no errors found). Also oXygen does not complain.

В последнее время возникла проблема склонения должности с помощью веб-сервиса из 1С ERP. Релиз 2.2.2.199 Может это быть связано что релиз от февраля 2017? Подписку пока не покупали хватало 1000 запросов в день. Каким образом можно исправить данную ошибку ? Ошибка при вызове сервиса склонения. Обратитесь к администратору. Техническая информация: {ОбщийМодуль.СклонениеПредставленийОбъектов.Модуль}: Ошибка при вызове метода контекста (GetXml): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {: Ошибка разбора SOAP сообщения: неверная версия сообщения. {ОбщийМодуль.ОбщегоНазначения.Модуль(5505)}: Ошибка при вызове конструктора (WSОпределения): WSDL должен содержать элемент definitions: Неверный формат. UPD. Проверил из типовой Бухгалтерии Та же самая ошибка.

Нет такой больше страницы

морфер умер. вот вам и минус сторонник вебсервисов — узнаешь о проблемах когда они пришли к тебе домой…

Он не умер, просто формат поменял и стал платным )))

А когда он стал платным ?

Боюсь даже представить в скольких договорах сейчас неправильное склонение.

Сфигали он умер? Работает. Только WSDL у него оторвали

ну наверно в трех договорах.

Типовой механизм 1С ники получается не поменяли ? Как можно исправить данную проблему? Кто нибудь использует веб-сервис ?

Я думаю, что исправят в обновлениях. А так просто через HTTPСоединение можно дёргать.

Тэги:

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

The XML document has its top-level elements in the namespace http://schemas.xmlsoap.org/wsdl/ (WSDL), so that it needs to be validated against the XML Schema for WSDL.

You will also need the «schema of schemas» (XML Schema for XML Schema) in scope, as an XML Schema is nested inside wsdl:types, to make sure that this part also gets validated properly.

The schema referenced in the question (for urn:com/IMIC) is relevant for the actual SOAP data (as it is imported by the nested schema), but not for the WSDL document, as far as I understand it. The apparent complexity comes from the two levels of validation:

  • on the one hand SOAP data against WSDL (including against the nested XML Schema)
  • on the other hand the WSDL document validated against the «meta-schema» (the topic of this question).

It is important to reason only on one level at a time.

In order to validate on xmlvalidation.com as well as most XML Schema validation engines, you need to supply the schema locations with an xsi:schemaLocation attribute. This attribute takes a list of URLs: a schema namespace, its location (for WSDL it is the same as the namespace), another schema namespace, its location, etc. Since you need two schemas, this makes it four URLs, like so:

<wsdl:definitions
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:tns="http://com.my.company/IFBTCIBPSI" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  name="IFBTCIBPSI" 
  targetNamespace="http://com.my.company/IFBTCIBPSI"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/
                      http://schemas.xmlsoap.org/wsdl/
                      http://www.w3.org/2001/XMLSchema
                      https://www.w3.org/2001/XMLSchema.xsd" >
    <!-- rest of document -->
</wsdl:definitions/>

Note that xmlvalidation.com seems to be missing two files (XMLSchema.dtd and datatypes.dtd) that it asks for. If it does, you can just copy and paste from these locations:

  • https://www.w3.org/2001/XMLSchema.dtd
  • https://www.w3.org/2001/datatypes.dtd

On my side, the validation seems to then succeed (no errors found). Also oXygen does not complain.

Логин у вас кириллический?

Нет, латиница.
Хотя разницы нет, даже при вводе пустого логина и пароля выходит эта ошибка.

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

Смотрите внимательно чтобы при публикации регистр совпадал, это пипец как кретично в свое время этим наелись! Если кластер с большой буквы, база, или имя юзверя, то так же и пишите и обращайтесь при публикации и запросах

В качестве обхода можно сделать следующее:

Сохранить wsdl схему в текстовый файл из браузера
Загрузить в SOAPui схему из текстового файла, а не по ссылке

После этого можно как обычно работать с веб-сервисом из SOAPui

В последнее время возникла проблема склонения должности с помощью веб-сервиса из 1С ERP. Релиз 2.2.2.199 Может это быть связано что релиз от февраля 2017? Подписку пока не покупали хватало 1000 запросов в день. Каким образом можно исправить данную ошибку ? Ошибка при вызове сервиса склонения. Обратитесь к администратору. Техническая информация: {ОбщийМодуль.СклонениеПредставленийОбъектов.Модуль}: Ошибка при вызове метода контекста (GetXml): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {: Ошибка разбора SOAP сообщения: неверная версия сообщения. {ОбщийМодуль.ОбщегоНазначения.Модуль(5505)}: Ошибка при вызове конструктора (WSОпределения): WSDL должен содержать элемент definitions: Неверный формат. UPD. Проверил из типовой Бухгалтерии Та же самая ошибка.

Нет такой больше страницы

морфер умер. вот вам и минус сторонник вебсервисов — узнаешь о проблемах когда они пришли к тебе домой…

Он не умер, просто формат поменял и стал платным )))

А когда он стал платным ?

Боюсь даже представить в скольких договорах сейчас неправильное склонение.

Сфигали он умер? Работает. Только WSDL у него оторвали

ну наверно в трех договорах.

Типовой механизм 1С ники получается не поменяли ? Как можно исправить данную проблему? Кто нибудь использует веб-сервис ?

Я думаю, что исправят в обновлениях. А так просто через HTTPСоединение можно дёргать.

Тэги:

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

Понравилась статья? Поделить с друзьями:
  • Ошибка ws 43709 3 ps4
  • Ошибка x64 при установке игры
  • Ошибка ws 43691 3 на ps4
  • Ошибка x3daudio1 7 dll скачать
  • Ошибка ws 37469 9 на ps4