Пытаюсь создать синхронизацию с мобильным приложением (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
Счет-фактура для УПП
Библиотека классов для создания внешней компоненты 1С на C#
Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
Прайс-лист с артикулом в отдельной колонке
12 Comments
-
-
Я правильно понимаю, что некоторые моменты в этой статье для 8.2 неактуальны, т.к. 1cws более напрямую не публикуется как файл, а используется vrd?
Reply ↓
-
(2) я работал на 8.2 с веб-сервисами и это именно по 8.2, хотя не исключаю что в последних релизах 8.2 чего-то поменяли. Уже год не ковыряю веб-сервисы, встроенные в 1с, все могло измениться…
Reply ↓
-
-
(4) твою статью чисто визуально помню (из-за написания с украинским оформлением). а что именно из нее я использовал? Честно говоря, уже давно писалось.
При беглом взгляде заимствований не вспомнил. Если укажешь на места, расставлю ссылки.
Reply ↓
-
-
(6) жесть.
и что нужно сделать? Ссылку на твою статью или картинку заменить?
по сути, если сделать скриншот с другим названием сервиса, то от этого ничего не меняется.
Смысл наезда?
Я понимаю, если бы что-то из статьи было взято. А так просто скриншот, который лень было самому готовить, но который делается в любой конфе за 2 минуты?
Если вопрос принципиальный, я сделаю новый шот.
Reply ↓
-
(7) Ссылку на мою статью так как она была использована при написании твоего материала.
Фиксин, это не наезд, это просьба соблюдать приличия и лицензионные ограничения GPL.
Reply ↓
-
(8) я не вижу в этой статье материалов, кроме рисунка.
Мне проще заменить скриншот. ок, заменю скриншот. Дай два дня.
Считаю твой наезд весьма глупым и к GPL не относящимся, но это мое ИМХО.
Я расцениваю это как припадок копирастии.
в общем поправил, картинка эта:
Когда пройдет модерация, ваша душенька может быть спокойна.
Reply ↓
-
Вопиющее нарушение прав GPL, вопиющее! Автору арест, денежный штраф в пользу пострадавшего.
Reply ↓
-
-
Начинающий в мобильных. (версия 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С как папку на вашем веб сервере, то путь к этой папке в браузере как раз бы определялся как имя сервера / имя публикации. То есть ссылка на веб-клиент выглядит так:
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).
Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду «New soapUI project».
Появится окно ввода ссылки или файла с описанием веб-сервиса.
Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.
Нажмите ОК и в дереве проектов вы увидите свой веб-сервис.
Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку «Submit request to specified endpoint URl», изображенное в виде зеленой стрелочки.
После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.
Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами — ввоз данных в поля, вместо редактирования XML.
Если в вашей базе есть хотя бы один пользователь, то перед выполнением веб-операции вам нужно ввести его учетные данные. Для ввода учетных данных необходимо нажать кнопку «Aut» под левым окном.
В поле «Authorisation Type» необходимо указать «Preemptive».
И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.
После ввода учетных данных можно выполнить операцию получить результат в правом окне. К сожалению для каждого запроса (Request) необходимо заново вводить учетные данные.
После выполнения веб-операции помимо результата, вам доступные дополнительные сведения, такие как длительность выполнения и объем переданных данных в байтах. Эти данные отображаются в строке состояния текущего окна.
На приведенных выше изображениях, вы видите результат исполнения, описанной в других статьях, операции Plus2. Мы видим, что на выполнение операции ушло 1243 миллисекунд, что довольно много на операцию сложения. Объем переданных данных — 316 байт.
Примечание: для тестирования веб-сервисов у разработчиков soapUI есть еще одно бесплатное приложение — loadUI.
Допустим у вас есть веб-операция, имеющая операнд тип datetime. При выполнении обязательно указание даты и вы не можете указать пустое значение. Дата указывается в определенном формате:
ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС
Пример:
2012-09-14T00:00:00.000+02:00
Возможно есть еще форматы записи для поля типа datetime. Причем формат ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм содержит в себе данные о часовом поясе отправителя запроса. Если веб-операция на 1С получает такое значение, то она считает это время местным временем отправителя и преобразует в свое местное время. Данный пример, а так же как указать значение null более подробно описаны в статье 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса.
Тип число тоже требует обязательного указания значения — хотя бы нуля.
Автор | Сообщение |
---|---|
Тема: Re:Интеграция с 1С |
|
Андрей Любимов
Зарегистрирован: 17/10/2017 16:58:56 Оффлайн |
Мне просто интересно. На кой в IncomingOperation элементы consignment и vetCertificate имеют списочный тип, ЕСЛИ ТУДА ВСЕ РАВНО МОЖНО ЗАПИХАТЬ ТОЛЬКО ПО ОДНОМУ ЭЛЕМЕНТУ? |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
anig99
Зарегистрирован: 21/10/2016 20:05:29 Оффлайн |
Решил. 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 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
nifor
Зарегистрирован: 21/04/2017 04:01:50 Оффлайн |
Коллеги добрый день !!! Подскажите у кого то посредством 1С получилось заполнить атрибуты id и for (api 2.0) ? При заполнении строковым типом ругается на неверный формат при отправке запроса !!! Это сообщение было редактировано 1 раз. Последнее обновление произошло в 16/11/2017 11:22:29 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39:45 Оффлайн |
Подчеркивание впереди прицепите. Там базовый тип «NCName», а он должен содержать первым символом или букву или подчеркивание. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39: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-схеме?.. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
nifor
Зарегистрирован: 21/04/2017 04:01:50 Оффлайн |
Спасибо огромное !!! |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39:45 Оффлайн |
Сам спросил, сам ответил При импорте схемы document_v2.0.xsd 1С выставила в типе объекта VetDocument свойство «Упорядоченный» в «Ложь», отсюда и косяк. Причем у базового типа Document все нормально. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
ashugaenko
Зарегистрирован: 28/02/2017 11:51:59 Оффлайн |
. Это сообщение было редактировано 1 раз. Последнее обновление произошло в 17/11/2017 16:38:37 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн |
Появилась обратная «совместимость» с 1.4 по упаковкам (смотрел через getStockEntryChangesList): — непонятно по каким соображениям назначился уровень и он разный — почти все без количества и количество так и не соответствует 1.4 |
https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api |
|
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
FCool
Зарегистрирован: 21/11/2017 16:50:37 Оффлайн |
Добрый день. Вопрос по 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 Может кто подскажет, что я делаю не так ? |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
RomanWBD
Зарегистрирован: 12/05/2016 11:36:01 Оффлайн |
Все делаете так, а вот шлюз API 2.0 с тестовым Меркурием явно работает не так. Сейчас по этому сервису в ответе всегда возвращается ошибка по любому сервису из ams-mercury-g2b.service_v2.0_pilot.wsdl. |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
FCool
Зарегистрирован: 21/11/2017 16:50:37 Оффлайн |
Использовать API v1 ? |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
Андрей Любимов
Зарегистрирован: 17/10/2017 16:58:56 Оффлайн |
Здравствуй! Операцию не получится сделать через прокси. У них в WS определении нет типов, связанных с операциями. Запрос нужно делать через HTTP. Тут примерно описано: http://vetrf.ru/vetrf-forum/posts/listByUser/9167.page |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
RomanWBD
Зарегистрирован: 12/05/2016 11:36:01 Оффлайн |
1.4 вроде работает, проверял как раз после того как 2.0 перестал отправлять нормальные результаты. |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
GusVal
Зарегистрирован: 10/11/2017 12:14:53 Оффлайн |
А API 2.0 насколько тестовое?
Вообще-то им бы следовало об этом большими буквами да на главной странице форума… |
|
|
![]() |
|
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Соединение можно дёргать.
Тэги:
Комментарии доступны только авторизированным пользователям
Логин у вас кириллический?
Нет, латиница.
Хотя разницы нет, даже при вводе пустого логина и пароля выходит эта ошибка.
Всем спасибо, косяк действительно в авторизации. Кириллицу не понимает однозначно, пустые пароли тоже вываливаются в ошибку. Логин и пароль должны быть.
Смотрите внимательно чтобы при публикации регистр совпадал, это пипец как кретично в свое время этим наелись! Если кластер с большой буквы, база, или имя юзверя, то так же и пишите и обращайтесь при публикации и запросах
В качестве обхода можно сделать следующее:
Сохранить wsdl схему в текстовый файл из браузера
Загрузить в SOAPui схему из текстового файла, а не по ссылке
После этого можно как обычно работать с веб-сервисом из SOAPui
В последнее время возникла проблема склонения должности с помощью веб-сервиса из 1С ERP. Релиз 2.2.2.199 Может это быть связано что релиз от февраля 2017? Подписку пока не покупали хватало 1000 запросов в день. Каким образом можно исправить данную ошибку ? Ошибка при вызове сервиса склонения. Обратитесь к администратору. Техническая информация: {ОбщийМодуль.СклонениеПредставленийОбъектов.Модуль}: Ошибка при вызове метода контекста (GetXml): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {: Ошибка разбора SOAP сообщения: неверная версия сообщения. {ОбщийМодуль.ОбщегоНазначения.Модуль(5505)}: Ошибка при вызове конструктора (WSОпределения): WSDL должен содержать элемент definitions: Неверный формат. UPD. Проверил из типовой Бухгалтерии Та же самая ошибка.
Нет такой больше страницы
морфер умер. вот вам и минус сторонник вебсервисов — узнаешь о проблемах когда они пришли к тебе домой…
Он не умер, просто формат поменял и стал платным )))
А когда он стал платным ?
Боюсь даже представить в скольких договорах сейчас неправильное склонение.
Сфигали он умер? Работает. Только WSDL у него оторвали
ну наверно в трех договорах.
Типовой механизм 1С ники получается не поменяли ? Как можно исправить данную проблему? Кто нибудь использует веб-сервис ?
Я думаю, что исправят в обновлениях. А так просто через HTTPСоединение можно дёргать.
Тэги:
Комментарии доступны только авторизированным пользователям
Пытаюсь создать синхронизацию с мобильным приложением (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
Счет-фактура для УПП
Библиотека классов для создания внешней компоненты 1С на C#
Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
Прайс-лист с артикулом в отдельной колонке
12 Comments
-
-
Я правильно понимаю, что некоторые моменты в этой статье для 8.2 неактуальны, т.к. 1cws более напрямую не публикуется как файл, а используется vrd?
Reply ↓
-
(2) я работал на 8.2 с веб-сервисами и это именно по 8.2, хотя не исключаю что в последних релизах 8.2 чего-то поменяли. Уже год не ковыряю веб-сервисы, встроенные в 1с, все могло измениться…
Reply ↓
-
-
(4) твою статью чисто визуально помню (из-за написания с украинским оформлением). а что именно из нее я использовал? Честно говоря, уже давно писалось.
При беглом взгляде заимствований не вспомнил. Если укажешь на места, расставлю ссылки.
Reply ↓
-
-
(6) жесть.
и что нужно сделать? Ссылку на твою статью или картинку заменить?
по сути, если сделать скриншот с другим названием сервиса, то от этого ничего не меняется.
Смысл наезда?
Я понимаю, если бы что-то из статьи было взято. А так просто скриншот, который лень было самому готовить, но который делается в любой конфе за 2 минуты?
Если вопрос принципиальный, я сделаю новый шот.
Reply ↓
-
(7) Ссылку на мою статью так как она была использована при написании твоего материала.
Фиксин, это не наезд, это просьба соблюдать приличия и лицензионные ограничения GPL.
Reply ↓
-
(8) я не вижу в этой статье материалов, кроме рисунка.
Мне проще заменить скриншот. ок, заменю скриншот. Дай два дня.
Считаю твой наезд весьма глупым и к GPL не относящимся, но это мое ИМХО.
Я расцениваю это как припадок копирастии.
в общем поправил, картинка эта:
Когда пройдет модерация, ваша душенька может быть спокойна.
Reply ↓
-
Вопиющее нарушение прав GPL, вопиющее! Автору арест, денежный штраф в пользу пострадавшего.
Reply ↓
-
-
Начинающий в мобильных. (версия 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С как папку на вашем веб сервере, то путь к этой папке в браузере как раз бы определялся как имя сервера / имя публикации. То есть ссылка на веб-клиент выглядит так:
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).
Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду «New soapUI project».
Появится окно ввода ссылки или файла с описанием веб-сервиса.
Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.
Нажмите ОК и в дереве проектов вы увидите свой веб-сервис.
Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку «Submit request to specified endpoint URl», изображенное в виде зеленой стрелочки.
После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.
Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами — ввоз данных в поля, вместо редактирования XML.
Если в вашей базе есть хотя бы один пользователь, то перед выполнением веб-операции вам нужно ввести его учетные данные. Для ввода учетных данных необходимо нажать кнопку «Aut» под левым окном.
В поле «Authorisation Type» необходимо указать «Preemptive».
И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.
После ввода учетных данных можно выполнить операцию получить результат в правом окне. К сожалению для каждого запроса (Request) необходимо заново вводить учетные данные.
После выполнения веб-операции помимо результата, вам доступные дополнительные сведения, такие как длительность выполнения и объем переданных данных в байтах. Эти данные отображаются в строке состояния текущего окна.
На приведенных выше изображениях, вы видите результат исполнения, описанной в других статьях, операции Plus2. Мы видим, что на выполнение операции ушло 1243 миллисекунд, что довольно много на операцию сложения. Объем переданных данных — 316 байт.
Примечание: для тестирования веб-сервисов у разработчиков soapUI есть еще одно бесплатное приложение — loadUI.
Допустим у вас есть веб-операция, имеющая операнд тип datetime. При выполнении обязательно указание даты и вы не можете указать пустое значение. Дата указывается в определенном формате:
ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс
либо
ГГГГ-ММ-ДДTЧЧ:мм:СС
Пример:
2012-09-14T00:00:00.000+02:00
Возможно есть еще форматы записи для поля типа datetime. Причем формат ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм содержит в себе данные о часовом поясе отправителя запроса. Если веб-операция на 1С получает такое значение, то она считает это время местным временем отправителя и преобразует в свое местное время. Данный пример, а так же как указать значение null более подробно описаны в статье 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса.
Тип число тоже требует обязательного указания значения — хотя бы нуля.
Автор | Сообщение |
---|---|
Тема: Re:Интеграция с 1С |
|
Андрей Любимов
Зарегистрирован: 17/10/2017 16:58:56 Оффлайн |
Мне просто интересно. На кой в IncomingOperation элементы consignment и vetCertificate имеют списочный тип, ЕСЛИ ТУДА ВСЕ РАВНО МОЖНО ЗАПИХАТЬ ТОЛЬКО ПО ОДНОМУ ЭЛЕМЕНТУ? |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
anig99
Зарегистрирован: 21/10/2016 20:05:29 Оффлайн |
Решил. 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 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
nifor
Зарегистрирован: 21/04/2017 04:01:50 Оффлайн |
Коллеги добрый день !!! Подскажите у кого то посредством 1С получилось заполнить атрибуты id и for (api 2.0) ? При заполнении строковым типом ругается на неверный формат при отправке запроса !!! Это сообщение было редактировано 1 раз. Последнее обновление произошло в 16/11/2017 11:22:29 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39:45 Оффлайн |
Подчеркивание впереди прицепите. Там базовый тип «NCName», а он должен содержать первым символом или букву или подчеркивание. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39: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-схеме?.. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
nifor
Зарегистрирован: 21/04/2017 04:01:50 Оффлайн |
Спасибо огромное !!! |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
vvche
Зарегистрирован: 13/06/2016 19:39:45 Оффлайн |
Сам спросил, сам ответил При импорте схемы document_v2.0.xsd 1С выставила в типе объекта VetDocument свойство «Упорядоченный» в «Ложь», отсюда и косяк. Причем у базового типа Document все нормально. |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
ashugaenko
Зарегистрирован: 28/02/2017 11:51:59 Оффлайн |
. Это сообщение было редактировано 1 раз. Последнее обновление произошло в 17/11/2017 16:38:37 |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
mevgenym
Зарегистрирован: 19/05/2017 14:03:42 Оффлайн |
Появилась обратная «совместимость» с 1.4 по упаковкам (смотрел через getStockEntryChangesList): — непонятно по каким соображениям назначился уровень и он разный — почти все без количества и количество так и не соответствует 1.4 |
https://github.com/mevgenym/1c_vetis.api_v1.1
https://github.com/mevgenym/1c_vetis.api |
|
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
FCool
Зарегистрирован: 21/11/2017 16:50:37 Оффлайн |
Добрый день. Вопрос по 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 Может кто подскажет, что я делаю не так ? |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
RomanWBD
Зарегистрирован: 12/05/2016 11:36:01 Оффлайн |
Все делаете так, а вот шлюз API 2.0 с тестовым Меркурием явно работает не так. Сейчас по этому сервису в ответе всегда возвращается ошибка по любому сервису из ams-mercury-g2b.service_v2.0_pilot.wsdl. |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
FCool
Зарегистрирован: 21/11/2017 16:50:37 Оффлайн |
Использовать API v1 ? |
|
|
![]() |
|
Тема: Re:Интеграция с 1С |
|
Андрей Любимов
Зарегистрирован: 17/10/2017 16:58:56 Оффлайн |
Здравствуй! Операцию не получится сделать через прокси. У них в WS определении нет типов, связанных с операциями. Запрос нужно делать через HTTP. Тут примерно описано: http://vetrf.ru/vetrf-forum/posts/listByUser/9167.page |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
RomanWBD
Зарегистрирован: 12/05/2016 11:36:01 Оффлайн |
1.4 вроде работает, проверял как раз после того как 2.0 перестал отправлять нормальные результаты. |
|
|
![]() |
|
Тема: Интеграция с 1С |
|
GusVal
Зарегистрирован: 10/11/2017 12:14:53 Оффлайн |
А API 2.0 насколько тестовое?
Вообще-то им бы следовало об этом большими буквами да на главной странице форума… |
|
|
![]() |
|
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Соединение можно дёргать.
Тэги:
Комментарии доступны только авторизированным пользователям
Обновлено 14.10.2020
Добрый день! Уважаемые читатели и гости популярного компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ошибку » db query error please try later», и восстановили работу сайта на платформе 1С Битрикс. Сегодня я хочу поделиться небольшой заметкой, как выйти из ситуации, когда не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового. Выдается ошибка «ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198): Ошибка при вызове конструктора (WSОпределения) WSОпределения = Новый(Тип(«WSОпределения»). Давайте разбираться в чем собственно дело.
Причины ошибок с модулем 198-504
Вся проблема связана с неправильным и устаревшим сертификатом, это бывает если вы давно не обновляли свою версию 1С, а в этот момент как раз истек срок сертификата, который участвует в подключении к внешним сервисам, например, npchk.nalog.ru или api.orgregister.1c.ru.
Вот так вот выглядит более полный текст ошибки:
Не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового.
Выдает ошибку:
{ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198)}: Ошибка при вызове конструктора (WSОпределения)
WSОпределения = Новый(Тип(«WSОпределения»), Параметры);
по причине:
При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v7?wsdl
по причине:
Ошибка работы с Интернет: Удаленный узел не прошел проверку
Комментарий: {ОбщийМодуль. ОбщегоНазначения. Модуль (5303)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения (ИмяФайлаWSDL, ИмяПользователя, Пароль, ИнтернетПрокси, Таймаут);
по причине:
Ошибка импорта схемы
по причине:
Ошибка при выполнении файловой операции ‘_ttp://npchk.nalog.ru:80/FNSNDSCAWS_2?xsd=1’
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504).
10060 — Ошибка соединения с сервером
HOST — npchk.nalog.ru[81.177.31.8]; PORT — 80
Connection timed outTraffic Inspector HTTP/FTP/Proxy server (3.0.2.912)
по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)
Как решить проблему
В случае клиент-серверной версии необходимо добавить сертификат Digicert как на сервере, так и на всех клиентах. Добавлять стоит способом, описанным в пункту 1 или 3. Перегружать сервер после обновления cacert.pem не нужно.
- Самым быстрым методом? будет замена сертификата cacert.pem, который располагается в папке с вашим клиентом. Скачать cacert.pem можно о официального сайта по ссылке:
https://its.1c.ru/db/files/1CITS/EXE/cacert/cacert.zip
В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:
C:Program Files (x86)1cv88.3.11.3034bin это в случае с версией 8.3.11.3034
Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.
- Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf
https://its.1c.ru/db/files/1CITS/EXE/digicert_epf/digicert_epf.zip
ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:
Ошибка записи сертификата. Возможно:
— Файл cacert.pem занят. Освободите файл от редактирования и запустите обработку заново.
— Закройте 1С: Предприятие и запустите с правами администратора операционной системы
- Ну и третий метод, это редактирование текущего файла cacert.pem. Откройте его текстовым редактором и в самом конце файла вставьте содержимое файла digicert.pem, который можно скачать тут:
https://its.1c.ru/db/files/1CITS/EXE/digicert/digicert.zip
<?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
Счет-фактура для УПП
Библиотека классов для создания внешней компоненты 1С на C#
Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
Прайс-лист с артикулом в отдельной колонке
12 Comments
-
-
Я правильно понимаю, что некоторые моменты в этой статье для 8.2 неактуальны, т.к. 1cws более напрямую не публикуется как файл, а используется vrd?
Reply ↓
-
(2) я работал на 8.2 с веб-сервисами и это именно по 8.2, хотя не исключаю что в последних релизах 8.2 чего-то поменяли. Уже год не ковыряю веб-сервисы, встроенные в 1с, все могло измениться…
Reply ↓
-
-
(4) твою статью чисто визуально помню (из-за написания с украинским оформлением). а что именно из нее я использовал? Честно говоря, уже давно писалось.
При беглом взгляде заимствований не вспомнил. Если укажешь на места, расставлю ссылки.
Reply ↓
-
-
(6) жесть.
и что нужно сделать? Ссылку на твою статью или картинку заменить?
по сути, если сделать скриншот с другим названием сервиса, то от этого ничего не меняется.
Смысл наезда?
Я понимаю, если бы что-то из статьи было взято. А так просто скриншот, который лень было самому готовить, но который делается в любой конфе за 2 минуты?
Если вопрос принципиальный, я сделаю новый шот.
Reply ↓
-
(7) Ссылку на мою статью так как она была использована при написании твоего материала.
Фиксин, это не наезд, это просьба соблюдать приличия и лицензионные ограничения GPL.
Reply ↓
-
(8) я не вижу в этой статье материалов, кроме рисунка.
Мне проще заменить скриншот. ок, заменю скриншот. Дай два дня.
Считаю твой наезд весьма глупым и к GPL не относящимся, но это мое ИМХО.
Я расцениваю это как припадок копирастии.
в общем поправил, картинка эта:
Когда пройдет модерация, ваша душенька может быть спокойна.
Reply ↓
-
Вопиющее нарушение прав GPL, вопиющее! Автору арест, денежный штраф в пользу пострадавшего.
Reply ↓
-
-
Начинающий в мобильных. (версия 1с8.3.10.2561)
Создал веб сервис на пробном приложении (сервер, файловый вариант, в конфигураторе, настройке — «Персональный компьютер»), опубликовал через Апач 2.4 .
С другого приложения (в конфигураторе настройка — «Мобильное устройство») пытаюсь подключиться к сервису.
Выдает ошибку : «{ОбщаяКоманда.ОбменВНСиКНС.МодульКоманды(17)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения(Адрес,»autoobmen»,»autoobmen»,,);
по причине:
WSDL должен содержать элемент definitions
по причине:
Неверный формат. »
Не могу понять почему требуется » элемент definitions» ? Версии сервера и мобильного приложений одинаковые . В созданном на сервере (при публикации) .vrd файле этот элемент отсутствует !
Подскажите пожалуйста, в чем затык ! Прилагаю фрагмент вызова сервиса
Reply ↓
Leave a Comment
Ваш адрес email не будет опубликован. Обязательные поля помечены *
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.
Добрый день.
Пытаюсь разобраться с WEB-сервисами. Разобрал пример из ИНЕТА. Опубликовал локально на WEB-сервере. Но при обращении к нему из обработки, сервер выдает ошибку:
{ВнешняяОбработка.WEB_Service.Форма.Форма.Форма(11)}: Ошибка при вызове конструктора (WSОпределения)
Определение = Новый WSОпределения(«http://localhost/request/ws/request.1cws?wsdl»,»Admin»,»123″);
по причине:
При создании описания сервиса произошла ошибка. URL сервиса: http://localhost/request/ws/request.1cws?wsdl
Код ответа сервера: 301
Публиковал и на IIS и на Apache 2.4
Результата один «Код ответа сервера: 301» (получаемый в ответ от сервера в ситуации, когда запрошенный ресурс был на постоянной основе перемещён в новое место). Совершенно ни о чем мне не говорит.
Сервис прекрасно читается в браузере напрямую — «http://localhost/request/ws/request.1cws?wsdl»
Он даже загружается в «WS-ссылки» конфигуратора.
Но работать не хочет из Обработки, которая к нему обращается.
Пример брал здесь: https://infostart.ru/public/327963/
Подскажите, как с этим бороться.
Нашел неточность. Имя сервиса «Request» (С большой буквы)
Теперь строка в определении выглядит так — «http://localhost/Request/ws/request.1cws?wsdl»
Но теперь ошибка 400 (что-то там с синтаксисом)
Разобрался.
Надо было делать так «http://127.0.0.1/Request/ws/request.1cws?wsdl»
«localhost» не катит