Имя: Пароль:
1C
1С v8
Web сервис. Ошибка создания по типу
0 SMakcik
 
23.09.13
17:49
Привет всем!

Задолбало уже мучиться с этой проблемой

Есть Web сервисы.
подключение проходит на ура
определения методов тоже

но при вызове метода возникает ошибка:
{WebСервис.Nomenklatura.Модуль(42)}: Ошибка при вызове метода контекста (Создать)

Ниже кусок кода создания переменных


    ТипXDTOПодразделение                 = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "Подразделение");
    ТипXDTOНоменклатура                 = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "Номенклатура");
    ТипXDTOХарактеристикаНоменклатуры    = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "ХарактеристикаНоменклатуры");
    ТипXDTOСтрокаТаблицыОстатков        = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "СтрокаТаблицыОстатков");
    ТипXDTOРезультат                     = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "ТаблицаОстатков");
    
    XDTOРезультат = ФабрикаXDTO.Создать(ТипXDTOРезультат);

Не создается тип ТипXDTOРезультат                     


ТипXDTOРезультат -

ТаблицаОстатков с составом строк (СтрокиОстатковТоваров) имеющие тип "СтрокаТаблицыОстатков"

комментаришь строку создающую XDTOРезультат = ФабрикаXDTO.Создать(ТипXDTOРезультат);
Все в порядке

Где искать причину, направьте плиз
1 SMakcik
 
23.09.13
17:50
Ниже вся процедура подготовки результата

Функция ПолучитьРезультирующуюТаблицу(Результат)
    
    ТипXDTOПодразделение                 = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "Подразделение");
    ТипXDTOНоменклатура                 = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "Номенклатура");
    ТипXDTOХарактеристикаНоменклатуры    = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "ХарактеристикаНоменклатуры");
    ТипXDTOСтрокаТаблицыОстатков        = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "СтрокаТаблицыОстатков");
    ТипXDTOРезультат                     = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа";, "ТаблицаОстатков");
    
    XDTOРезультат = ФабрикаXDTO.Создать(ТипXDTOРезультат);
    
    ТаблицаОстатков = Результат.Выгрузить();
    Для Каждого СтрокаТаблицыОстатков ИЗ ТаблицаОстатков Цикл
        
        XDTOПодразделение = ФабрикаXDTO.Создать(ТипXDTOПодразделение);
        XDTOПодразделение.Наименование = СтрокаТаблицыОстатков.Подразделение.Наименование;
        XDTOПодразделение.ИдентификаторПодразделения = СокрЛП(СтрокаТаблицыОстатков.Подразделение.ИдентификаторПодразделения);
        
        XDTOНоменклатура = ФабрикаXDTO.Создать(ТипXDTOНоменклатура);
        XDTOНоменклатура.Наименование = СтрокаТаблицыОстатков.Номенклатура.Наименование;
        
        XDTOХарактеристикаНоменклатуры = ФабрикаXDTO.Создать(ТипXDTOХарактеристикаНоменклатуры);
        XDTOХарактеристикаНоменклатуры.Наименование = СтрокаТаблицыОстатков.ХарактеристикаНоменклатуры.Наименование;
        
        XDTOСтрокаТаблицыОстатков = ФабрикаXDTO.Создать(ТипXDTOСтрокаТаблицыОстатков);
        XDTOСтрокаТаблицыОстатков.Подразделение = XDTOПодразделение;
        XDTOСтрокаТаблицыОстатков.Номенклатура = XDTOНоменклатура;
        XDTOСтрокаТаблицыОстатков.ХарактеристикаНоменклатуры = XDTOХарактеристикаНоменклатуры;
        XDTOСтрокаТаблицыОстатков.КонечныйОстаток = СтрокаТаблицыОстатков.КоличествоОстаток;
        
        XDTOРезультат.СтрокиОстатковТоваров.Добавить(XDTOСтрокаТаблицыОстатков);
        
    КонецЦикла;    
    
    Возврат XDTOРезультат;
    
