Имя: Пароль:
1C
 
Web-сервис :: Тип возвращаемого значения
0 Faso1
 
24.02.09
16:31
Доброго дня!

Имеется глобальная функция ПолучитьОстатки(КодТов) возвращающая xml-файл(либо текстовый - что проще) с данными о номенклатуре и остатком. Есть веб-сервис обращающийся к ней:

[WebMethod]
public string GetOst(string kodnom)
{
using (V8DbConnection conn = new V8DbConnection(
System.Configuration.ConfigurationManager.AppSettings[V8Consts.Database],
System.Configuration.ConfigurationManager.AppSettings[V8Consts.UserName],
System.Configuration.ConfigurationManager.AppSettings[V8Consts.UserPassword]))
{
conn.Open();
object ret = (object)V8.Call(conn, conn.Connection, "ПолучитьОстатки", kodnom);
string ret1=V8.ConvertValueV8ToNet(ret, conn).ToString();
return ret1;
}
}

После выполнения получаю в браузере:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://localhost/V8WebService/">_1C.V8.Data.ComObject</string>

Вопрос: как заставить сервис возвращать xml либо текст вместо объекта 1С?
1 Faso1
 
25.02.09
10:31
Аааааап
2 skunk
 
25.02.09
10:33
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://localhost/V8WebService/">_1C.V8.Data.ComObject</string>


а это по твоему что если не xml
3 Faso1
 
25.02.09
10:35
В объекте 1C.V8.Data.ComObject хранится большой листинг. Тип объекта 1с - текст или xml. Тут получаю строковое представление объекта: 1C.V8.Data.ComObject а не сам листинг.
4 skunk
 
25.02.09
10:44
(3)что попросил, то она и вернула... выполни в 8.1 тоже самое... получишь ... 1C.V8.Data.ComObject
5 Faso1
 
25.02.09
10:58
Вопрос в том как вернуть текст
6 skunk
 
25.02.09
10:59
пригласить специалиста...
7 regniws
 
25.02.09
11:06
небость ПолучитьОстатки возвращает ТексотвыйДокумент? или XML файл! да? А как он должен сериализоваться не думали!? И к чему такие извраты с веб-сервисами? может их проще на самой эске написать!? а не так извращаться?
8 skunk
 
25.02.09
11:07
(7)попробуй из 1С к саповскому серверу из самой эсины цепануться... узнаешь к чему такие извраты
9 Faso1
 
25.02.09
11:09
Так и есть, возвращает файлы. Вопрос как раз в том как возвращать не файлы, либо их на стороне веба преобразовывать в текст -)
Да, сейчас смотрю в сторону встроенных веб-сервисов, но все таки решение должно быть...
10 regniws
 
25.02.09
11:09
(8) а причем тут "из 1с к сапу"??? по-моему тут речь из откуда-то к 1с?
11 Faso1
 
25.02.09
11:11
(6)Академика по котам?
12 regniws
 
25.02.09
11:12
Конечно должно быть.

Когда метод


Функция ПолучитьОстатки(...)
 текст =  Новый ТекстовыйДокумент();
 Возврат текст ;
КонецФункции

Вот это вернет бред вашего вида.

А

Возврат текст.ПолучитьТекст();

Возможно вернет уже что-то более вразумительное
13 skunk
 
25.02.09
11:13
(10)речи нету откуда и куда... речь идет о веб-сервисе ... так вот поробуй из эсинского веб-сервиса пообщаться с сапосвким веб-сервисом... чисто данными пообмениваться по соапу через аштипи
14 Faso1
 
25.02.09
11:13
Да, речь о коннекте на 1с с веб-сервера и сливании остатков в веб-магазин.
15 skunk
 
25.02.09
11:14
(11)нет... специалсита по 1С ... который знает, что возвращает ConvertValueV8ToNet
16 regniws
 
25.02.09
11:17
(13) хоть это и оффтоп, но все ;t поведайте нам, в чем там могут быть проблемы? Писал и до сих пор пишу интеграции на базе веб-сервисов, есть геморрои, но лучше решения чем веб-сервисы пока не видел.
17 skunk
 
25.02.09
11:21
(16)в том, что эсина не понимает wsdl получаемый от сап иксай
18 Faso1
 
25.02.09
11:24
(12) Спасибо! Чего-то переморочился я с ЗаписьТекста вместо ТекстовыйДокумент. Так возвращает текст. Единственный вопрос как это будет работать при больших текстах...
19 regniws
 
