Меню

Ошибка вызова операции сервиса getwsdl

Я
   Адимр

22.10.12 — 16:59

Простой пример возвращает строку. Опубликовал. iis 5.1, 1c 8.2. управляемая форма открывается в браузере.

обращаюсь так localhost/ws/WS1.1cws/?wsdl

Пишет: Файл не найден.

   Defender aka LINN

1 — 22.10.12 — 16:59

Продолжайте наблюдения

   Адимр

2 — 22.10.12 — 17:01

(1) Можете больше не писать в этой теме, ваш iq установлен а  помощь не требуется.

   Balonbl4

3 — 22.10.12 — 17:03

localhost/ws/WS1.1cws/?wsdl  — слеш лишний,нужно так: localhost/ws/WS1.1cws?wsdl

   Wobland

4 — 22.10.12 — 17:03

(2) скока?

   Адимр

5 — 22.10.12 — 17:07

(3) То же самое. А где вообще этот файл должен находится?

   Адимр

6 — 22.10.12 — 17:08

(4) Сказал бы, но ты до таких цифр считать не умеешь.

   Wobland

7 — 22.10.12 — 17:09

(6) откуда информация?

   YHVVH

8 — 22.10.12 — 17:10

(0) а базу опубликовал?

   YHVVH

9 — 22.10.12 — 17:11

имякомпютера/имяпубликации/ws/имяфайла публикации?wsdl

   Адимр

10 — 22.10.12 — 17:12

(8) Базу да опубликовал, и захожу успешно в неё.

   YHVVH

11 — 22.10.12 — 17:12

(5) нетю там файла и не должно быть

   YHVVH

12 — 22.10.12 — 17:12

(10) попробуй (9)

   YHVVH

13 — 22.10.12 — 17:14

надо к пути по которому заходишь успешно , добавить

/ws/имяфайла публикации?wsdl

   Адимр

14 — 22.10.12 — 17:15

(9) Имя публикации базы? http://localhost/InfoBaseWebService/ws/WS1.1cws?wsdl

Так уже лучше «Сбой при удаленном вызове процедуры.» 🙂

   Адимр

15 — 22.10.12 — 17:16

Попробую на другом компе.

   YHVVH

16 — 22.10.12 — 17:16

(14) надо в пути до базы прописать еще пользователя и пароль в файле публикации

   YHVVH

17 — 22.10.12 — 17:17

прав вообщем нет на вызов процедуры, или процедуры нет

   Адимр

18 — 22.10.12 — 17:37

Попробовал на другом компе

Сначала выдавал это