КонецФункции
2 Serginio1
 
23.09.13
17:55
Не ФабрикаXDTO а Прокси.ФабрикаXDTO  . Ты работаешь не со своей фабрикой, а с фабрикой прокси
3 SMakcik
 
23.09.13
17:56
какой прокси? это же сам модуль на стороне сервера Web сервиса
4 SMakcik
 
23.09.13
17:57
Все по книжки можно сказать
http://1cprogrammistu.ru/60-sozdanie-web-servisa-v-1s-predpriyatii.html
))))
5 Serginio1
 
23.09.13
18:18
Ты в Вэб сервису как подключаешься?
6 SMakcik
 
23.09.13
18:19
Определения = Новый WSОпределения("http://192.168.137.191/ws/ws/wsRests.1cws?wsdl";);
    
    Прокси = Новый WSПрокси(Определения, "http://192.168.137.191/WebServices/Nomenklatura";, "Nomenklatura", "NomenklaturaSoap");

    Результат = Прокси.GetRests("18-214-351E", "");
7 SMakcik
 
23.09.13
18:20
подключение то проходит

Такое ощущение что ТипXDTOРезультат = Неопределено
8 Serginio1
 
23.09.13
18:23
Ну для начала выведи все методы Вэб сервиса в обычный модуль, что бы тестить можно было без Вэб Сервиса.
А есть ли у тебя тип "ТаблицаОстатков".Посмотри в отладчике, что возвращает  ТипXDTOРезультат                     = ФабрикаXDTO.Тип("http://192.168.137.191/WebServices/Nomenclaturа""; target="_blank" rel="nofollow" class="extralink">http://192.168.137.191/WebServices/Nomenclaturа";;, "ТаблицаОстатков");
9 Serginio1
 
23.09.13
18:24
(7) Не ощущение, а факт.
10 SMakcik
 
23.09.13
18:25
Как посмотреть? Как зайти в отладчик выполняющийся на стороне сервера
11 Serginio1
 
23.09.13
18:27
(10 Прочитай 8 первую строку. Вынеси реализацию методов в обычный модуль (клиент, сервер). То есть в модуле Вэб Сервиса вызывай методы из общего модуля. И при отладке используй  методы общего модуля.
12 SMakcik
 
23.09.13
18:28
Сейчас попробую
13 SMakcik
 
23.09.13
18:31
да нифига так не получается
14 Serginio1
 
23.09.13
18:34
Почему. Вынеси весь код в WebСервис.Nomenklatura напрмер в
ВэбСервисНоменклатура только добавь директиву Экспорт, а в
модуле WebСервис.Nomenklatura
Функция GetRests(парам1,парам2)
возврат ВэбСервисНоменклатура.GetRests(парам1,парам2)
КонецФункции
15 Serginio1
 
23.09.13
18:35
И для тестов вызывай
ВэбСервисНоменклатура.GetRests(парам1,парам2)
и отлаживай в толстом клиенте
16 SMakcik
 
23.09.13
18:39
а точно. Туплю
17 SMakcik
 
23.09.13
18:39
Сейчас пробую
18 Serginio1
 
23.09.13
19:03
(17) Можешь конечно скопировать код (1) Во внешнюю обработку, но подход с Общем модулем более универсален.
19 SMakcik
 
23.09.13
19:07
Ну все типы равны не определено.
20 SMakcik
 
23.09.13
19:09
похоже они не определяются через толстый клиент
21 Serginio1
 
23.09.13
19:12
Типы должны определяться. В отладчике исследуй ФабрикаXDTO
Может не сохранил конфигурацию?
22 SMakcik
 
23.09.13
19:15
Пакеты XDTO есть
А типы как прошерстить?
23 SMakcik
 
23.09.13
19:27
ппц. Так бы неделю рылся. Опечатка была в пространстве имен )))
Спасибо за помощь
2 + 2 = 3.9999999999999999999999999999999...