25.02.09
11:26
(18) это будет притормаживать на больших текстах, но вполне возможно. Прокачивал через соап 100 метровые файлы, все ок.

(17) а вы типы соап пробовали сравнивать!? Или просто решили вопрос "1с - авно, ибо не понимает" ? А вы пробовали сохранять описания в xml и подгружать руками?
20 Faso1
 
25.02.09
11:27
(11)Это дефолтный ответ который помогает вам ответить на любой вопрос? Очко переходит в зрительный зал.
21 skunk
 
25.02.09
11:28
(19)пробовали ... даже через соап толкит пробовали цепляться... едиственное, что сраслось... преобразования всдл в классу... и включение его в проект
22 skunk
 
25.02.09
11:29
(20)сам собой... признак шизофрении
23 regniws
 
25.02.09
11:30
(19) чего!??? какой проект? я говорю про то, что руками вызывать этот веб-сервис из эсины пробовали? или только пытались добавить через конфигуратор ws-ссылку?
24 regniws
 
25.02.09
11:32
(22) Какой стандарт соапа возвращает сап?? Просто эсина не все поддерживает и это достаточно хорошо описано в документации! Посмотрите на все объекты начинающиеся на WS.
25 skunk
 
25.02.09
11:32
(23)еще раз пробовали... проект ... ну как бы это сказать... в визуал студио... проекты есть ... слыхал?
26 skunk
 
25.02.09
11:35
(24)1.1
27 regniws
 
25.02.09
11:40
(25) слышал, не переживайте ) то есть вы из сапа публикуете веб-сервисы, создаете проект на студии и еще раз публикуете те же методы? и потом только из эсины к ним подключаетесь?
28 regniws
 
25.02.09
11:52
И я еще не понял, соап тулкит не может к сапу подключиться?
29 skunk
 
25.02.09
11:52
нет ... как бы по короче...


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

едиственная возможность... это ковертация всдл в файл описания класса на языке проекта (с#, vb) не важно ... и реализация самого веб-сервиса средствами студии...

то есть обслуживание приема/переадчи ведет студийный сервис ... 1С вызывается из сервиса через оле
30 skunk
 
25.02.09
11:53
(28)да
31 regniws
 
25.02.09
11:58
(29) Ну )) к пуговицам претензии есть!? :) 1с цепляется хорошо к сервисам (не сталкивался с проблемой, что эсина не может к чему-то подключиться, но сталкивался, что сервисы эсины не все могут подцепить, кстати, в частности тулкит, при попытки подключиться из 7ки через тулкит к 8шному сервису).
////
В вашем случае согласен, что это может быть единственное решение. Просто человек пишет веб-сервис через некоторую ж*пу (без обид), а я говорю, что такой изврат скорее всего не нужен, ибо можно тот же сервис с гораздо меньшими проблемами и большей производительностью написать на самой 1с.
32 IromDenom
 
25.02.09
11:59
Процедура КнопкаВыполнитьНажатие(Кнопка)
ИскомыйЭлемент = "Сидоров Сидор Сидорович";

К = Справочники.Контрагенты.НайтиПоНаименованию(ИскомыйЭлемент);

Если К <> Справочники.Контрагенты.ПустаяСсылка() Тогда
   Найден = Истина;
   К = Справочники.Контрагенты.НайтиПоКоду(К.Код);
   Сообщить("Найден: "+ К.Наименование);    
   СсылкаК = К.Ссылка;
Иначе
   К = Справочники.Контрагенты.СоздатьЭлемент();        
   К.Наименование = ИскомыйЭлемент; // Длина наименования: 100

   К.Родитель = Справочники.Контрагенты.НайтиПоНаименованию("Контрагенты");  
   К.ОсновнойДоговорКонтрагента = Справочники.ДоговорыКонтрагентов;
   К.Комментарий = "Эта запись была сгенерирована автоматически по данным файла: "+ИмяЗагружаемогофайла;
   К.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
   К.ГоловнойКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
   К.ИНН = "";
   К.КодПоОКПО = "";
   К.КПП = "";
   К.НаименованиеПолное = К.Наименование; //

   СсылкаК = К.ПолучитьСсылкуНового();
   К.Записать();    
КонецЕсли;    

//*** СОЗДАНИЕ/ДЕДАКТИРОВАНИЕ ЗАПИСИ О ДОГОВОРЕ КОНТРАГЕНТА //***

Д = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
Д.Наименование = "Дог№ 12345"; // Длина наименования: 50

Д.Родитель = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
Д.Владелец = СсылкаК;

//Д.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("810");