— <soap:Envelope   <faultstring>Ошибка вызова операции сервиса: {http://vm-1c-doc-tst}:DemoWeb:getWSDL() по причине: Ошибка при выполнении файловой операции ‘C:Documents and SettingsDefault UserLocal SettingsApplication Data1C'</faultstring>

Не было папки такой создал дал права 1с туда скидывает дампы ошибок.

   Адимр

19 — 22.10.12 — 17:49

(16) Пользователя нет.

   UnAmerican

20 — 22.10.12 — 17:52

(19) А должен быть.

   Адимр

21 — 22.10.12 — 18:25

(20) Пользователя базы данных я имею ввиду.

   Адимр

22 — 22.10.12 — 19:06

А web сервис что должен вернуть вот такую кучу малу

 <?xml version=»1.0″ encoding=»UTF-8″ ?>

— <definitions xmlns=»http://schemas.xmlsoap.org/wsdl/» xmlns:soap12bind=»http://schemas.xmlsoap.org/wsdl/soap12/» xmlns:soapbind=»http://schemas.xmlsoap.org/wsdl/soap/» xmlns:tns=»http://www.sample-package.org» xmlns:xsd=»http://www.w3.org/2001/XMLSchema» xmlns:xsd1=»http://www.sample-package.org» name=»ЗдоровенькиБулы» targetNamespace=»http://www.sample-package.org»>

— <types>

— <xs:schema xmlns:xs=»http://www.w3.org/2001/XMLSchema» xmlns:xs1=»http://www.sample-package.org» targetNamespace=»http://www.sample-package.org» elementFormDefault=»qualified»>

— <xs:element name=»ПриветХлопцы»>

— <xs:complexType>

 <xs:sequence />

 </xs:complexType>

 </xs:element>

— <xs:element name=»ПриветХлопцыResponse»>

— <xs:complexType>

— <xs:sequence>

 <xs:element name=»return» type=»xs:string» />

 </xs:sequence>

 </xs:complexType>

 </xs:element>

 </xs:schema>

 </types>

далее еще куча тегов.

  

Адимр

23 — 22.10.12 — 19:08

еще вопрос один web сервис заработал возвращает см выше

а второй идентичный по сути нет пишет

Ошибка работы с Интернет:  Server returned nothing (no headers, no data)

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Веб-сервисы и 1С: «Здравствуй, Name», время-деньги и «Жизнь»

«Вся наша жизнь — игра…» ( У. Шекспир)

«Что наша жизнь? Игра…» (А. Пушкин)

Часть вводная.

При разработке приложений с глобальным взаимодействием уже давно известна архитектура SOA (Service Oriented Architecture).

Такая архитектура подразумевает, что приложения на разных платформах, в разных средах взаимодействуют между собой, при этом разработчик может не беспокоиться о том, что находится внутри приложений на той стороне (т.е. об их реализации) , а также о том, что находится снаружи их (т.е. об их среде окружения).

Существует достаточно большое количество реализации этой архитектуры. Одним из видов такой реализации является технология основанная на связке специфицированных консорциумом w3c таких технологий, как веб-сервисы и протоколы SOAP, WSDL, WADL и т.п., которые в свою очередь основаны на XML. Уже достаточно длительное время эта технология интегрирована в платформу 1с Предприятие. Благодаря этому 1с предприятие может служить «сервером приложений», поставщиком сервисов, можно организовать взаимодействие между 1с, и приложениями, написанными на других платформах, можно организовать взаимодействие между различными системами на базе 1с и так далее.

Существует достаточно большое количество полезных web-сервисов, например: получение курсов валют, службы отправки почтовых сообщений и SMS на основе

web-сервисов и WSDL, каковую архитектуру используют туристические агентства, гостиницы, ритейлеры и т.п.

Часть 1. Здравствуй, Name!

Есть достаточное количество противников SOA и сторонников других технологий, как и тех, кто недолюбливает 1С. Однако существующая технология разработки на платформе 1с позволяет приступить к разработке и получить готовый результат довольно быстро при весьма поверхностном знакомстве с подробностями спецификаций SOA, WSDL и веб-сервисов, по сравнению со многими другими известными продуктами как от гигантов софтверной индустрии, так и с бесплатными open-source решениями, что само по себе не является ни плюсом ни минусом, но может заставить задуматься.

Чтобы окончательно в этом убедиться я твердо решил в качестве примера реализовать при помощи web-сервисов хрестоматийный пример, на котором большинство студентов, изучавших вычислительную технику и программирование, практиковались ещё во время учебы в ВУЗ-ах, а именно игру «Жизнь» — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 г.

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

Для начала надо всё же установить веб-сервер, который будет обрабатывать запросы, это может быть Apache или IIS. Я предпочитаю Apache. Поскольку The Apache HTTP Server Project

предоставляет только исходники своего продукта, воспользуемся скомпилированной версией

от Apache House. (это обязательно должна быть 32-разрядная версия, веб-расширение 1С не работает с 64-разрядной)

Загрузив архив, распакуем его куда-нибудь, например, в корневой каталог. Далее, установим веб-сервер в качестве сервиса, запустив сервер из командной строки с параметром -k install, вот так:

c:Apache24inhttpd.exe -k install

Теперь нам нужно также:

  • создать в каталоге веб-документов каталог для публикации наших сревисов

  • установить web-расширение 1c-Предприятия

  • создать и опубликовать первый веб-сервис

Каталог для публикации должен быть расположен в каталоге c:Apache24htdocs.

Назовем его WebServices.

Теперь откроем панель управления: Панель управленияПрограммыПрограммы и компоненты, выберем нужную версию программы 1с-Предприятие, нужно будет нажать правую кнопку и выбрать пункт «Изменить», затем «Изменить-Далее» и выбрать в списке

«Модули расширения Веб-сервера» (Web server extention modules) — рис1

Рис1

Теперь создадим пустую файловую базу, в ней роль «Полная» с полными правами на все группы объектов и пользователя Admin, назначив ему эту единственную роль.

На вопрос, будет ли это работать в файловом варианте — ответ положительный (во всяком случае этот простой пример работает как файловая база).

Минус файловой версии — невозможность отладки серверных процедур.

Теперь приступим к реализации. В группе web-сервисы создадим новый объект с простым именем WebServiceTest, операцией с именем GetHelloString, которую будет обрабатывать функция Привет(Name) и параметром Name. И операция и параметр добавляются командой «добавить». Тип значения параметра Name — string (берется из пространства имен

http://www.w3.org/2001/XMLSchema)

URI пространства имен для сервиса указываем равный каталогу нашей публикации на веб-сервере — http://localhost/WebServices/

имя файла публикации может быть любым, но желательно латинским шрифтом и обязательно с расширением 1cws. Все вместе это выглядит так (Рис. 2):

Рис. 2

Тело функции Привет() модуля сервиса будет содержать только одну строку:

Функция Привет(Name)
Возврат("Здравствуй, дорогой друг "+Name+"!");
КонецФункции

Осталось только опубликовать сервис. Заходим в меню администрирование -> публикация на web-сервере. Откроется форма, в которую мы введем параметры публикации. Имя публикации должно совпадать с именем каталога на web-сервере.

В поле «Каталог» вводим путь к нашему каталогу на web-сервере, который мы создали ранее, то есть C:Apache24htdocsWebServices

Остальные параметры вы можете рассмотреть на рисунке Рис. 3

Рис. 3

перезапустим web-сервер, используя Apache monitor (оснастку служб Windows, закладку «службы» диспетчера задач, командную строку, bash, монитор процессов — что там у вас есть под рукой) чтобы данные публикации были считаны Апачем заново. Обновление публикации и перезапуск веб-сервера нужно делать после каждого сохранения конфигурации, связанного с изменениями веб-сервиса.

Осталось только протестировать нашу веб-службу. Для этого наберем в строке браузера http://localhost/WebServices/ws/1c_wstest.1cws?wsdl

или

https://localhost/WebServices/ws/1c_wstest.1cws?wsdl

Результат должен выглядеть как-то так:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost/WebServices/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://localhost/WebServices/" name="WebServiceTest" targetNamespace="http://localhost/WebServices/">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://localhost/WebServices/" targetNamespace="http://localhost/WebServices/" elementFormDefault="qualified">
<xs:element name="GetHelloString">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetHelloStringResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string"/>
<xs:element name="Name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="GetHelloStringRequestMessage">
<part name="parameters" element="tns:GetHelloString"/>
</message>
<message name="GetHelloStringResponseMessage">
<part name="parameters" element="tns:GetHelloStringResponse"/>
</message>
<portType name="WebServiceTestPortType">
<operation name="GetHelloString">
<input message="tns:GetHelloStringRequestMessage"/>
<output message="tns:GetHelloStringResponseMessage"/>
</operation>
</portType>
<binding name="WebServiceTestSoapBinding" type="tns:WebServiceTestPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetHelloString">
<soapbind:operation style="document" soapAction="http://localhost/WebServices/#WebServiceTest:GetHelloString"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="WebServiceTestSoap12Binding" type="tns:WebServiceTestPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetHelloString">
<soap12bind:operation style="document" soapAction="http://localhost/WebServices/#WebServiceTest:GetHelloString"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="WebServiceTest">
<port name="WebServiceTestSoap" binding="tns:WebServiceTestSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="https://localhost/WebServices/ws/1c_wstest.1cws"/>
</port>
<port name="WebServiceTestSoap12" binding="tns:WebServiceTestSoap12Binding">
<soap12bind:address location="https://localhost/WebServices/ws/1c_wstest.1cws"/>
</port>
</service>
</definitions>

Клиентская часть будет содержать чуть больше кода. Можно обращаться к сторонним сервисам двумя способами:

— использовать ws-ссылку (объект метаданных)

— создать ws-определение программно

Первый способ означает, что нам нужна ещё одна конфигурация, поэтому сейчас используем второй. Разница лишь в том, что мы создадим объект программно.

Создадим новую обработку с реквизитом Name, разместим его на форме, добавим форме команду Тест с двумя поцедурами, на клиенте и на сервере.

&НаСервере
Процедура ТестНаСервере()

ссл = Новый ЗащищенноеСоединениеOpenSSL;
всОпред = Новый WSОпределения("http://localhost/WebServices/ws/1c_wstest.1cws?wsdl","Admin","123",,,ссл);
всПрокси = Новый WSПрокси(всОпред, "http://localhost/WebServices/", "WebServiceTest", "WebServiceTestSoap",,,ссл);
всПрокси.Пользователь="Admin";
всПрокси.Пароль="123";

пакет = всПрокси.ФабрикаXDTO.Пакеты.Получить("http://www.w3.org/2001/XMLSchema");
типВС_Параметра = пакет.Получить("Name");

пИмя = ?(ЗначениеЗаполнено(Объект.Имя), Объект.Имя, "Name");  //передаваемая Строка должна быть непустая
всПараметр = всПрокси.ФабрикаXDTO.Создать(типВС_Параметра, пИмя);


Значение = всПрокси.GetHelloString(всПараметр);

Сообщить(Значение);



КонецПроцедуры

&НаКлиенте
Процедура Тест(Команда)
ТестНаСервере();
КонецПроцедуры

Параметры конструктора объекта WSПрокси ИмяСервиса и ИмяТочкиПодключения можно найти в XML-тексте, который возвращает наш сервис по URI https://localhost/WebServices/ws/1c_wstest.1cws?wsdl

А именно в элементе <service name=»ИмяНашегоСервиса»>

где ИмяСервиса — это атрибут Name этого элемента, то есть <service name=»WebServiceTest»>

ИмяТочкиПодключения — это атрибуты Name вложенных элементов

<port><port/>

Обычно мы имеем две точки для разных версий SOAP, в нашем случае они называются

WebServiceTestSoap и WebServiceTestSoap12 — можно использовать любой из них.

Сохраняем изменения в обработке, открываем её в любой базе и тестируем. Результат — вывод сообщения возвращенной операцией нашего удаленного сервиса строки. (Рис. 4)

Рис. 4

Продолжение в следующей части.

Содержание

Тестовый стенд

  • Windows XP

  • 1С:Предприятие 8.2 (8.2.15.289)

  • Тип базы: серверная

  • Web сервер Apache 2.2

  • Версия компонента: 1.0.15.5

в версии компонента 1.0.15.5 присутствуют два важных свойства:

  • РежимSOAPОповещений — тип Булево — при влючении отправляет все события на вебсервис по адресу указанному в следующем параметре.

  • АдресSOAPсервера — тип — Строка — адрес опубликованного веб сервиса для приема внешних событий компоненты.

Цели

  1. Запустить копонент на сервере 1С Предприятия

  2. Сконфигурировать web — сервис, который мог бы обрабатывать данные cdr записей, передаваемых копонентом

Запуск компонента на сервере

Подготовка конфигурации

  1. Создаем информационную базу с пустой конфигурацией

  2. Добавляем в конфигурацию обработку SDK_test_tools_v1_0_15_*

Описание нового XDTO пакета

  • Добавляем новый XDTO пакет (в дереве метаданных «Общие» – «XDTO пакеты», Щелчок правой кнопкой мыши – Добавить)

    • Укажем имя пакета XDTO_MIKO

  • Добавим новый тип объекта для пакета, отредактируем его свойства как на картинке:

  • Добавим новый web — Сервис (в дереве метаданных «Общие» – «web — Сервис», Щелчок правой кнопкой мыши – Добавить)

    • На вкладке «Основные» Имя зададим MIKO_Alam

    • На вкладке «Операции» добавим новую операцию:

  • Для операции необходимо добавить три параметра:

  • Сформируем обработчик для операции web сервиса:

 
        // Обработчик операции сервиса
	Функция EventListner(Источник, Событие, Данные)
		// полученные данные необходимо декодировать:
		Данные = URLDecode(Данные);
		// запишем в журнал регистрации
                ЗаписьЖурналаРегистрации("EventListner" + Данные);
 
		// пример разбора записи
		onCDR(Данные);
		// возвращаем xml структуру:
		Возврат ВернутьРезультатXDTO(Истина, 0);
 
	КонецФункции
 
	// Преобразование переданной строки из URLencoded версии
	// (необходимо декодировать данные)
	Функция URLDecode(стр)
		Хекс=Новый Массив;	
		Хекс.Добавить("0");
		Хекс.Добавить("1");       
		Хекс.Добавить("2");       
		Хекс.Добавить("3");
		Хекс.Добавить("4");
		Хекс.Добавить("5");
		Хекс.Добавить("6");
		Хекс.Добавить("7");
		Хекс.Добавить("8");
		Хекс.Добавить("9");
		Хекс.Добавить("A");
		Хекс.Добавить("B");
		Хекс.Добавить("C");
		Хекс.Добавить("D");
		Хекс.Добавить("E");
		Хекс.Добавить("F");
		рез="";
 
		ДлиннаСтроки = СтрДлина(стр);
		Для сч=1 по ДлиннаСтроки Цикл
			чар=Сред(стр,сч,1);
			Если чар = "%" И сч+2<=ДлиннаСтроки Тогда
				Сим1 = Сред(стр,сч+1,1);	
				Сим2 = Сред(стр,сч+2,1);
 
				Ном1 = Хекс.Найти(Сим1);
				Ном2 = Хекс.Найти(Сим2);
				Если Ном1 = Неопределено
					 ИЛИ Ном2 = Неопределено Тогда
					 рез = рез + чар;
					// тогда найденная комбинация не является спецсиволом
					Продолжить;
				КонецЕсли; 
 
				кс = 16 * Ном1 + Ном2;
				КорректныйСимвол = Символ(кс);
 
				рез = рез + КорректныйСимвол;
				// сдвинем счетчик на два символа
				сч = сч + 2;
			иначе
				рез = рез + чар;
			КонецЕсли; 
		КонецЦикла;
 
		Возврат рез;
 
	КонецФункции // ()
 
	// пример разбора зипаси CDR
	Процедура onCDR(Знач XMLУзел)
		//ПРИМЕР ОТВЕТА
		//<generic 
		//event='Cdr' 
		//privilege='cdr,all' 
		//sequencenumber='53045' 
		//file='cdr_manager.c' 
		//line='189' 
		//func='manager_log' 
		//accountcode='' 
		//source='263' 
		//destination='263' 
		//destinationcontext='from-internal' 
		//callerid='&quot;WORK Nikolay Beketov&quot; &lt;263&gt;' 
		//channel='SIP/263-0000013b' 
		//destinationchannel='SIP/263-0000013c' 
		//lastapplication='Dial' 
		//lastdata='SIP/263,,tr' 
		//starttime='2011-11-25 16:51:41' 
		//answertime='' 
		//endtime='2011-11-25 16:51:43' 
		//duration='2' 
		//billableseconds='0' 
		//disposition='NO ANSWER' 
		//amaflags='DOCUMENTATION' 
		//uniqueid='1322225501.545' 
		//userfield=''
		// />
		XMLУзел=ПолучитьЧтениеXML(XMLУзел);     
		Если XMLУзел=Неопределено Тогда
			Возврат;
		КонецЕсли; 
 
		privilege 	= XMLУзел.ПолучитьАтрибут("privilege");
		accountcode	= XMLУзел.ПолучитьАтрибут("accountcode");
		source		= XMLУзел.ПолучитьАтрибут("source");
		destination	= XMLУзел.ПолучитьАтрибут("destination");
 
	КонецПроцедуры
 
 
	// возвращаем значение в виде XDTO пакета
	Функция ВернутьРезультатXDTO(bool_result, error_code)
		СоставнойТип = ФабрикаXDTO.Тип("http://1C_MIKO_Asterisk.ru", "Compound");
		СоставнойXDTO = ФабрикаXDTO.Создать(СоставнойТип);
 
		СоставнойXDTO.error_code = error_code;
		СоставнойXDTO.bool_result = bool_result;   
 
		Возврат СоставнойXDTO;  // возврат XDTO знаяения
	КонецФункции // ВернутьСоставнойТип()
  • На вкладке «Прочее» сервиса необходимо указать пространство имен, ранее созданный XDTO пакет, имя файла публикации:

На этом конфигурирование web сервиса завершено.

Публикация web — сервиса

Предполагается, что имеется настроенный web сервер.

  • Главное меню «Администрирование» — «Публикация на web сервере»

  • Задаем имя публикации, тип сервера, что публикуем

  • Задаем имя сервиса, а также его адрес

  • После публикации сервиса в каталоге публикации будет сформирован файл default.vrd со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
		xmlns:xs="http://www.w3.org/2001/XMLSchema"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		base="/TestComponenta"
		ib="Srvr=&quot;fastwin7&quot;;Ref=&quot;TestComponenta&quot;;">
	<ws>
		<point name="MIKO_Alam"
				alias="1C_MIKO_Asterisk.1cws"/>
	</ws>
</point>

Проверка работоспособности сервиса

  • Добавим объект метаданных «WSСсылка» («Общие» — «WS — ссылки» — добавить)

  • Элемент ненумерованного спискаСоздать тестовую внешнюю обработку, обработчик кнопки выполнить:

	Прокси =WSСсылки.WSСсылка.СоздатьWSПрокси("http://1C_MIKO_Asterisk.ru","MIKO_Alam","MIKO_AlamSoap");
	Ответ = Прокси.EventListner("MikoAjamEvent","Cdr","<generic event='Cdr' privilege='cdr,all' sequencenumber='53045' file='cdr_manager.c' line='189' func='manager_log' accountcode='' source='263' destination='263' destinationcontext='from-internal' callerid='&quot;WORK Nikolay Beketov&quot; &lt;263&gt;' channel='SIP/263-0000013b' destinationchannel='SIP/263-0000013c' lastapplication='Dial' lastdata='SIP/263,,tr' starttime='2011-11-25 16:51:41' answertime='' endtime='2011-11-25 16:51:43' duration='2' billableseconds='0' disposition='NO ANSWER' amaflags='DOCUMENTATION' uniqueid='1322225501.545' userfield='' />");
  • Если все было корректно выполнено, то будет возвращен составной тип

Теперь описание сервиса доступно по ссылке: http://…ip_server…/TestComponenta/ws/1C_MIKO_Asterisk.1cws?wsdl

Запуск компонента

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

Пример работы на сервере может выглядеть следующим образом:

// основная 
Процедура ТестКомпонентаНаСервере() Экспорт
 
    Компонент = Неопределено;
    Инициализировать(Компонент);
 
    Если НЕ Компонент = Неопределено Тогда
	LoginНажатие(Компонент);
	PingНажатие(Компонент);
 
	ЗаписьЖурналаРегистрации("Все успешно отработало!");
    Иначе
	ЗаписьЖурналаРегистрации("Компонент = Неопределено!");
    КонецЕсли;
 
КонецПроцедуры
 
Процедура Инициализировать(Компонент) 
	СсылкаНаАрхив = ПоместитьВоВременноеХранилище(Обработки.SDK_test_tools_v1_0_15_2.ПолучитьМакет("AddInWindows32"), Новый УникальныйИдентификатор);
	Попытка
		ПодключитьВнешнююКомпоненту(СсылкаНаАрхив,"Comp" ,ТипВнешнейКомпоненты.Native);
		Компонент = Новый ("AddIn.Comp.MikoAjam");
		ЗаписьЖурналаРегистрации("Компонент успешно инициализирован!");
		// Предупреждение("Компонент телефонии успешно инициализирован");
	Исключение
		ЗаписьЖурналаРегистрации("Исключение при инициализации!");
		// Сообщить("Исключение при инициализации");
	КонецПопытки; 
КонецПроцедуры
 
Процедура LoginНажатие(Компонент)  
	Если Компонент = Неопределено Тогда
		Сообщить("Компонент не подключен, сначала инициализируйте его");
		Возврат;
	КонецЕсли; 
 
	Попытка
		Компонент.Хост 	   = "asterisk.adress.ru";
		Компонент.Порт 	   = "8088";
		Компонент.Таймаут  = 5;
		Компонент.DigestАвторизация = Ложь;;
		Компонент.РежимSSL = Ложь;
		Компонент.РежимSOAPОповещений = Истина;
 
                // далее укажем адрес сервиса (обратите внимание на формат адреса, тут нет постфикса **"?wsdl"**)
		Компонент.АдресSOAPсервера = "http://....ip_adres..../TestComponenta/ws/1C_MIKO_Asterisk.1cws"; 
 
		Результат="";
		Если Компонент.Login("cdruser","cdrpassword",Результат) Тогда
			ЗаписьЖурналаРегистрации( "Результат соединения: "+Результат + "" + Компонент.ВерсияКомпонента);
			// Сообщить("Результат соединения: "+Результат);
		Иначе
			ЗаписьЖурналаРегистрации("Авторизация не удалась."+ "" + Компонент.ВерсияКомпонента);
			// Предупреждение("Авторизация не удалась.");
		КонецЕсли;
 
 
	Исключение
		ЗаписьЖурналаРегистрации("Исключение при логине на сервере Asterisk");
		// Сообщить("Исключение при логине на сервере Asterisk");
	КонецПопытки; 
 
КонецПроцедуры
 
Процедура PingНажатие(Компонент) 
 
	Если Компонент = Неопределено Тогда
		Сообщить("Компонент не подключен");
		Возврат;
	КонецЕсли; 
 
	Попытка
		respose ="";
 
		Если Компонент.Ping(respose) Тогда
			ЗаписьЖурналаРегистрации("Результат пинга: "+respose);
			//Сообщить("Результат пинга: "+respose+Символы.ПС);
		Иначе
			ЗаписьЖурналаРегистрации("Ошибка команды Ping. "+respose);
			//Сообщить("Ошибка команды Ping. ");
		КонецЕсли;
 
	Исключение
		ЗаписьЖурналаРегистрации("Исключение при пинге!");
		//Сообщить("Исключение при пинге");
	КонецПопытки; 
 
КонецПроцедуры
 
Процедура LogoffНажатие(Компонент) 
	Если Компонент = Неопределено Тогда
		Сообщить("Компонент не подключен");
		Возврат;
	КонецЕсли; 
 
	Попытка
		Результат="";
		Компонент.Logoff(Результат);
		ЗаписьЖурналаРегистрации("Результат команды "+Результат);
		// Сообщить("Результат команды "+Элемент.Имя+" "+Результат);
	Исключение
		ЗаписьЖурналаРегистрации("Исключение при разлогинивании");
		// Сообщить("Исключение при разлогинивании");
	КонецПопытки; 
 
КонецПроцедуры

Коментарии

  • #1

Всем привет! Не получается проверить контрагентов в 1с. В журнал регистрации попадает ошибка:

Код:

{ОбщийМодуль.ПроверкаКонтрагентов.Модуль(2373)}: Ошибка при вызове метода контекста (NdsRequest2)
                               NdsResponse = Прокси.NdsRequest2(WSЗапрос);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:  {http://ws.unisoft}:FNSNDSCAWS2:NdsRequest2()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка работы с Интернет:   Превышено время ожидания
по причине:
Ошибка работы с Интернет:   Превышено время ожидания

Подскажите в чем может быть дело?

Если у вас подключен сервис 1С:Контрагент и почему-то перестали заполняться реквизиты контрагентов по ИНН, выдает ошибку:

В журнале регистрации написано:

{ОбщийМодуль.ДанныеЕдиныхГосРеестров.Модуль(31)}: Ошибка при вызове метода контекста (getCorporationRequisitesByINN)
Ответ = Прокси.getCorporationRequisitesByINN(ВходныеПараметры);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://ws.orgregister.company1c.com/}:RequisitesWebServiceEndpointImpl7Service:getCorporationRequisitesByINN()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://company1c.com/orgregister/corporation}СвОКВЭД — [1,2762]Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://company1c.com/orgregister/corporation}СвОКВЭД — [1,2762]Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://company1c.com/orgregister/corporation}СвОКВЭД

Или

ОбщийМодуль.ДанныеЕдиныхГосРеестров.Модуль(181)}: Ошибка при вызове метода контекста (getCorporationRequisitesByNameAndAddress)
Ответ = Прокси.getCorporationRequisitesByNameAndAddress(ВходныеПараметры);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://ws.orgregister.company1c.com/}:RequisitesWebServiceEndpointImpl7Service:getCorporationRequisitesByNameAndAddress()
по причине:
При вызове веб-сервиса произошла ошибка. Неизвестная ошибка. Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://company1c.com/orgregister/corporation}СвОКВЭД — [1,17598] Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка преобразования данных XDTO:
Чтение объекта типа: {http://company1c.com/orgregister/corporation}СвОКВЭД — [1,17598] Проверка дополнительного свойства:
форма: Атрибут
имя: ПрВерсОКВЭД
по причине:
Ошибка проверки данных XDTO:
Структура объекта не соответствует типу: {http://company1c.com/orgregister/corporation}СвОКВЭД

Вот что нужно сделать:

Нужно открыть Главное меню (1), нажать «Все функции» (2) — рис.1

Рис.1

Если у вас нет пункта «Все функции», надо открыть Главное меню (3), нажать «Сервис» (4), Парамерты (5) — рис.2

Рис.2

В открывшемся окне поставить галочку «Отображать команду «Все функции» (6), ОК (7) — рис.3

Рис.3

В открывшемся окне нажимаем на «+» Регистры сведений (8) — рис.4

Рис.4

Ищем регистр сведений «Кэш программных интерфейсов» (9) — Открыть (10) — рис.5

Рис.5

В открывшемся списке необходимо найти и удалить запись со значением в колонке Идентификатор https://api.orgregister.1c.ru/orgregister/v7?wsdl (11) — правой кнопкой — Удалить (12) — рис.6

Рис.6

После этого нужно выйти из программы и войти снова.

Profile picture for user Олег

1C

Не люблю 1С. Его делают русские индусы. Однако, каждому сисадмину приходится с ним бороться.

Разбираемся с ошибкой «Сервис 1С:Контрагент не подключен.»

Текст ошибки:

Сервис 1С:Контрагент не подключен.
ИНН 1111111111:
{ОбщийМодуль.РаботаСКонтрагентами.Модуль(95)}: Ошибка при вызове метода контекста (getCorporationRequisitesByINN)
Ответ = Прокси.getCorporationRequisitesByINN(ВходныеПараметры);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса:
{http://ws.orgregister.company1c.com/}:RequisitesWebServiceEndpointImpl7Service:getCorporationRequisitesByINN()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера:  
SERVER-11: Option 601a75a6-54cd-424b-a664-afe692855760 exceeds maxVolume 7200
Код ошибки: Server

Очень информативная ошибка, один раз посмотришь, два дня гуглишь, потом начинаешь присматриваться к цифре 7200…

Заходим на сайт сервиса 1С:Контрагент:
https://portal.1c.ru/app/kontragent

Ищем «7200» и находим.

1c

Это означает, что юзеры исчерпали лимит в 7200 кликов — дальше нужно или переходить на новый тариф или приобретать расширенную поддержку, куда Контрагент входит по умолчанию.

  1. Добрый день!
    Есть опубликованный веб-сервис. В нем есть несколько операций. Подключаюсь к веб-сервису мобильной платформой 1С. Все операции работают кроме одной. Одна отваливается с ошибкой:

    Ошибка при вызове операции сервиса: …
    Неизвестная ошибка. Ошибка разбора XML: -[1,1]
    Фатальная ошибка: Extra content at the end of the document.

    Тип возвращаемого значения операции:
    string (http://www.w3.org/2001/XMLSchema)

    Подскажите, в чем может быть проблема?

  2. Ребята, может все-таки есть у идеи, в чем может быть проблема?


  3. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    Типы возвращаемых значений проверить необходимо, как в пространстве имен, так и в свойствах самого параметра.

  4. Тип возвращаемого значения в операции веб-сервиса: string (http://www.w3.org/2001/XMLSchema). Такой же тип во всех остальных операциях этого же веб-сервиса, которые отрабатывают без ошибок.
    А что значит проверить тип возвращаемого значения в пространстве имен…?

    — Объединение сообщений, 28 окт 2016

    Может ли быть проблема в том, что один из входных параметров операции веб-сервиса имеет тип значения Array (_http://v8.1c.ru/8.1/data/core)?
    Я передаю его в веб-сервис следующим образом:

    СписокОбъектов = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "Array"));
            Для каждого Элемент из Массив Цикл
                     Тип = СериализаторXDTO.XMLТипЗнч(Элемент);
                     Значение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(Тип.URIПространстваИмен, Тип.ИмяТипа),XMLСтрока(Элемент));
                     СписокОбъектов.value.Добавить(Значение);
            КонецЦикла;
       
         ........ //подключение к веб-сервису, создание определения и прокси...
    
    Результат = Прокси.MoveActive(Log, Клиент, СписокОбъектов);
    Сообщить(Результат);

    А сам веб-сервис возвращает ответ:

    Возврат "Перемещение прошло удачно";
    Последнее редактирование: 28 окт 2016

  5. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    Про пространство имен «v8.1c.ru/8.1/data/core» web-сервис вообще в курсе?

  6. До этого думала, что в курсе. Но если вы спрашиваете, то значит чего-то я не знаю)))))
    И что я не учла?


  7. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204

    Так я ж не знаю, чем умеет оперировать web-сервис, какие у него типы значений входных параметров — это вы должны знать.
    Если вы пытаетесь запихнуть в параметр определенный тип значения из определенного пространства имен, то про этот тип и пространство имен должен так же знать web-сервис — это как минимум, как максимум — знать что этот тип значения из этого пространства имен используется именно в этом входном параметре.

  8. Кажется, я поняла, про что вы… Спасибо за подсказку. Сейчас буду разбираться.


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка выбора приложения nfc
  • Ошибка вызова на телефоне что делать