Д.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.");
Д.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам;
Д.Организация = Справочники.Организации.НайтиПоКоду("000000001");
Д.ПроцентКомиссионногоВознаграждения = 0;
Д.СпособРасчетаКомиссионногоВознаграждения = Перечисления.СпособыРасчетаКомиссионногоВознаграждения;
Д.ТипЦен = Справочники.ТипыЦенНоменклатуры;
Д.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
Д.УчетАгентскогоНДС = ложь;
Д.ВидАгентскогоДоговора = Перечисления.ВидыАгентскихДоговоров;
Д.РасчетыВУсловныхЕдиницах = ложь;
Д.РеализацияНаЭкспорт = ложь;
Д.ВидВзаиморасчетов = Справочники.ВидыВзаиморасчетов; // Тип: Справочник ссылка: Виды взаиморасчетов

Д.Комментарий = "Эта запись была сгенерирована автоматически по данным файла: "+ИмяЗагружаемогофайла;
//Справочник контрагенты уже должен быть записан

Д.Записать();

//  ЗАПИСЬ КОНТАКТНОЙ ИНФОРМАЦИИ КОНТРАГЕНТА


 НаборЗап = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
 НаборЗап.Активность = Истина;
 НаборЗап.Объект = СсылкаК;
   
 НаборЗап.Объект = СсылкаК;
 НаборЗап.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
 НаборЗап.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00011");    //Форма с классификатором

 //НаборЗап.Вид = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("00010");  //Упрощенная форма

 //НаборЗап.Поле1 = "119526";//

 НаборЗап.Поле2 = "Москва";                        //Регион

 //НаборЗап.Поле3 = "";                            //Район

 //НаборЗап.Поле4 = "";                            //Город

 //НаборЗап.Поле5 = "";                            //

 //НаборЗап.Поле6 = "26 Бакинских Комиссаров ул";    //Улица

 НаборЗап.Поле7 = "10";                            //Дом

 НаборЗап.Поле8 = "";                              //Корпус

 НаборЗап.Поле9 = "12";                            //Квартира

 //НаборЗап.Представление = "643, 50, *****===";//

 
 НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();  
 УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборЗаписей, НаборЗап.Объект);  
 НаборЗаписей.Прочитать();

 КопияНабораКонтактнойИнформации = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();  
 УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(КопияНабораКонтактнойИнформации, НаборЗап.Объект);  
 КопияНабораКонтактнойИнформации.Выбран();
   
 КопияНабораКонтактнойИнформации.Прочитать();
   Для каждого ОчереднаяЗапись Из КопияНабораКонтактнойИнформации Цикл
         Сообщить("КопияНабораКонтактнойИнформации.Представление= "+ ОчереднаяЗапись.Представление);    
   КонецЦикла;

 УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(НаборЗаписей, НаборЗап.Объект, Ложь, КопияНабораКонтактнойИнформации)

КонецПроцедуры
33 regniws
 
25.02.09
12:00
кто здесь!?????
34 skunk
 
25.02.09
12:06
(31)странно ... у меня наоборат соап тулкит без проблем цеплялся к восмерочному сервису... правда не из 7.7 ... из 7.7 он вообще как-то криво работает... а вот если сделать выверт через анус... в 7.7 создать скрипт контрл... и уже через срикпт чеплять тулкит, то проблем нет
35 regniws
 
25.02.09
12:08
(34) нда, реально анус ))) а из сапа wsdl верификацию вообще проходит?
36 skunk
 
25.02.09
12:15
(35)в смысле ... всдл которую он сам опубликовал?
37 regniws
 
25.02.09
12:19
ну, wsdl этот тот же xml, для которого есть xsd, и xsdшкой для wsdl можно проверить соответствие его стандарту, посмотри на сайте соапа, я там брал эту xsdшку и прогонял верификатором 1совские wsdl. Проверку не проходил )) чего-то там не хватало
38 skunk
 
25.02.09
12:21
(37)а нет ... тогда не проводили
39 regniws
 
25.02.09
12:23
Попробуй, просто тогда хотя бы сможешь понять: в чем причины неподгружаемости тулкитом и, возможно, сможешь исправить. ))
40 skunk
 
25.02.09
12:28
(39)о кей ... попробую... вот исправить врядли ... если бы мог исправить то вообще бы пошел другим путем... сапой рулят в голове... а я в дочке сижу
41 regniws
 
25.02.09
12:34
ну все равно же их пихнуть можно, чтобы они что-нибудь поправили?
Независимо от того, куда вы едете — это в гору и против ветра!